diff --git a/200.html b/200.html index 88a4c207..9a721a85 100644 --- a/200.html +++ b/200.html @@ -42,12 +42,12 @@ @font-face{font-family:Lato;src:local("Lato Black"),url(/_fonts/S6u9w4BMUTPHh50Xeww-JnBjcWyRnA.woff) format(woff);font-display:swap;font-weight:900;font-style:normal} :root{font-family:Lato, "Lato Fallback: Arial"}a.router-link-exact-active{border-bottom-width:2px;--tw-border-opacity:1;border-bottom-color:rgb(255 255 255/var(--tw-border-opacity))}a.home-button.router-link-exact-active{border-style:none!important} - + - - + + - - -
- \ No newline at end of file + + +
+ \ No newline at end of file diff --git a/404.html b/404.html index 88a4c207..9a721a85 100644 --- a/404.html +++ b/404.html @@ -42,12 +42,12 @@ @font-face{font-family:Lato;src:local("Lato Black"),url(/_fonts/S6u9w4BMUTPHh50Xeww-JnBjcWyRnA.woff) format(woff);font-display:swap;font-weight:900;font-style:normal} :root{font-family:Lato, "Lato Fallback: Arial"}a.router-link-exact-active{border-bottom-width:2px;--tw-border-opacity:1;border-bottom-color:rgb(255 255 255/var(--tw-border-opacity))}a.home-button.router-link-exact-active{border-style:none!important} - + - - + + - - -
- \ No newline at end of file + + +
+ \ No newline at end of file diff --git a/__studio.json b/__studio.json index 8b56a05e..02c7d382 100644 --- a/__studio.json +++ b/__studio.json @@ -1 +1 @@ -{"version":"2.0.0","tokens":"b850afd2fc33fd43a5adf302f2d216dd4623ccf1bc697558a39025af30ee5e32","gitInfo":{"name":"timbenniksdev-2024","owner":"timbenniks","url":"https://github.com/timbenniks/timbenniksdev-2024"},"contentSchema":{},"appConfigSchema":{"properties":{"id":"#appConfig","properties":{"speaker":{"title":"Speaker","description":"Speaker configuration.","tags":["@studioIcon i-mdi-page-layout-footer"],"id":"#appConfig/speaker","properties":{"details":{"type":"array","title":"Links","description":"Array of link object displayed in footer.","default":[],"tags":["@studioInput array","@studioIcon i-mdi-link-variant"],"id":"#appConfig/speaker/details","items":{"type":"any"}}},"type":"object","default":{"details":[]}}},"type":"object","default":{"speaker":{"details":[]}}},"default":{"speaker":{"details":[]}}},"appConfig":{"nuxt":{"buildId":"bccae337-ddb9-44f0-924e-bd4ffaa83b9d"},"speaker":{"details":[{"label":"Name","val":"Tim Benniks"},{"label":"Company","val":"Hygraph","link":"https://hygraph.com"},{"label":"Title","val":"Developer Relations Lead for outreach and awareness"},{"label":"Location","val":"Greater Toulouse Area, France"},{"label":"E-mail","val":"timbenniks.dev@gmail.com"},{"label":"Website","val":"https://timbenniks.dev","link":"https://timbenniks.dev"}]}},"content":{"sources":{},"ignores":[],"locales":[],"defaultLocale":"","highlight":false,"navigation":{"fields":[]},"documentDriven":false,"experimental":{"clientDB":false,"cacheContents":true,"stripQueryParameters":false,"advanceQuery":false,"search":""}},"components":[{"name":"TitleBlock","path":"components/content/TitleBlock.vue","meta":{"props":[{"name":"tag","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"title","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"simple","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[],"events":[]}},{"name":"Articles","path":"components/content/articles.vue","meta":{"props":[{"name":"limit","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"small","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[{"name":"title","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"Hero","path":"components/content/hero.vue","meta":{"props":[{"name":"smallertitle","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[{"name":"image","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}},{"name":"title","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}},{"name":"description","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"Media","path":"components/content/media.vue","meta":{"props":[],"slots":[{"name":"media","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"Richtext","path":"components/content/richtext.vue","meta":{"props":[],"slots":[{"name":"body","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"SpeakerDetails","path":"components/content/speaker-details.vue","meta":{"props":[],"slots":[],"events":[]}},{"name":"SpeakerMedia","path":"components/content/speaker-media.vue","meta":{"props":[],"slots":[{"name":"descripiton","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}},{"name":"image1","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}},{"name":"image2","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}},{"name":"image3","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"Talks","path":"components/content/talks.vue","meta":{"props":[{"name":"limit","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"small","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[{"name":"title","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"TwoColumn","path":"components/content/twoColumn.vue","meta":{"props":[],"slots":[{"name":"sidea","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}},{"name":"sideb","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"Videos","path":"components/content/videos.vue","meta":{"props":[{"name":"limit","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"folder","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"small","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"extras","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[{"name":"title","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"ProseCode","path":"node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","meta":{"props":[{"name":"code","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[76,121]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"language","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[125,176]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"},{"name":"filename","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[180,231]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"},{"name":"highlights","global":false,"description":"","tags":[],"required":false,"type":"number[] | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[235,309]}],"schema":{"kind":"enum","type":"number[] | undefined","schema":["undefined",{"kind":"array","type":"number[]","schema":["number"]}]},"default":"[]"},{"name":"meta","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[313,360]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseCodeInline","path":"node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCodeInline.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProsePre","path":"node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","meta":{"props":[{"name":"code","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[248,293]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"language","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[297,348]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"},{"name":"filename","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[352,403]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"},{"name":"highlights","global":false,"description":"","tags":[],"required":false,"type":"number[] | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[407,481]}],"schema":{"kind":"enum","type":"number[] | undefined","schema":["undefined",{"kind":"array","type":"number[]","schema":["number"]}]},"default":"[]"},{"name":"meta","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[485,532]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseA","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue","meta":{"props":[{"name":"href","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue","range":[183,228]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"target","global":false,"description":"","tags":[],"required":false,"type":"\"_blank\" | \"_parent\" | \"_self\" | \"_top\" | null | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue","range":[232,399]}],"schema":{"kind":"enum","type":"\"_blank\" | \"_parent\" | \"_self\" | \"_top\" | null | undefined","schema":["undefined","null","\"_blank\"","\"_parent\"","\"_self\"","\"_top\""]},"default":"undefined"}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseBlockquote","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseBlockquote.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseEm","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseEm.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH1","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue","range":[258,269]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue","range":[258,269]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH2","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH3","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH4","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH5","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH6","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseHr","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseHr.vue","meta":{"props":[],"slots":[],"events":[]}},{"name":"ProseImg","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","meta":{"props":[{"name":"src","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","range":[440,484]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"alt","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","range":[488,532]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"width","global":false,"description":"","tags":[],"required":false,"type":"string | number | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","range":[536,599]}],"schema":{"kind":"enum","type":"string | number | undefined","schema":["undefined","string","number"]},"default":"undefined"},{"name":"height","global":false,"description":"","tags":[],"required":false,"type":"string | number | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","range":[603,667]}],"schema":{"kind":"enum","type":"string | number | undefined","schema":["undefined","string","number"]},"default":"undefined"}],"slots":[],"events":[]}},{"name":"ProseLi","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseLi.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseOl","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseOl.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseP","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseP.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseScript","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseScript.vue","meta":{"props":[{"name":"src","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseScript.vue","range":[285,329]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""}],"slots":[],"events":[]}},{"name":"ProseStrong","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseStrong.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTable","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTable.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTbody","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTbody.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTd","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTd.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTh","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTh.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseThead","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseThead.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTr","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTr.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseUl","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseUl.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}}]} \ No newline at end of file +{"version":"2.0.0","tokens":"b850afd2fc33fd43a5adf302f2d216dd4623ccf1bc697558a39025af30ee5e32","gitInfo":{"name":"timbenniksdev-2024","owner":"timbenniks","url":"https://github.com/timbenniks/timbenniksdev-2024"},"contentSchema":{},"appConfigSchema":{"properties":{"id":"#appConfig","properties":{"speaker":{"title":"Speaker","description":"Speaker configuration.","tags":["@studioIcon i-mdi-page-layout-footer"],"id":"#appConfig/speaker","properties":{"details":{"type":"array","title":"Links","description":"Array of link object displayed in footer.","default":[],"tags":["@studioInput array","@studioIcon i-mdi-link-variant"],"id":"#appConfig/speaker/details","items":{"type":"any"}}},"type":"object","default":{"details":[]}}},"type":"object","default":{"speaker":{"details":[]}}},"default":{"speaker":{"details":[]}}},"appConfig":{"nuxt":{"buildId":"f8158024-6d61-4a4d-a16c-96197fdeaa6b"},"speaker":{"details":[{"label":"Name","val":"Tim Benniks"},{"label":"Company","val":"Hygraph","link":"https://hygraph.com"},{"label":"Title","val":"Developer Relations Lead for outreach and awareness"},{"label":"Location","val":"Greater Toulouse Area, France"},{"label":"E-mail","val":"timbenniks.dev@gmail.com"},{"label":"Website","val":"https://timbenniks.dev","link":"https://timbenniks.dev"}]}},"content":{"sources":{},"ignores":[],"locales":[],"defaultLocale":"","highlight":false,"navigation":{"fields":[]},"documentDriven":false,"experimental":{"clientDB":false,"cacheContents":true,"stripQueryParameters":false,"advanceQuery":false,"search":""}},"components":[{"name":"TitleBlock","path":"components/content/TitleBlock.vue","meta":{"props":[{"name":"tag","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"title","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"simple","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[],"events":[]}},{"name":"Articles","path":"components/content/articles.vue","meta":{"props":[{"name":"limit","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"small","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[{"name":"title","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"Hero","path":"components/content/hero.vue","meta":{"props":[{"name":"smallertitle","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[{"name":"image","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}},{"name":"title","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}},{"name":"description","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"Media","path":"components/content/media.vue","meta":{"props":[],"slots":[{"name":"media","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"Richtext","path":"components/content/richtext.vue","meta":{"props":[],"slots":[{"name":"body","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"SpeakerDetails","path":"components/content/speaker-details.vue","meta":{"props":[],"slots":[],"events":[]}},{"name":"SpeakerMedia","path":"components/content/speaker-media.vue","meta":{"props":[],"slots":[{"name":"descripiton","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}},{"name":"image1","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}},{"name":"image2","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}},{"name":"image3","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"Talks","path":"components/content/talks.vue","meta":{"props":[{"name":"limit","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"small","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[{"name":"title","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"TwoColumn","path":"components/content/twoColumn.vue","meta":{"props":[],"slots":[{"name":"sidea","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}},{"name":"sideb","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"Videos","path":"components/content/videos.vue","meta":{"props":[{"name":"limit","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"folder","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"small","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"},{"name":"extras","global":false,"description":"","tags":[],"required":false,"type":"any","declarations":[],"schema":"any"}],"slots":[{"name":"title","type":"{ unwrap: string; }","description":"","declarations":[],"schema":{"kind":"object","type":"{ unwrap: string; }","schema":{"unwrap":{"name":"unwrap","global":false,"description":"","tags":[],"required":true,"type":"string","declarations":[],"schema":"string"}}}}],"events":[]}},{"name":"ProseCode","path":"node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","meta":{"props":[{"name":"code","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[76,121]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"language","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[125,176]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"},{"name":"filename","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[180,231]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"},{"name":"highlights","global":false,"description":"","tags":[],"required":false,"type":"number[] | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[235,309]}],"schema":{"kind":"enum","type":"number[] | undefined","schema":["undefined",{"kind":"array","type":"number[]","schema":["number"]}]},"default":"[]"},{"name":"meta","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCode.vue","range":[313,360]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseCodeInline","path":"node_modules/@nuxt/content/dist/runtime/components/Prose/ProseCodeInline.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProsePre","path":"node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","meta":{"props":[{"name":"code","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[248,293]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"language","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[297,348]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"},{"name":"filename","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[352,403]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"},{"name":"highlights","global":false,"description":"","tags":[],"required":false,"type":"number[] | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[407,481]}],"schema":{"kind":"enum","type":"number[] | undefined","schema":["undefined",{"kind":"array","type":"number[]","schema":["number"]}]},"default":"[]"},{"name":"meta","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxt/content/dist/runtime/components/Prose/ProsePre.vue","range":[485,532]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"null"}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseA","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue","meta":{"props":[{"name":"href","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue","range":[183,228]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"target","global":false,"description":"","tags":[],"required":false,"type":"\"_blank\" | \"_parent\" | \"_self\" | \"_top\" | null | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseA.vue","range":[232,399]}],"schema":{"kind":"enum","type":"\"_blank\" | \"_parent\" | \"_self\" | \"_top\" | null | undefined","schema":["undefined","null","\"_blank\"","\"_parent\"","\"_self\"","\"_top\""]},"default":"undefined"}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseBlockquote","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseBlockquote.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseEm","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseEm.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH1","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue","range":[258,269]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH1.vue","range":[258,269]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH2","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH2.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH3","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH3.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH4","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH4.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH5","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH5.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseH6","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue","meta":{"props":[{"name":"id","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue","range":[264,275]},{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseH6.vue","range":[264,275]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]}}],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseHr","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseHr.vue","meta":{"props":[],"slots":[],"events":[]}},{"name":"ProseImg","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","meta":{"props":[{"name":"src","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","range":[440,484]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"alt","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","range":[488,532]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""},{"name":"width","global":false,"description":"","tags":[],"required":false,"type":"string | number | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","range":[536,599]}],"schema":{"kind":"enum","type":"string | number | undefined","schema":["undefined","string","number"]},"default":"undefined"},{"name":"height","global":false,"description":"","tags":[],"required":false,"type":"string | number | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseImg.vue","range":[603,667]}],"schema":{"kind":"enum","type":"string | number | undefined","schema":["undefined","string","number"]},"default":"undefined"}],"slots":[],"events":[]}},{"name":"ProseLi","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseLi.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseOl","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseOl.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseP","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseP.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseScript","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseScript.vue","meta":{"props":[{"name":"src","global":false,"description":"","tags":[],"required":false,"type":"string | undefined","declarations":[{"file":"/home/runner/work/timbenniksdev-2024/timbenniksdev-2024/node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseScript.vue","range":[285,329]}],"schema":{"kind":"enum","type":"string | undefined","schema":["undefined","string"]},"default":"\"\""}],"slots":[],"events":[]}},{"name":"ProseStrong","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseStrong.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTable","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTable.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTbody","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTbody.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTd","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTd.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTh","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTh.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseThead","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseThead.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseTr","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseTr.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}},{"name":"ProseUl","path":"node_modules/@nuxtjs/mdc/dist/runtime/components/prose/ProseUl.vue","meta":{"props":[],"slots":[{"name":"default","type":"{}","description":"","declarations":[],"schema":{"kind":"object","type":"{}","schema":{}}}],"events":[]}}]} \ No newline at end of file diff --git a/_nuxt/DBPcRj_W.js b/_nuxt/67ZTB1NV.js similarity index 58% rename from _nuxt/DBPcRj_W.js rename to _nuxt/67ZTB1NV.js index fa441394..eec9ad10 100644 --- a/_nuxt/DBPcRj_W.js +++ b/_nuxt/67ZTB1NV.js @@ -1 +1 @@ -import{d as n,Q as e}from"./XRF4b_vJ.js";const t=n({name:"DocumentDrivenNotFound",render(){return e("div","Document not found")}});export{t as default}; +import{d as n,Q as e}from"./ZAsafoXZ.js";const t=n({name:"DocumentDrivenNotFound",render(){return e("div","Document not found")}});export{t as default}; diff --git a/_nuxt/BD-CroyX.js b/_nuxt/7RLhvcjy.js similarity index 98% rename from _nuxt/BD-CroyX.js rename to _nuxt/7RLhvcjy.js index d87ad756..2bffcd2a 100644 --- a/_nuxt/BD-CroyX.js +++ b/_nuxt/7RLhvcjy.js @@ -1 +1 @@ -import{d as j,u as Z,r as M,o as ee,_ as te,a as ne,b as T,c as q,n as oe,F as ie,e as w,f as L,g as z,w as J,T as H,t as ae,h as V,p as se,i as re,j as de,k as U,l as ce,m as le,q as ue,s as pe,v as we,x as O,y as W,z as G,A as ve,B as fe,C as F}from"./XRF4b_vJ.js";const x=i=>(se("data-v-0c850afe"),i=i(),re(),i),me=x(()=>w("svg",{viewBox:"0 0 90 90",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[w("path",{d:"M50.0016 71.0999h29.2561c.9293.0001 1.8422-.241 2.6469-.6992.8047-.4582 1.4729-1.1173 1.9373-1.9109.4645-.7936.7088-1.6939.7083-2.6102-.0004-.9162-.2455-1.8163-.7106-2.6095L64.192 29.713c-.4644-.7934-1.1325-1.4523-1.937-1.9105-.8046-.4581-1.7173-.6993-2.6463-.6993-.9291 0-1.8418.2412-2.6463.6993-.8046.4582-1.4726 1.1171-1.937 1.9105l-5.0238 8.5861-9.8224-16.7898c-.4648-.7934-1.1332-1.4522-1.938-1.9102-.8047-.4581-1.7176-.6992-2.6468-.6992-.9292 0-1.842.2411-2.6468.6992-.8048.458-1.4731 1.1168-1.9379 1.9102L6.56062 63.2701c-.46512.7932-.71021 1.6933-.71061 2.6095-.00041.9163.24389 1.8166.70831 2.6102.46443.7936 1.1326 1.4527 1.93732 1.9109.80473.4582 1.71766.6993 2.64686.6992h18.3646c7.2763 0 12.6422-3.1516 16.3345-9.3002l8.9642-15.3081 4.8015-8.1925 14.4099 24.6083H54.8058l-4.8042 8.1925ZM29.2077 62.899l-12.8161-.0028L35.603 30.0869l9.5857 16.4047-6.418 10.9645c-2.4521 3.9894-5.2377 5.4429-9.563 5.4429Z",fill:"currentColor"})],-1)),he=x(()=>w("span",null,[w("a",{href:"https://nuxt.studio",target:"_blank",rel:"noopener"},"Nuxt Studio"),de(": Preview enabled")],-1)),ye={key:0},_e=x(()=>w("div",{id:"__preview_background"},null,-1)),ge=x(()=>w("svg",{id:"__preview_loading_icon",width:"32",height:"32",viewBox:"0 0 24 24"},[w("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 0 0 4.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 0 1-15.357-2m15.357 2H15"})],-1)),Ie=x(()=>w("p",null,"Initializing the preview...",-1)),ke={key:0},Ce=x(()=>w("div",{id:"__preview_background"},null,-1)),Pe={id:"__preview_loader"},Se=j({__name:"ContentPreviewMode",props:{previewToken:{type:String,required:!0},apiURL:{type:String,required:!0},syncPreview:{type:Function,required:!0},requestPreviewSyncAPI:{type:Function,required:!0}},setup(i){const s=i,t=["__nuxt_preview","__preview_enabled"],l=U(),_=Z(),u=M(!0),I=M(!1),e=M(!1),o=M("");let n;const a=async()=>{V("previewToken").value="",window.sessionStorage.removeItem("previewToken"),window.sessionStorage.removeItem("previewAPI"),await _.replace({query:{preview:void 0}}),window.location.reload()},m=async p=>{const v=await s.syncPreview(p);if(e.value!==!0){if(!v){setTimeout(()=>m(p),1e3);return}V("previewToken").value&&(e.value=!0,await _.replace({query:{}}),l.callHook("nuxt-studio:preview:ready"),window.parent&&window.self!==window.parent&&n.disconnect())}};return ee(async()=>{n=(await te(()=>import("./CF3NOiUn.js"),[],import.meta.url)).connect(`${s.apiURL}/preview`,{transports:["websocket","polling"],auth:{token:s.previewToken}});let v;n.on("connect",()=>{v=setTimeout(()=>{e.value||(v=setTimeout(()=>{o.value="Preview sync timed out",e.value=!1},3e4),n.emit("draft:requestSync"))},3e4)});const C=()=>{v&&(clearTimeout(v),v=null)};n.on("draft:sync",async P=>{if(C(),!P){try{n.once("draft:ready",()=>{n.emit("draft:requestSync")}),await s.requestPreviewSyncAPI()}catch(A){switch(C(),A.response.status){case 404:o.value="Preview draft not found",e.value=!1;break;default:o.value="An error occurred while syncing preview",e.value=!1}}return}m(P)}),n.on("draft:unauthorized",()=>{C(),o.value="Unauthorized preview",e.value=!1}),n.on("disconnect",()=>{C()}),document.body.classList.add(...t),n.on("draft:update",P=>{I.value=!0,s.syncPreview(P),I.value=!1})}),ne(()=>{document.body.classList.remove(...t)}),(p,v)=>(T(),q("div",null,[u.value?(T(),q("div",{key:0,id:"__nuxt_preview",class:oe({__preview_ready:e.value,__preview_refreshing:I.value})},[e.value?(T(),q(ie,{key:0},[me,he,w("button",{onClick:a}," Close ")],64)):L("",!0)],2)):L("",!0),z(H,{name:"preview-loading"},{default:J(()=>[u.value&&!e.value&&!o.value?(T(),q("div",ye,[_e,w("div",{id:"__preview_loader"},[ge,Ie,w("button",{onClick:a}," Cancel ")])])):L("",!0)]),_:1}),z(H,{name:"preview-loading"},{default:J(()=>[o.value?(T(),q("div",ke,[Ce,w("div",Pe,[w("p",null,ae(o.value),1),w("button",{onClick:a}," Exit preview ")])])):L("",!0)]),_:1})]))}}),xe=ce(Se,[["__scopeId","data-v-0c850afe"]]),Ae=(i=[],s,t)=>{const l=[...s||[]],_=[...t||[]],u=JSON.parse(JSON.stringify(i));for(const e of l)if(e.new)u.push({path:e.path,parsed:e.parsed});else if(e.oldPath)if(_.splice(_.findIndex(n=>n.path===e.oldPath),1),l.find(n=>n.path===e.oldPath))u.push({path:e.path,parsed:e.parsed});else{const n=u.find(a=>a.path===e.oldPath);n&&(n.path=e.path,e.parsed?n.parsed=e.parsed:e.pathMeta&&["_file","_path","_id","_locale"].forEach(a=>{n.parsed[a]=e.pathMeta[a]}))}else{const o=u.find(n=>n.path===e.path);o?Object.assign(o,{path:e.path,parsed:e.parsed}):u.push({path:e.path,parsed:e.parsed})}for(const e of _)u.splice(u.findIndex(o=>o.path===e.path),1);const I=new Intl.Collator(void 0,{numeric:!0});return u.sort((e,o)=>I.compare(e.path,o.path)),u},b={appConfig:"app.config.ts",nuxtConfig:"nuxt.config.ts"},Te=le((i,s,t)=>{if(Array.isArray(i[s])&&Array.isArray(t))return i[s]=t,!0}),qe=i=>{let s;return t=>(s||(s=i()),s)};function Q(i,s){for(const t in i){const l=s[t];t in s||delete i[t],l!==null&&typeof l=="object"&&Q(i[t],s[t])}}function X(i,s){for(const t in s){const l=s[t];l!==null&&typeof l=="object"?Array.isArray(l)&&Array.isArray(i[t])?i[t]=l:(i[t]=i[t]||{},X(i[t],l)):i[t]=l}}const be=()=>{const i=U(),s={},t=ue("studio-client-db",()=>null);t.value||(i.hook("content:storage",o=>{t.value=o}),pe("/non-existing-path").findOne());const l=async o=>{var m,p,v;const n=window.sessionStorage.getItem("previewToken");if(!o)return null;o=o.replace(/\/$/,"");let a=await((m=t.value)==null?void 0:m.getItem(`${n}:${o}`));return a||(a=await((p=t.value)==null?void 0:p.getItem(`cached:${o}`))),a||(a=a=await((v=t.value)==null?void 0:v.getItem(o))),a||(a=s[o||"/"]),a};return{storage:t,findContentItem:l,updateContentItem:(o,n)=>{var a;t.value&&(s[n.parsed._path]=n.parsed,t.value.setItem(`${o}:${(a=n.parsed)==null?void 0:a._id}`,JSON.stringify(n.parsed)))},removeContentItem:async(o,n)=>{var m;const a=await l(n);if(await((m=t.value)==null?void 0:m.removeItem(`${o}:${n}`)),a){delete s[a._path];const p=await l(a._id);p&&(s[p._path]=p)}},removeAllContentItems:async o=>{const n=await t.value.getKeys(`${o}:`);await Promise.all(n.map(a=>t.value.removeItem(a)))},setPreviewMetaItems:async(o,n)=>{const a=new Set(n.map(m=>m.parsed._id.split(":").shift()));await t.value.setItem(`${o}$`,JSON.stringify({ignoreSources:Array.from(a)}))}}},Me=qe(()=>JSON.parse(JSON.stringify(G())));let D=[];const Ke=()=>{const i=U(),{storage:s,findContentItem:t,updateContentItem:l,removeContentItem:_,removeAllContentItems:u,setPreviewMetaItems:I}=be(),{studio:e,content:o}=we().public,n=window.sessionStorage.getItem("previewAPI")||(e==null?void 0:e.apiURL),a=Me(),m=async c=>{const r=window.sessionStorage.getItem("previewToken");u(r),I(r,c),await Promise.all(c.map(f=>{l(r,f)}))},p=c=>{const r=W(i,G);r!=null&&r.ui&&(r.ui.icons={...r.ui.icons,dynamic:!0}),X(r,Te(c,a)),c||Q(r,a)},v=async c=>{if(D=c.files=c.files||D||[],!s.value)return!1;D=[];const r=Ae(c.files,c.additions,c.deletions),f=r.filter(k=>![b.appConfig,b.nuxtConfig].includes(k.path));await m(f);const h=r.find(k=>k.path===b.appConfig);return p(h==null?void 0:h.parsed),A(),!0},C=async()=>{const c=window.sessionStorage.getItem("previewToken");await $fetch("api/projects/preview/sync",{baseURL:n,method:"POST",params:{token:c}})},P=()=>{const c=window.sessionStorage.getItem("previewToken"),r=document.createElement("div");r.id="__nuxt_preview_wrapper",document.body.appendChild(r),ve(xe,{previewToken:c,apiURL:n,syncPreview:v,requestPreviewSyncAPI:C}).mount(r)},A=async()=>{if(o!=null&&o.documentDriven){const{pages:c}=W(i,fe),r=await Promise.all(Object.keys(c.value).map(async f=>{var h;return await t(((h=c.value[f])==null?void 0:h._id)??f)}));c.value=r.reduce((f,h,k)=>(h&&(f[Object.keys(c.value)[k]]=h),f),{})}await i.hooks.callHookParallel("app:data:refresh")};return{mountPreviewUI:P,initiateIframeCommunication:Y};function Y(){if(!window.parent||window.self===window.parent)return;const c=Z(),r=O(),f=M(""),h=d=>({path:d.path,query:F(d.query),params:F(d.params),fullPath:d.fullPath,meta:F(d.meta)});window.addEventListener("keydown",d=>{(d.metaKey||d.ctrlKey||d.altKey||d.shiftKey)&&window.parent.postMessage({type:"nuxt-studio:preview:keydown",payload:{key:d.key,metaKey:d.metaKey,ctrlKey:d.ctrlKey,shiftKey:d.shiftKey,altKey:d.altKey}},"*")}),window.addEventListener("message",async d=>{var B;if(!["https://nuxt.studio","https://new.nuxt.studio","https://new.dev.nuxt.studio","https://dev.nuxt.studio","http://localhost:3000",...((B=e==null?void 0:e.iframeMessagingAllowedOrigins)==null?void 0:B.split(",").map(y=>y.trim()))||[]].includes(d.origin))return;const{type:N,payload:R={}}=d.data||{};switch(N){case"nuxt-studio:editor:file-selected":{const y=await t(R.path);y&&(y._partial||!String(R.path).endsWith(".md")||y._path!==O().path&&(f.value=y._path,c.push(y._path)));break}case"nuxt-studio:editor:media-changed":case"nuxt-studio:editor:file-changed":{const y=window.sessionStorage.getItem("previewToken"),{additions:$=[],deletions:S=[]}=R;for(const K of $)await l(y,K);for(const K of S)await _(y,K.path);A();break}case"nuxt-studio:config:file-changed":{const{additions:y=[],deletions:$=[]}=R,S=y.find(E=>E.path===b.appConfig);S&&p(S==null?void 0:S.parsed),$.find(E=>E.path===b.appConfig)&&p(void 0)}}}),i.hook("page:finish",()=>{k(),i.payload.prerenderedAt&&A()}),i.hook("content:document-driven:finish",({route:d,page:g})=>{d.meta.studio_page_contentId=g==null?void 0:g._id}),i.hook("nuxt-studio:preview:ready",()=>{window.parent.postMessage({type:"nuxt-studio:preview:ready",payload:h(O())},"*"),setTimeout(()=>{k()},100)});function k(){const d=Array.from(window.document.querySelectorAll("[data-content-id]")).map(N=>N.getAttribute("data-content-id")),g=Array.from(new Set([r.meta.studio_page_contentId,...d])).filter(Boolean);if(f.value===g[0]){f.value="";return}window.openContentInStudioEditor(g,{navigate:!0,pageContentId:r.meta.studio_page_contentId})}window.openContentInStudioEditor=(d,g={})=>{window.parent.postMessage({type:"nuxt-studio:preview:navigate",payload:{...h(r),contentIds:d,...g}},"*")}}};export{Ke as useStudio}; +import{d as j,u as Z,r as M,o as ee,_ as te,a as ne,b as T,c as q,n as oe,F as ie,e as w,f as L,g as z,w as J,T as H,t as ae,h as V,p as se,i as re,j as de,k as U,l as ce,m as le,q as ue,s as pe,v as we,x as O,y as W,z as G,A as ve,B as fe,C as F}from"./ZAsafoXZ.js";const x=i=>(se("data-v-0c850afe"),i=i(),re(),i),me=x(()=>w("svg",{viewBox:"0 0 90 90",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[w("path",{d:"M50.0016 71.0999h29.2561c.9293.0001 1.8422-.241 2.6469-.6992.8047-.4582 1.4729-1.1173 1.9373-1.9109.4645-.7936.7088-1.6939.7083-2.6102-.0004-.9162-.2455-1.8163-.7106-2.6095L64.192 29.713c-.4644-.7934-1.1325-1.4523-1.937-1.9105-.8046-.4581-1.7173-.6993-2.6463-.6993-.9291 0-1.8418.2412-2.6463.6993-.8046.4582-1.4726 1.1171-1.937 1.9105l-5.0238 8.5861-9.8224-16.7898c-.4648-.7934-1.1332-1.4522-1.938-1.9102-.8047-.4581-1.7176-.6992-2.6468-.6992-.9292 0-1.842.2411-2.6468.6992-.8048.458-1.4731 1.1168-1.9379 1.9102L6.56062 63.2701c-.46512.7932-.71021 1.6933-.71061 2.6095-.00041.9163.24389 1.8166.70831 2.6102.46443.7936 1.1326 1.4527 1.93732 1.9109.80473.4582 1.71766.6993 2.64686.6992h18.3646c7.2763 0 12.6422-3.1516 16.3345-9.3002l8.9642-15.3081 4.8015-8.1925 14.4099 24.6083H54.8058l-4.8042 8.1925ZM29.2077 62.899l-12.8161-.0028L35.603 30.0869l9.5857 16.4047-6.418 10.9645c-2.4521 3.9894-5.2377 5.4429-9.563 5.4429Z",fill:"currentColor"})],-1)),he=x(()=>w("span",null,[w("a",{href:"https://nuxt.studio",target:"_blank",rel:"noopener"},"Nuxt Studio"),de(": Preview enabled")],-1)),ye={key:0},_e=x(()=>w("div",{id:"__preview_background"},null,-1)),ge=x(()=>w("svg",{id:"__preview_loading_icon",width:"32",height:"32",viewBox:"0 0 24 24"},[w("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 0 0 4.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 0 1-15.357-2m15.357 2H15"})],-1)),Ie=x(()=>w("p",null,"Initializing the preview...",-1)),ke={key:0},Ce=x(()=>w("div",{id:"__preview_background"},null,-1)),Pe={id:"__preview_loader"},Se=j({__name:"ContentPreviewMode",props:{previewToken:{type:String,required:!0},apiURL:{type:String,required:!0},syncPreview:{type:Function,required:!0},requestPreviewSyncAPI:{type:Function,required:!0}},setup(i){const s=i,t=["__nuxt_preview","__preview_enabled"],l=U(),_=Z(),u=M(!0),I=M(!1),e=M(!1),o=M("");let n;const a=async()=>{V("previewToken").value="",window.sessionStorage.removeItem("previewToken"),window.sessionStorage.removeItem("previewAPI"),await _.replace({query:{preview:void 0}}),window.location.reload()},m=async p=>{const v=await s.syncPreview(p);if(e.value!==!0){if(!v){setTimeout(()=>m(p),1e3);return}V("previewToken").value&&(e.value=!0,await _.replace({query:{}}),l.callHook("nuxt-studio:preview:ready"),window.parent&&window.self!==window.parent&&n.disconnect())}};return ee(async()=>{n=(await te(()=>import("./CF3NOiUn.js"),[],import.meta.url)).connect(`${s.apiURL}/preview`,{transports:["websocket","polling"],auth:{token:s.previewToken}});let v;n.on("connect",()=>{v=setTimeout(()=>{e.value||(v=setTimeout(()=>{o.value="Preview sync timed out",e.value=!1},3e4),n.emit("draft:requestSync"))},3e4)});const C=()=>{v&&(clearTimeout(v),v=null)};n.on("draft:sync",async P=>{if(C(),!P){try{n.once("draft:ready",()=>{n.emit("draft:requestSync")}),await s.requestPreviewSyncAPI()}catch(A){switch(C(),A.response.status){case 404:o.value="Preview draft not found",e.value=!1;break;default:o.value="An error occurred while syncing preview",e.value=!1}}return}m(P)}),n.on("draft:unauthorized",()=>{C(),o.value="Unauthorized preview",e.value=!1}),n.on("disconnect",()=>{C()}),document.body.classList.add(...t),n.on("draft:update",P=>{I.value=!0,s.syncPreview(P),I.value=!1})}),ne(()=>{document.body.classList.remove(...t)}),(p,v)=>(T(),q("div",null,[u.value?(T(),q("div",{key:0,id:"__nuxt_preview",class:oe({__preview_ready:e.value,__preview_refreshing:I.value})},[e.value?(T(),q(ie,{key:0},[me,he,w("button",{onClick:a}," Close ")],64)):L("",!0)],2)):L("",!0),z(H,{name:"preview-loading"},{default:J(()=>[u.value&&!e.value&&!o.value?(T(),q("div",ye,[_e,w("div",{id:"__preview_loader"},[ge,Ie,w("button",{onClick:a}," Cancel ")])])):L("",!0)]),_:1}),z(H,{name:"preview-loading"},{default:J(()=>[o.value?(T(),q("div",ke,[Ce,w("div",Pe,[w("p",null,ae(o.value),1),w("button",{onClick:a}," Exit preview ")])])):L("",!0)]),_:1})]))}}),xe=ce(Se,[["__scopeId","data-v-0c850afe"]]),Ae=(i=[],s,t)=>{const l=[...s||[]],_=[...t||[]],u=JSON.parse(JSON.stringify(i));for(const e of l)if(e.new)u.push({path:e.path,parsed:e.parsed});else if(e.oldPath)if(_.splice(_.findIndex(n=>n.path===e.oldPath),1),l.find(n=>n.path===e.oldPath))u.push({path:e.path,parsed:e.parsed});else{const n=u.find(a=>a.path===e.oldPath);n&&(n.path=e.path,e.parsed?n.parsed=e.parsed:e.pathMeta&&["_file","_path","_id","_locale"].forEach(a=>{n.parsed[a]=e.pathMeta[a]}))}else{const o=u.find(n=>n.path===e.path);o?Object.assign(o,{path:e.path,parsed:e.parsed}):u.push({path:e.path,parsed:e.parsed})}for(const e of _)u.splice(u.findIndex(o=>o.path===e.path),1);const I=new Intl.Collator(void 0,{numeric:!0});return u.sort((e,o)=>I.compare(e.path,o.path)),u},b={appConfig:"app.config.ts",nuxtConfig:"nuxt.config.ts"},Te=le((i,s,t)=>{if(Array.isArray(i[s])&&Array.isArray(t))return i[s]=t,!0}),qe=i=>{let s;return t=>(s||(s=i()),s)};function Q(i,s){for(const t in i){const l=s[t];t in s||delete i[t],l!==null&&typeof l=="object"&&Q(i[t],s[t])}}function X(i,s){for(const t in s){const l=s[t];l!==null&&typeof l=="object"?Array.isArray(l)&&Array.isArray(i[t])?i[t]=l:(i[t]=i[t]||{},X(i[t],l)):i[t]=l}}const be=()=>{const i=U(),s={},t=ue("studio-client-db",()=>null);t.value||(i.hook("content:storage",o=>{t.value=o}),pe("/non-existing-path").findOne());const l=async o=>{var m,p,v;const n=window.sessionStorage.getItem("previewToken");if(!o)return null;o=o.replace(/\/$/,"");let a=await((m=t.value)==null?void 0:m.getItem(`${n}:${o}`));return a||(a=await((p=t.value)==null?void 0:p.getItem(`cached:${o}`))),a||(a=a=await((v=t.value)==null?void 0:v.getItem(o))),a||(a=s[o||"/"]),a};return{storage:t,findContentItem:l,updateContentItem:(o,n)=>{var a;t.value&&(s[n.parsed._path]=n.parsed,t.value.setItem(`${o}:${(a=n.parsed)==null?void 0:a._id}`,JSON.stringify(n.parsed)))},removeContentItem:async(o,n)=>{var m;const a=await l(n);if(await((m=t.value)==null?void 0:m.removeItem(`${o}:${n}`)),a){delete s[a._path];const p=await l(a._id);p&&(s[p._path]=p)}},removeAllContentItems:async o=>{const n=await t.value.getKeys(`${o}:`);await Promise.all(n.map(a=>t.value.removeItem(a)))},setPreviewMetaItems:async(o,n)=>{const a=new Set(n.map(m=>m.parsed._id.split(":").shift()));await t.value.setItem(`${o}$`,JSON.stringify({ignoreSources:Array.from(a)}))}}},Me=qe(()=>JSON.parse(JSON.stringify(G())));let D=[];const Ke=()=>{const i=U(),{storage:s,findContentItem:t,updateContentItem:l,removeContentItem:_,removeAllContentItems:u,setPreviewMetaItems:I}=be(),{studio:e,content:o}=we().public,n=window.sessionStorage.getItem("previewAPI")||(e==null?void 0:e.apiURL),a=Me(),m=async c=>{const r=window.sessionStorage.getItem("previewToken");u(r),I(r,c),await Promise.all(c.map(f=>{l(r,f)}))},p=c=>{const r=W(i,G);r!=null&&r.ui&&(r.ui.icons={...r.ui.icons,dynamic:!0}),X(r,Te(c,a)),c||Q(r,a)},v=async c=>{if(D=c.files=c.files||D||[],!s.value)return!1;D=[];const r=Ae(c.files,c.additions,c.deletions),f=r.filter(k=>![b.appConfig,b.nuxtConfig].includes(k.path));await m(f);const h=r.find(k=>k.path===b.appConfig);return p(h==null?void 0:h.parsed),A(),!0},C=async()=>{const c=window.sessionStorage.getItem("previewToken");await $fetch("api/projects/preview/sync",{baseURL:n,method:"POST",params:{token:c}})},P=()=>{const c=window.sessionStorage.getItem("previewToken"),r=document.createElement("div");r.id="__nuxt_preview_wrapper",document.body.appendChild(r),ve(xe,{previewToken:c,apiURL:n,syncPreview:v,requestPreviewSyncAPI:C}).mount(r)},A=async()=>{if(o!=null&&o.documentDriven){const{pages:c}=W(i,fe),r=await Promise.all(Object.keys(c.value).map(async f=>{var h;return await t(((h=c.value[f])==null?void 0:h._id)??f)}));c.value=r.reduce((f,h,k)=>(h&&(f[Object.keys(c.value)[k]]=h),f),{})}await i.hooks.callHookParallel("app:data:refresh")};return{mountPreviewUI:P,initiateIframeCommunication:Y};function Y(){if(!window.parent||window.self===window.parent)return;const c=Z(),r=O(),f=M(""),h=d=>({path:d.path,query:F(d.query),params:F(d.params),fullPath:d.fullPath,meta:F(d.meta)});window.addEventListener("keydown",d=>{(d.metaKey||d.ctrlKey||d.altKey||d.shiftKey)&&window.parent.postMessage({type:"nuxt-studio:preview:keydown",payload:{key:d.key,metaKey:d.metaKey,ctrlKey:d.ctrlKey,shiftKey:d.shiftKey,altKey:d.altKey}},"*")}),window.addEventListener("message",async d=>{var B;if(!["https://nuxt.studio","https://new.nuxt.studio","https://new.dev.nuxt.studio","https://dev.nuxt.studio","http://localhost:3000",...((B=e==null?void 0:e.iframeMessagingAllowedOrigins)==null?void 0:B.split(",").map(y=>y.trim()))||[]].includes(d.origin))return;const{type:N,payload:R={}}=d.data||{};switch(N){case"nuxt-studio:editor:file-selected":{const y=await t(R.path);y&&(y._partial||!String(R.path).endsWith(".md")||y._path!==O().path&&(f.value=y._path,c.push(y._path)));break}case"nuxt-studio:editor:media-changed":case"nuxt-studio:editor:file-changed":{const y=window.sessionStorage.getItem("previewToken"),{additions:$=[],deletions:S=[]}=R;for(const K of $)await l(y,K);for(const K of S)await _(y,K.path);A();break}case"nuxt-studio:config:file-changed":{const{additions:y=[],deletions:$=[]}=R,S=y.find(E=>E.path===b.appConfig);S&&p(S==null?void 0:S.parsed),$.find(E=>E.path===b.appConfig)&&p(void 0)}}}),i.hook("page:finish",()=>{k(),i.payload.prerenderedAt&&A()}),i.hook("content:document-driven:finish",({route:d,page:g})=>{d.meta.studio_page_contentId=g==null?void 0:g._id}),i.hook("nuxt-studio:preview:ready",()=>{window.parent.postMessage({type:"nuxt-studio:preview:ready",payload:h(O())},"*"),setTimeout(()=>{k()},100)});function k(){const d=Array.from(window.document.querySelectorAll("[data-content-id]")).map(N=>N.getAttribute("data-content-id")),g=Array.from(new Set([r.meta.studio_page_contentId,...d])).filter(Boolean);if(f.value===g[0]){f.value="";return}window.openContentInStudioEditor(g,{navigate:!0,pageContentId:r.meta.studio_page_contentId})}window.openContentInStudioEditor=(d,g={})=>{window.parent.postMessage({type:"nuxt-studio:preview:navigate",payload:{...h(r),contentIds:d,...g}},"*")}}};export{Ke as useStudio}; diff --git a/_nuxt/mdZ-y8w7.js b/_nuxt/B-_wDhEn.js similarity index 65% rename from _nuxt/mdZ-y8w7.js rename to _nuxt/B-_wDhEn.js index a48d910e..90606116 100644 --- a/_nuxt/mdZ-y8w7.js +++ b/_nuxt/B-_wDhEn.js @@ -1 +1 @@ -import{l as o,b as r,c as t,L as s}from"./XRF4b_vJ.js";const c={};function n(e,a){return r(),t("tbody",null,[s(e.$slots,"default")])}const d=o(c,[["render",n]]);export{d as default}; +import{l as o,b as r,c as t,L as s}from"./ZAsafoXZ.js";const c={};function n(e,a){return r(),t("tbody",null,[s(e.$slots,"default")])}const d=o(c,[["render",n]]);export{d as default}; diff --git a/_nuxt/vag9yJ5y.js b/_nuxt/B0YuqmE5.js similarity index 79% rename from _nuxt/vag9yJ5y.js rename to _nuxt/B0YuqmE5.js index 26dd2b35..6c62c9fe 100644 --- a/_nuxt/vag9yJ5y.js +++ b/_nuxt/B0YuqmE5.js @@ -1 +1 @@ -import{d as t,L as n}from"./XRF4b_vJ.js";const o=t({__name:"ProseCode",props:{code:{type:String,default:""},language:{type:String,default:null},filename:{type:String,default:null},highlights:{type:Array,default:()=>[]},meta:{type:String,default:null}},setup(r){return(e,a)=>n(e.$slots,"default")}});export{o as _}; +import{d as t,L as n}from"./ZAsafoXZ.js";const o=t({__name:"ProseCode",props:{code:{type:String,default:""},language:{type:String,default:null},filename:{type:String,default:null},highlights:{type:Array,default:()=>[]},meta:{type:String,default:null}},setup(r){return(e,a)=>n(e.$slots,"default")}});export{o as _}; diff --git a/_nuxt/B38Kd99h.js b/_nuxt/B38Kd99h.js new file mode 100644 index 00000000..c1f13b29 --- /dev/null +++ b/_nuxt/B38Kd99h.js @@ -0,0 +1 @@ +import t from"./DNoJqnvj.js";import{l as r,G as c,b as n}from"./ZAsafoXZ.js";import"./DfsoDfS3.js";import"./IFCu-2Bx.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";import"./Bg8nkQWz.js";const e={};function m(_,i){const o=t;return n(),c(o)}const u=r(e,[["render",m]]);export{u as default}; diff --git a/_nuxt/DoGugEZW.js b/_nuxt/B4yvrndq.js similarity index 64% rename from _nuxt/DoGugEZW.js rename to _nuxt/B4yvrndq.js index 3ddf9f3d..85e99d96 100644 --- a/_nuxt/DoGugEZW.js +++ b/_nuxt/B4yvrndq.js @@ -1 +1 @@ -import{l as o,b as r,c as s,L as t}from"./XRF4b_vJ.js";const c={};function l(e,n){return r(),s("ol",null,[t(e.$slots,"default")])}const f=o(c,[["render",l]]);export{f as default}; +import{l as o,b as r,c as s,L as t}from"./ZAsafoXZ.js";const c={};function l(e,n){return r(),s("ol",null,[t(e.$slots,"default")])}const f=o(c,[["render",l]]);export{f as default}; diff --git a/_nuxt/CnFyItyq.js b/_nuxt/B68gSBWJ.js similarity index 83% rename from _nuxt/CnFyItyq.js rename to _nuxt/B68gSBWJ.js index 05dd5d90..73b81aed 100644 --- a/_nuxt/CnFyItyq.js +++ b/_nuxt/B68gSBWJ.js @@ -1 +1 @@ -import{d as a,b as t,c as s,G as l,w as c,j as n,t as o,n as i,J as m}from"./XRF4b_vJ.js";const r={class:"px-4 md:px-8 mb-4"},k=a({__name:"TitleBlock",props:["tag","title","simple"],setup(e){return(p,x)=>(t(),s("div",r,[(t(),l(m(e.tag),{class:i(e.simple?"font-black text-3xl mb-4":"title page-title inline-block")},{default:c(()=>[n(o(e.title),1)]),_:1},8,["class"]))]))}});export{k as _}; +import{d as a,b as t,c as s,G as l,w as c,j as n,t as o,n as i,J as m}from"./ZAsafoXZ.js";const r={class:"px-4 md:px-8 mb-4"},k=a({__name:"TitleBlock",props:["tag","title","simple"],setup(e){return(p,x)=>(t(),s("div",r,[(t(),l(m(e.tag),{class:i(e.simple?"font-black text-3xl mb-4":"title page-title inline-block")},{default:c(()=>[n(o(e.title),1)]),_:1},8,["class"]))]))}});export{k as _}; diff --git a/_nuxt/B7ph2GW4.js b/_nuxt/B7ph2GW4.js deleted file mode 100644 index 1620f2cb..00000000 --- a/_nuxt/B7ph2GW4.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./CRDyED6e.js";import"./XRF4b_vJ.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";export{o as default}; diff --git a/_nuxt/B7wil4S-.js b/_nuxt/B7wil4S-.js deleted file mode 100644 index e730327b..00000000 --- a/_nuxt/B7wil4S-.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as m}from"./vag9yJ5y.js";import"./XRF4b_vJ.js";export{m as default}; diff --git a/_nuxt/BN4hubtl.js b/_nuxt/BCkGF8ol.js similarity index 85% rename from _nuxt/BN4hubtl.js rename to _nuxt/BCkGF8ol.js index feb52206..0ead0f47 100644 --- a/_nuxt/BN4hubtl.js +++ b/_nuxt/BCkGF8ol.js @@ -1 +1 @@ -import"./B5fxoaT1.js";import{r as o}from"./Bs0KA79C.js";import{d as i,H as m,b as e,c as s,f as l,n as p,I as c}from"./XRF4b_vJ.js";const d={class:"md:relative mb-12 z-40"},u={key:1,class:"md:absolute top-2/4 mdL-translate-y-2/4 left-16 mt-4 md:mt-0 px-4 md:px-0"},k={key:1,class:"bg-black py-1 px-2 text-lg md:text-2xl font-black"},b=i({__name:"hero",props:["smallertitle"],setup(r){const a=r,n=m(()=>a.smallertitle?"text-3xl md:text-5xl":"text-3xl md:text-7xl");return(t,f)=>(e(),s("div",d,[t.$slots.image?o(t.$slots,"image",{key:0,unwrap:"p"}):l("",!0),t.$slots.title||t.$slots.description?(e(),s("article",u,[t.$slots.title?(e(),s("h1",{key:0,class:p(["title inline-block",c(n)])},[o(t.$slots,"title",{unwrap:"p"})],2)):l("",!0),t.$slots.description?(e(),s("h2",k,[o(t.$slots,"description",{unwrap:"p"})])):l("",!0)])):l("",!0)]))}});export{b as _}; +import"./DY4Qxm47.js";import{r as o}from"./ETHpkkS0.js";import{d as i,H as m,b as e,c as s,f as l,n as p,I as c}from"./ZAsafoXZ.js";const d={class:"md:relative mb-12 z-40"},u={key:1,class:"md:absolute top-2/4 mdL-translate-y-2/4 left-16 mt-4 md:mt-0 px-4 md:px-0"},k={key:1,class:"bg-black py-1 px-2 text-lg md:text-2xl font-black"},b=i({__name:"hero",props:["smallertitle"],setup(r){const a=r,n=m(()=>a.smallertitle?"text-3xl md:text-5xl":"text-3xl md:text-7xl");return(t,f)=>(e(),s("div",d,[t.$slots.image?o(t.$slots,"image",{key:0,unwrap:"p"}):l("",!0),t.$slots.title||t.$slots.description?(e(),s("article",u,[t.$slots.title?(e(),s("h1",{key:0,class:p(["title inline-block",c(n)])},[o(t.$slots,"title",{unwrap:"p"})],2)):l("",!0),t.$slots.description?(e(),s("h2",k,[o(t.$slots,"description",{unwrap:"p"})])):l("",!0)])):l("",!0)]))}});export{b as _}; diff --git a/_nuxt/lF9FL2OT.js b/_nuxt/BG0PrORA.js similarity index 65% rename from _nuxt/lF9FL2OT.js rename to _nuxt/BG0PrORA.js index 1b72b20b..3383003d 100644 --- a/_nuxt/lF9FL2OT.js +++ b/_nuxt/BG0PrORA.js @@ -1 +1 @@ -import{l as r,b as t,c as o,L as s}from"./XRF4b_vJ.js";const a={};function c(e,l){return t(),o("table",null,[s(e.$slots,"default")])}const f=r(a,[["render",c]]);export{f as default}; +import{l as r,b as t,c as o,L as s}from"./ZAsafoXZ.js";const a={};function c(e,l){return t(),o("table",null,[s(e.$slots,"default")])}const f=r(a,[["render",c]]);export{f as default}; diff --git a/_nuxt/BUmnHLhL.js b/_nuxt/BUmnHLhL.js deleted file mode 100644 index c9ea8498..00000000 --- a/_nuxt/BUmnHLhL.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./B5fxoaT1.js";import{d as t,Q as n}from"./XRF4b_vJ.js";import"./Dnd51l0P.js";const s=t({props:{use:{type:Function,default:void 0},unwrap:{type:[Boolean,String],default:!1}},render(e){return n(o,e)}});export{s as default}; diff --git a/_nuxt/BfpgT2Sr.js b/_nuxt/Bau6F8qQ.js similarity index 64% rename from _nuxt/BfpgT2Sr.js rename to _nuxt/Bau6F8qQ.js index 55c33a78..70ea4bcc 100644 --- a/_nuxt/BfpgT2Sr.js +++ b/_nuxt/Bau6F8qQ.js @@ -1 +1 @@ -import{l as o,b as n,c as r,L as c}from"./XRF4b_vJ.js";const s={};function t(e,l){return n(),r("code",null,[c(e.$slots,"default")])}const d=o(s,[["render",t]]);export{d as default}; +import{l as o,b as n,c as r,L as c}from"./ZAsafoXZ.js";const s={};function t(e,l){return n(),r("code",null,[c(e.$slots,"default")])}const d=o(s,[["render",t]]);export{d as default}; diff --git a/_nuxt/B-yvyQ1i.js b/_nuxt/BdS669jU.js similarity index 86% rename from _nuxt/B-yvyQ1i.js rename to _nuxt/BdS669jU.js index ac8392d4..5fb0f8f0 100644 --- a/_nuxt/B-yvyQ1i.js +++ b/_nuxt/BdS669jU.js @@ -1 +1 @@ -import"./B5fxoaT1.js";import{d as y,H as b,b as a,c as r,f as m,g as _,w as c,e as t,n as C,I as k,F as D,K as N,t as o,E as $}from"./XRF4b_vJ.js";import B from"./DhTXWxNA.js";import{r as F}from"./Bs0KA79C.js";import{t as u,f as p}from"./CeI02lA4.js";import"./Dnd51l0P.js";import"./DVDnHXyh.js";function M(n){return u(n).getFullYear()}function v(n){return+u(n)>Date.now()}const L={class:"px-4 md:px-8 mb-8"},V={key:0,class:"title inline-block mb-4"},j={class:"bg-[#0e1029] w-20 h-28 text-center font-black uppercase flex flex-col justify-center date-card"},E={class:"text-4xl"},I={class:"text-lg"},O={class:"text-lg"},S={class:"flex flex-col justify-start w-80"},Y={key:0,class:"flowing-title font-bold text-sm"},q={class:"font-bold text-xl"},z={class:"line-clamp-1"},G={class:"text-sm text-slate-400"},H=t("p",null,"No talks found.",-1),W=y({__name:"talks",props:["limit","small"],setup(n){const l=n,d={path:"/speaking",sort:[{date:-1}],where:[{_dir:{$ne:""}},{_empty:{$ne:!0}}]};l.limit&&(d.limit=l.limit);const f=b(()=>l.small?"grid grid-cols-1 md:grid-cols-1 gap-6":"grid grid-cols-1 md:grid-cols-3 gap-6");function i(s){return{year:M(s),month:p(new Date(s),"MMM"),day:p(new Date(s),"dd")}}function x(s){return v(new Date(s))}return(s,K)=>{const g=$,h=B;return a(),r("div",L,[s.$slots.title?(a(),r("h3",V,[F(s.$slots,"title",{unwrap:"p"})])):m("",!0),_(h,{query:d},{default:c(({list:w})=>[t("ul",{class:C(k(f))},[(a(!0),r(D,null,N(w,e=>(a(),r("li",{key:e._path,class:"mb-2"},[_(g,{to:e.link,target:"_blank",class:"flex flex-row space-x-4"},{default:c(()=>[t("div",j,[t("p",E,o(i(e.date).day),1),t("p",I,o(i(e.date).month),1),t("p",O,o(i(e.date).year),1)]),t("div",S,[x(e.date)?(a(),r("p",Y," UPCOMING ")):m("",!0),t("p",q,o(e.conference),1),t("p",z,o(e.talk),1),t("p",G,o(e.location),1)])]),_:2},1032,["to"])]))),128))],2)]),"not-found":c(()=>[H]),_:1})])}}});export{W as default}; +import"./DY4Qxm47.js";import{d as y,H as b,b as a,c as r,f as m,g as _,w as c,e as t,n as C,I as k,F as D,K as N,t as o,E as $}from"./ZAsafoXZ.js";import B from"./CVVxf02X.js";import{r as F}from"./ETHpkkS0.js";import{t as u,f as p}from"./CeI02lA4.js";import"./Dnd51l0P.js";import"./Bg8nkQWz.js";function M(n){return u(n).getFullYear()}function v(n){return+u(n)>Date.now()}const L={class:"px-4 md:px-8 mb-8"},V={key:0,class:"title inline-block mb-4"},j={class:"bg-[#0e1029] w-20 h-28 text-center font-black uppercase flex flex-col justify-center date-card"},E={class:"text-4xl"},I={class:"text-lg"},O={class:"text-lg"},S={class:"flex flex-col justify-start w-80"},Y={key:0,class:"flowing-title font-bold text-sm"},q={class:"font-bold text-xl"},z={class:"line-clamp-1"},G={class:"text-sm text-slate-400"},H=t("p",null,"No talks found.",-1),W=y({__name:"talks",props:["limit","small"],setup(n){const l=n,d={path:"/speaking",sort:[{date:-1}],where:[{_dir:{$ne:""}},{_empty:{$ne:!0}}]};l.limit&&(d.limit=l.limit);const f=b(()=>l.small?"grid grid-cols-1 md:grid-cols-1 gap-6":"grid grid-cols-1 md:grid-cols-3 gap-6");function i(s){return{year:M(s),month:p(new Date(s),"MMM"),day:p(new Date(s),"dd")}}function x(s){return v(new Date(s))}return(s,K)=>{const g=$,h=B;return a(),r("div",L,[s.$slots.title?(a(),r("h3",V,[F(s.$slots,"title",{unwrap:"p"})])):m("",!0),_(h,{query:d},{default:c(({list:w})=>[t("ul",{class:C(k(f))},[(a(!0),r(D,null,N(w,e=>(a(),r("li",{key:e._path,class:"mb-2"},[_(g,{to:e.link,target:"_blank",class:"flex flex-row space-x-4"},{default:c(()=>[t("div",j,[t("p",E,o(i(e.date).day),1),t("p",I,o(i(e.date).month),1),t("p",O,o(i(e.date).year),1)]),t("div",S,[x(e.date)?(a(),r("p",Y," UPCOMING ")):m("",!0),t("p",q,o(e.conference),1),t("p",z,o(e.talk),1),t("p",G,o(e.location),1)])]),_:2},1032,["to"])]))),128))],2)]),"not-found":c(()=>[H]),_:1})])}}});export{W as default}; diff --git a/_nuxt/DVDnHXyh.js b/_nuxt/Bg8nkQWz.js similarity index 97% rename from _nuxt/DVDnHXyh.js rename to _nuxt/Bg8nkQWz.js index fa4bf3df..ddf9d89d 100644 --- a/_nuxt/DVDnHXyh.js +++ b/_nuxt/Bg8nkQWz.js @@ -1 +1 @@ -import{d as g,R as S,H as C,v as b,M as O,S as Q,U as _,O as k,s as m,Q as A}from"./XRF4b_vJ.js";const N=g({name:"ContentQuery",props:{path:{type:String,required:!1,default:void 0},only:{type:Array,required:!1,default:void 0},without:{type:Array,required:!1,default:void 0},where:{type:Object,required:!1,default:void 0},sort:{type:Object,required:!1,default:void 0},limit:{type:Number,required:!1,default:void 0},skip:{type:Number,required:!1,default:void 0},locale:{type:String,required:!1,default:void 0},find:{type:String,required:!1,default:void 0}},async setup(u){const{path:t,only:r,without:o,where:a,sort:l,limit:d,skip:f,locale:s,find:h}=S(u),p=C(()=>{var e;return(e=t.value)==null?void 0:e.includes("/_")}),y=!b().public.content.experimental.advanceQuery;O(()=>u,()=>n(),{deep:!0});const i=e=>y?e!=null&&e.surround?e.surround:e!=null&&e._id||Array.isArray(e)?e:e==null?void 0:e.result:e.result,{data:v,refresh:n}=await Q(`content-query-${_(u)}`,()=>{let e;return t.value?e=m(t.value):e=m(),r.value&&(e=e.only(r.value)),o.value&&(e=e.without(o.value)),a.value&&(e=e.where(a.value)),l.value&&(e=e.sort(l.value)),d.value&&(e=e.limit(d.value)),f.value&&(e=e.skip(f.value)),s.value&&(e=e.where({_locale:s.value})),h.value==="one"?e.findOne().then(i):h.value==="surround"?t.value?y?e.findSurround(t.value):e.withSurround(t.value).findOne().then(i):(console.warn("[Content] Surround queries requires `path` prop to be set."),console.warn("[Content] Query without `path` will return regular `find()` results."),e.find().then(i)):e.find().then(i)});return{isPartial:p,data:v,refresh:n}},render(u){var c;const t=k(),{data:r,refresh:o,isPartial:a,path:l,only:d,without:f,where:s,sort:h,limit:p,skip:y,locale:i,find:v}=u,n={path:l,only:d,without:f,where:s,sort:h,limit:p,skip:y,locale:i,find:v};if(n.find==="one"){if(!r&&(t!=null&&t["not-found"]))return t["not-found"]({props:n,...this.$attrs});if(t!=null&&t.empty&&(r==null?void 0:r._type)==="markdown"&&!((c=r==null?void 0:r.body)!=null&&c.children.length))return t.empty({props:n,...this.$attrs})}else if((!r||!r.length)&&t!=null&&t["not-found"])return t["not-found"]({props:n,...this.$attrs});return t!=null&&t.default?t.default({data:r,refresh:o,isPartial:a,props:n,...this.$attrs}):((w,q)=>A("pre",null,JSON.stringify({message:"You should use slots with !",slot:w,data:q},null,2)))("default",{data:r,props:n,isPartial:a})}}),R=N;export{R as default}; +import{d as g,R as S,H as C,v as b,M as O,S as Q,U as _,O as k,s as m,Q as A}from"./ZAsafoXZ.js";const N=g({name:"ContentQuery",props:{path:{type:String,required:!1,default:void 0},only:{type:Array,required:!1,default:void 0},without:{type:Array,required:!1,default:void 0},where:{type:Object,required:!1,default:void 0},sort:{type:Object,required:!1,default:void 0},limit:{type:Number,required:!1,default:void 0},skip:{type:Number,required:!1,default:void 0},locale:{type:String,required:!1,default:void 0},find:{type:String,required:!1,default:void 0}},async setup(u){const{path:t,only:r,without:o,where:a,sort:l,limit:d,skip:f,locale:s,find:h}=S(u),p=C(()=>{var e;return(e=t.value)==null?void 0:e.includes("/_")}),y=!b().public.content.experimental.advanceQuery;O(()=>u,()=>n(),{deep:!0});const i=e=>y?e!=null&&e.surround?e.surround:e!=null&&e._id||Array.isArray(e)?e:e==null?void 0:e.result:e.result,{data:v,refresh:n}=await Q(`content-query-${_(u)}`,()=>{let e;return t.value?e=m(t.value):e=m(),r.value&&(e=e.only(r.value)),o.value&&(e=e.without(o.value)),a.value&&(e=e.where(a.value)),l.value&&(e=e.sort(l.value)),d.value&&(e=e.limit(d.value)),f.value&&(e=e.skip(f.value)),s.value&&(e=e.where({_locale:s.value})),h.value==="one"?e.findOne().then(i):h.value==="surround"?t.value?y?e.findSurround(t.value):e.withSurround(t.value).findOne().then(i):(console.warn("[Content] Surround queries requires `path` prop to be set."),console.warn("[Content] Query without `path` will return regular `find()` results."),e.find().then(i)):e.find().then(i)});return{isPartial:p,data:v,refresh:n}},render(u){var c;const t=k(),{data:r,refresh:o,isPartial:a,path:l,only:d,without:f,where:s,sort:h,limit:p,skip:y,locale:i,find:v}=u,n={path:l,only:d,without:f,where:s,sort:h,limit:p,skip:y,locale:i,find:v};if(n.find==="one"){if(!r&&(t!=null&&t["not-found"]))return t["not-found"]({props:n,...this.$attrs});if(t!=null&&t.empty&&(r==null?void 0:r._type)==="markdown"&&!((c=r==null?void 0:r.body)!=null&&c.children.length))return t.empty({props:n,...this.$attrs})}else if((!r||!r.length)&&t!=null&&t["not-found"])return t["not-found"]({props:n,...this.$attrs});return t!=null&&t.default?t.default({data:r,refresh:o,isPartial:a,props:n,...this.$attrs}):((w,q)=>A("pre",null,JSON.stringify({message:"You should use slots with !",slot:w,data:q},null,2)))("default",{data:r,props:n,isPartial:a})}}),R=N;export{R as default}; diff --git a/_nuxt/D_KpN4FA.js b/_nuxt/BqgddL43.js similarity index 71% rename from _nuxt/D_KpN4FA.js rename to _nuxt/BqgddL43.js index f1e1aaac..0f516f1c 100644 --- a/_nuxt/D_KpN4FA.js +++ b/_nuxt/BqgddL43.js @@ -1 +1 @@ -import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./XRF4b_vJ.js";const f=["id"],l=["href"],k=i({__name:"ProseH3",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h3)});return(e,m)=>(o(),n("h3",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./ZAsafoXZ.js";const f=["id"],l=["href"],k=i({__name:"ProseH3",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h3)});return(e,m)=>(o(),n("h3",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/DSnkYcuZ.js b/_nuxt/BtPiIyIH.js similarity index 71% rename from _nuxt/DSnkYcuZ.js rename to _nuxt/BtPiIyIH.js index 301e03f7..a30f3835 100644 --- a/_nuxt/DSnkYcuZ.js +++ b/_nuxt/BtPiIyIH.js @@ -1 +1 @@ -import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./XRF4b_vJ.js";const f=["id"],l=["href"],k=i({__name:"ProseH5",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h5)});return(e,m)=>(o(),n("h5",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./ZAsafoXZ.js";const f=["id"],l=["href"],k=i({__name:"ProseH5",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h5)});return(e,m)=>(o(),n("h5",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/zZgutmkc.js b/_nuxt/BtkuLwOR.js similarity index 65% rename from _nuxt/zZgutmkc.js rename to _nuxt/BtkuLwOR.js index e8da45f5..3d18fbe0 100644 --- a/_nuxt/zZgutmkc.js +++ b/_nuxt/BtkuLwOR.js @@ -1 +1 @@ -import{l as o,b as t,c,L as r}from"./XRF4b_vJ.js";const s={};function l(e,n){return t(),c("blockquote",null,[r(e.$slots,"default")])}const f=o(s,[["render",l]]);export{f as default}; +import{l as o,b as t,c,L as r}from"./ZAsafoXZ.js";const s={};function l(e,n){return t(),c("blockquote",null,[r(e.$slots,"default")])}const f=o(s,[["render",l]]);export{f as default}; diff --git a/_nuxt/CBNC_GX-.js b/_nuxt/C4nES0Wi.js similarity index 97% rename from _nuxt/CBNC_GX-.js rename to _nuxt/C4nES0Wi.js index 566dbffe..1f3d080b 100644 --- a/_nuxt/CBNC_GX-.js +++ b/_nuxt/C4nES0Wi.js @@ -1 +1 @@ -import{l as a,D as o,b as s,c as i,e,t as r,p as u,i as l}from"./XRF4b_vJ.js";const c=t=>(u("data-v-6fdef64d"),t=t(),l(),t),d={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},p=c(()=>e("div",{class:"fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"},null,-1)),h={class:"max-w-520px text-center"},g=["textContent"],b=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const n=t;return o({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(m,x)=>(s(),i("div",d,[p,e("div",h,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:r(t.statusCode)},null,8,g),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:r(t.description)},null,8,b)])]))}},k=a(f,[["__scopeId","data-v-6fdef64d"]]);export{k as default}; +import{l as a,D as o,b as s,c as i,e,t as r,p as u,i as l}from"./ZAsafoXZ.js";const c=t=>(u("data-v-6fdef64d"),t=t(),l(),t),d={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},p=c(()=>e("div",{class:"fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"},null,-1)),h={class:"max-w-520px text-center"},g=["textContent"],b=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const n=t;return o({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(m,x)=>(s(),i("div",d,[p,e("div",h,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:r(t.statusCode)},null,8,g),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:r(t.description)},null,8,b)])]))}},k=a(f,[["__scopeId","data-v-6fdef64d"]]);export{k as default}; diff --git a/_nuxt/BphJWFSF.js b/_nuxt/C7iq-ot0.js similarity index 74% rename from _nuxt/BphJWFSF.js rename to _nuxt/C7iq-ot0.js index 9a3713e8..dff94f93 100644 --- a/_nuxt/BphJWFSF.js +++ b/_nuxt/C7iq-ot0.js @@ -1 +1 @@ -import{_ as p}from"./CbIcpiPE.js";import{_ as d}from"./BN4hubtl.js";import f from"./CM4QiD5h.js";import u from"./C7ePx9hc.js";import{f as h}from"./CeI02lA4.js";import{c as g,g as e,w as s,b as x,e as o,t as a,j as v,I as b}from"./XRF4b_vJ.js";import"./B5fxoaT1.js";import"./Dnd51l0P.js";import"./Bs0KA79C.js";import"./CRDyED6e.js";import"./C-v3KzvZ.js";import"./DVDnHXyh.js";const w={class:"p-8 md:p-0 md:pb-12"},y={class:"prose prose-invert prose-xl max-w-screen-lg mx-auto prose-headings:font-bold"},k={class:"font-bold mb-4"},C={class:"text-sm"},I=["href"],T={__name:"[...slug]",setup(N){function n(r){return decodeURIComponent(r).split("https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/")[1]}return(r,i)=>{const c=p,m=d,_=f,l=u;return x(),g("div",w,[e(l,null,{default:s(({doc:t})=>[e(m,{class:"hidden md:block"},{image:s(()=>[e(c,{provider:"cloudinary",src:n(t.image),alt:t.title,width:"1440",height:"230",fit:"crop",loading:"eager",sizes:"sm:100vw"},null,8,["src","alt"])]),_:2},1024),o("article",y,[o("h1",k,a(t.title),1),o("p",C,[v(a(b(h)(new Date(t.date),"MMM dd, yyyy"))+" at ",1),o("a",{href:t.canonical_url,target:"_blank"},a(t.canonical_url),9,I)]),e(_,{value:t},null,8,["value"])])]),_:1})])}}};export{T as default}; +import{_ as p}from"./ITNRvgtr.js";import{_ as d}from"./BCkGF8ol.js";import f from"./DfsoDfS3.js";import u from"./DNoJqnvj.js";import{f as h}from"./CeI02lA4.js";import{c as g,g as e,w as s,b as x,e as o,t as a,j as v,I as b}from"./ZAsafoXZ.js";import"./DY4Qxm47.js";import"./Dnd51l0P.js";import"./ETHpkkS0.js";import"./IFCu-2Bx.js";import"./C-v3KzvZ.js";import"./Bg8nkQWz.js";const w={class:"p-8 md:p-0 md:pb-12"},y={class:"prose prose-invert prose-xl max-w-screen-lg mx-auto prose-headings:font-bold"},k={class:"font-bold mb-4"},C={class:"text-sm"},I=["href"],T={__name:"[...slug]",setup(N){function n(r){return decodeURIComponent(r).split("https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/")[1]}return(r,i)=>{const c=p,m=d,_=f,l=u;return x(),g("div",w,[e(l,null,{default:s(({doc:t})=>[e(m,{class:"hidden md:block"},{image:s(()=>[e(c,{provider:"cloudinary",src:n(t.image),alt:t.title,width:"1440",height:"230",fit:"crop",loading:"eager",sizes:"sm:100vw"},null,8,["src","alt"])]),_:2},1024),o("article",y,[o("h1",k,a(t.title),1),o("p",C,[v(a(b(h)(new Date(t.date),"MMM dd, yyyy"))+" at ",1),o("a",{href:t.canonical_url,target:"_blank"},a(t.canonical_url),9,I)]),e(_,{value:t},null,8,["value"])])]),_:1})])}}};export{T as default}; diff --git a/_nuxt/DgAI_Kxh.js b/_nuxt/CA3tJJS7.js similarity index 53% rename from _nuxt/DgAI_Kxh.js rename to _nuxt/CA3tJJS7.js index d2553fe8..eee0c5de 100644 --- a/_nuxt/DgAI_Kxh.js +++ b/_nuxt/CA3tJJS7.js @@ -1 +1 @@ -import{l as e,b as r,c}from"./XRF4b_vJ.js";const o={};function t(n,s){return r(),c("hr")}const _=e(o,[["render",t]]);export{_ as default}; +import{l as e,b as r,c}from"./ZAsafoXZ.js";const o={};function t(n,s){return r(),c("hr")}const _=e(o,[["render",t]]);export{_ as default}; diff --git a/_nuxt/CBaLZRFI.js b/_nuxt/CBaLZRFI.js new file mode 100644 index 00000000..3a678b3f --- /dev/null +++ b/_nuxt/CBaLZRFI.js @@ -0,0 +1 @@ +import{_ as o}from"./BCkGF8ol.js";import"./DY4Qxm47.js";import"./Dnd51l0P.js";import"./ZAsafoXZ.js";import"./ETHpkkS0.js";export{o as default}; diff --git a/_nuxt/Cxnwe0dV.js b/_nuxt/CHSZTZL8.js similarity index 71% rename from _nuxt/Cxnwe0dV.js rename to _nuxt/CHSZTZL8.js index 1df3c3ba..a15e9862 100644 --- a/_nuxt/Cxnwe0dV.js +++ b/_nuxt/CHSZTZL8.js @@ -1 +1 @@ -import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./XRF4b_vJ.js";const f=["id"],l=["href"],k=i({__name:"ProseH4",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h4)});return(e,m)=>(o(),n("h4",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./ZAsafoXZ.js";const f=["id"],l=["href"],k=i({__name:"ProseH4",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h4)});return(e,m)=>(o(),n("h4",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/CEqY_cML.js b/_nuxt/CRMRfDH6.js similarity index 77% rename from _nuxt/CEqY_cML.js rename to _nuxt/CRMRfDH6.js index 79d57d9a..baf1aea7 100644 --- a/_nuxt/CEqY_cML.js +++ b/_nuxt/CRMRfDH6.js @@ -1 +1 @@ -import{d as n,Q as e}from"./XRF4b_vJ.js";const r=n({name:"DocumentDrivenEmpty",props:{value:{type:Object,required:!0}},render({value:t}){return e("div",void 0,[e("p","Document is empty"),e("p",`Add content to it by opening ${t._source}/${t._file} file.`)])}});export{r as default}; +import{d as n,Q as e}from"./ZAsafoXZ.js";const r=n({name:"DocumentDrivenEmpty",props:{value:{type:Object,required:!0}},render({value:t}){return e("div",void 0,[e("p","Document is empty"),e("p",`Add content to it by opening ${t._source}/${t._file} file.`)])}});export{r as default}; diff --git a/_nuxt/DYhIpFu0.js b/_nuxt/CTYUGvGO.js similarity index 83% rename from _nuxt/DYhIpFu0.js rename to _nuxt/CTYUGvGO.js index a251ca45..e41fada1 100644 --- a/_nuxt/DYhIpFu0.js +++ b/_nuxt/CTYUGvGO.js @@ -1 +1 @@ -import"./B5fxoaT1.js";import{_ as x}from"./CbIcpiPE.js";import{d as w,H as y,b as s,c as e,f as d,g as a,w as i,e as o,n as m,I as b,F as k,K as C,t as p,E as N}from"./XRF4b_vJ.js";import $ from"./DhTXWxNA.js";import{r as v}from"./Bs0KA79C.js";import"./Dnd51l0P.js";import"./DVDnHXyh.js";const B={class:"px-4 md:px-8 mb-8"},L={key:0,class:"title inline-block mb-4"},V={class:"font-bold text-xl line-clamp-2"},z={key:0,class:"line-clamp-2 text-slate-400 text-sm"},E=o("p",null,"No articles found.",-1),j=w({__name:"articles",props:["limit","small"],setup(l){const n=l,r={path:"/writing",sort:[{date:-1}],where:[{_dir:{$ne:""}},{_empty:{$ne:!0}}]};n.limit&&(r.limit=n.limit);const _=y(()=>n.small?"grid grid-cols-1 md:grid-cols-1 gap-6":"grid grid-cols-1 md:grid-cols-3 gap-6");return(c,F)=>{const u=x,f=N,g=$;return s(),e("div",B,[c.$slots.title?(s(),e("h3",L,[v(c.$slots,"title",{unwrap:"p"})])):d("",!0),a(g,{query:r},{default:i(({list:h})=>[o("ul",{class:m(b(_))},[(s(!0),e(k,null,C(h,t=>(s(),e("li",{key:t._path,class:"mb-4"},[a(f,{to:t._path,class:m(["md:flex",l.small?"md:flex-row md:space-x-4":"flex-col"])},{default:i(()=>[a(u,{provider:"cloudinary",src:t.image,sizes:"sm:564px",alt:t._path||"",class:m(["mb-2 fancy-image",l.small?"w-full md:w-64":"w-full"]),width:"564",height:"318",fit:"cover"},null,8,["src","alt","class"]),o("div",null,[o("p",V,p(t.title),1),l.small?(s(),e("p",z,p(t.description),1)):d("",!0)])]),_:2},1032,["to","class"])]))),128))],2)]),"not-found":i(()=>[E]),_:1})])}}});export{j as default}; +import"./DY4Qxm47.js";import{_ as x}from"./ITNRvgtr.js";import{d as w,H as y,b as s,c as e,f as d,g as a,w as i,e as o,n as m,I as b,F as k,K as C,t as p,E as N}from"./ZAsafoXZ.js";import $ from"./CVVxf02X.js";import{r as v}from"./ETHpkkS0.js";import"./Dnd51l0P.js";import"./Bg8nkQWz.js";const B={class:"px-4 md:px-8 mb-8"},L={key:0,class:"title inline-block mb-4"},V={class:"font-bold text-xl line-clamp-2"},z={key:0,class:"line-clamp-2 text-slate-400 text-sm"},E=o("p",null,"No articles found.",-1),j=w({__name:"articles",props:["limit","small"],setup(l){const n=l,r={path:"/writing",sort:[{date:-1}],where:[{_dir:{$ne:""}},{_empty:{$ne:!0}}]};n.limit&&(r.limit=n.limit);const _=y(()=>n.small?"grid grid-cols-1 md:grid-cols-1 gap-6":"grid grid-cols-1 md:grid-cols-3 gap-6");return(c,F)=>{const u=x,f=N,g=$;return s(),e("div",B,[c.$slots.title?(s(),e("h3",L,[v(c.$slots,"title",{unwrap:"p"})])):d("",!0),a(g,{query:r},{default:i(({list:h})=>[o("ul",{class:m(b(_))},[(s(!0),e(k,null,C(h,t=>(s(),e("li",{key:t._path,class:"mb-4"},[a(f,{to:t._path,class:m(["md:flex",l.small?"md:flex-row md:space-x-4":"flex-col"])},{default:i(()=>[a(u,{provider:"cloudinary",src:t.image,sizes:"sm:564px",alt:t._path||"",class:m(["mb-2 fancy-image",l.small?"w-full md:w-64":"w-full"]),width:"564",height:"318",fit:"cover"},null,8,["src","alt","class"]),o("div",null,[o("p",V,p(t.title),1),l.small?(s(),e("p",z,p(t.description),1)):d("",!0)])]),_:2},1032,["to","class"])]))),128))],2)]),"not-found":i(()=>[E]),_:1})])}}});export{j as default}; diff --git a/_nuxt/BdFen9Bg.js b/_nuxt/CTxtRCoO.js similarity index 65% rename from _nuxt/BdFen9Bg.js rename to _nuxt/CTxtRCoO.js index d61d41fe..ca7ac46e 100644 --- a/_nuxt/BdFen9Bg.js +++ b/_nuxt/CTxtRCoO.js @@ -1 +1 @@ -import{l as r,b as o,c as t,L as n}from"./XRF4b_vJ.js";const s={};function c(e,a){return o(),t("strong",null,[n(e.$slots,"default")])}const f=r(s,[["render",c]]);export{f as default}; +import{l as r,b as o,c as t,L as n}from"./ZAsafoXZ.js";const s={};function c(e,a){return o(),t("strong",null,[n(e.$slots,"default")])}const f=r(s,[["render",c]]);export{f as default}; diff --git a/_nuxt/BB2VkLiz.js b/_nuxt/CUHVqKjL.js similarity index 64% rename from _nuxt/BB2VkLiz.js rename to _nuxt/CUHVqKjL.js index f8e86fbb..b3c2d366 100644 --- a/_nuxt/BB2VkLiz.js +++ b/_nuxt/CUHVqKjL.js @@ -1 +1 @@ -import{l as r,b as o,c as s,L as t}from"./XRF4b_vJ.js";const c={};function l(e,n){return o(),s("ul",null,[t(e.$slots,"default")])}const f=r(c,[["render",l]]);export{f as default}; +import{l as r,b as o,c as s,L as t}from"./ZAsafoXZ.js";const c={};function l(e,n){return o(),s("ul",null,[t(e.$slots,"default")])}const f=r(c,[["render",l]]);export{f as default}; diff --git a/_nuxt/CL5bECpF.js b/_nuxt/CUq17OQK.js similarity index 64% rename from _nuxt/CL5bECpF.js rename to _nuxt/CUq17OQK.js index fb3d17ab..b8b03a1b 100644 --- a/_nuxt/CL5bECpF.js +++ b/_nuxt/CUq17OQK.js @@ -1 +1 @@ -import{l as r,b as o,c as s,L as t}from"./XRF4b_vJ.js";const c={};function n(e,a){return o(),s("p",null,[t(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; +import{l as r,b as o,c as s,L as t}from"./ZAsafoXZ.js";const c={};function n(e,a){return o(),s("p",null,[t(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; diff --git a/_nuxt/DhTXWxNA.js b/_nuxt/CVVxf02X.js similarity index 84% rename from _nuxt/DhTXWxNA.js rename to _nuxt/CVVxf02X.js index a853c442..966c73a2 100644 --- a/_nuxt/DhTXWxNA.js +++ b/_nuxt/CVVxf02X.js @@ -1 +1 @@ -import m from"./DVDnHXyh.js";import{d as c,O as l,Q as r}from"./XRF4b_vJ.js";const f=(u,t)=>r("pre",null,JSON.stringify({message:"You should use slots with ",slot:u,data:t},null,2)),h=c({name:"ContentList",props:{path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0}},render(u){const t=l(),{path:p,query:a}=u,d={...a||{},path:p||(a==null?void 0:a.path)||"/"};return r(m,d,{default:t!=null&&t.default?({data:e,refresh:o,isPartial:n})=>t.default({list:e,refresh:o,isPartial:n,...this.$attrs}):e=>f("default",e.data),empty:e=>t!=null&&t.empty?t.empty(e):f("default",e==null?void 0:e.data),"not-found":e=>{var o;return t!=null&&t["not-found"]?(o=t==null?void 0:t["not-found"])==null?void 0:o.call(t,e):f("not-found",e==null?void 0:e.data)}})}}),_=h;export{_ as default}; +import m from"./Bg8nkQWz.js";import{d as c,O as l,Q as r}from"./ZAsafoXZ.js";const f=(u,t)=>r("pre",null,JSON.stringify({message:"You should use slots with ",slot:u,data:t},null,2)),h=c({name:"ContentList",props:{path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0}},render(u){const t=l(),{path:p,query:a}=u,d={...a||{},path:p||(a==null?void 0:a.path)||"/"};return r(m,d,{default:t!=null&&t.default?({data:e,refresh:o,isPartial:n})=>t.default({list:e,refresh:o,isPartial:n,...this.$attrs}):e=>f("default",e.data),empty:e=>t!=null&&t.empty?t.empty(e):f("default",e==null?void 0:e.data),"not-found":e=>{var o;return t!=null&&t["not-found"]?(o=t==null?void 0:t["not-found"])==null?void 0:o.call(t,e):f("not-found",e==null?void 0:e.data)}})}}),_=h;export{_ as default}; diff --git a/_nuxt/CXEfJix5.js b/_nuxt/CXEfJix5.js deleted file mode 100644 index f7b66b0e..00000000 --- a/_nuxt/CXEfJix5.js +++ /dev/null @@ -1 +0,0 @@ -import t from"./C7ePx9hc.js";import{l as r,G as _,b as c}from"./XRF4b_vJ.js";import"./CM4QiD5h.js";import"./CRDyED6e.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";import"./DVDnHXyh.js";const n={};function e(m,s){const o=t;return c(),_(o)}const x=r(n,[["render",e]]);export{x as default}; diff --git a/_nuxt/BhlzmK7H.js b/_nuxt/CfHTnMbA.js similarity index 72% rename from _nuxt/BhlzmK7H.js rename to _nuxt/CfHTnMbA.js index fc180b43..d8a49e55 100644 --- a/_nuxt/BhlzmK7H.js +++ b/_nuxt/CfHTnMbA.js @@ -1 +1 @@ -import{_ as n}from"./CnFyItyq.js";import{_ as l}from"./dMipb99y.js";import{d as m,x as c,H as p,b as u,c as _,g as s,I as r,F as d}from"./XRF4b_vJ.js";import"./B5fxoaT1.js";import"./Dnd51l0P.js";import"./CbIcpiPE.js";import"./DhTXWxNA.js";import"./DVDnHXyh.js";import"./Bs0KA79C.js";const F=m({__name:"[...slug]",setup(f){const a=c().params.slug,t=p(()=>{let e="";switch(a[0]){case"tim":e="Personal videos";break;case"alive-and-kicking":e="Alive and Kicking videos";break;case"live-hygraph":e="Hygraph live streams";break;case"hygraph":e="Hygraph videos";break;case"live-uniform":e="Uniform live streams";break;case"misc-streams":e="Personal live streams";break;case"mp":e="Middleware Productions";break;case"uniform":e="Uniform Videos";break}return e});return(e,g)=>{const o=n,i=l;return u(),_(d,null,[s(o,{tag:"h1",title:r(t)},null,8,["title"]),s(i,{small:!1,folder:r(a),extras:!1},null,8,["folder"])],64)}}});export{F as default}; +import{_ as n}from"./B68gSBWJ.js";import{_ as l}from"./KCTYD4Gn.js";import{d as m,x as c,H as p,b as u,c as _,g as s,I as r,F as d}from"./ZAsafoXZ.js";import"./DY4Qxm47.js";import"./Dnd51l0P.js";import"./ITNRvgtr.js";import"./CVVxf02X.js";import"./Bg8nkQWz.js";import"./ETHpkkS0.js";const F=m({__name:"[...slug]",setup(f){const a=c().params.slug,t=p(()=>{let e="";switch(a[0]){case"tim":e="Personal videos";break;case"alive-and-kicking":e="Alive and Kicking videos";break;case"live-hygraph":e="Hygraph live streams";break;case"hygraph":e="Hygraph videos";break;case"live-uniform":e="Uniform live streams";break;case"misc-streams":e="Personal live streams";break;case"mp":e="Middleware Productions";break;case"uniform":e="Uniform Videos";break}return e});return(e,g)=>{const o=n,i=l;return u(),_(d,null,[s(o,{tag:"h1",title:r(t)},null,8,["title"]),s(i,{small:!1,folder:r(a),extras:!1},null,8,["folder"])],64)}}});export{F as default}; diff --git a/_nuxt/tjftRvHX.js b/_nuxt/Cg5RESyK.js similarity index 81% rename from _nuxt/tjftRvHX.js rename to _nuxt/Cg5RESyK.js index e5d5ce52..f51dc618 100644 --- a/_nuxt/tjftRvHX.js +++ b/_nuxt/Cg5RESyK.js @@ -1 +1 @@ -import{_ as c}from"./CbIcpiPE.js";import{d as u,v as i,H as h,a2 as m,P as l,a3 as d,b as g,G as p,I as r,J as f}from"./XRF4b_vJ.js";const w=u({__name:"ProseImg",props:{src:{type:String,default:""},alt:{type:String,default:""},width:{type:[String,Number],default:void 0},height:{type:[String,Number],default:void 0}},setup(e){const n=i().public.mdc.useNuxtImage?c:"img",t=e,o=h(()=>{var a;if((a=t.src)!=null&&a.startsWith("/")&&!t.src.startsWith("//")){const s=m(l(i().app.baseURL));if(s!=="/"&&!t.src.startsWith(s))return d(s,t.src)}return t.src});return(a,s)=>(g(),p(f(r(n)),{src:r(o),alt:e.alt,width:e.width,height:e.height},null,8,["src","alt","width","height"]))}});export{w as default}; +import{_ as c}from"./ITNRvgtr.js";import{d as u,v as i,H as h,a2 as m,P as l,a3 as d,b as g,G as p,I as r,J as f}from"./ZAsafoXZ.js";const w=u({__name:"ProseImg",props:{src:{type:String,default:""},alt:{type:String,default:""},width:{type:[String,Number],default:void 0},height:{type:[String,Number],default:void 0}},setup(e){const n=i().public.mdc.useNuxtImage?c:"img",t=e,o=h(()=>{var a;if((a=t.src)!=null&&a.startsWith("/")&&!t.src.startsWith("//")){const s=m(l(i().app.baseURL));if(s!=="/"&&!t.src.startsWith(s))return d(s,t.src)}return t.src});return(a,s)=>(g(),p(f(r(n)),{src:r(o),alt:e.alt,width:e.width,height:e.height},null,8,["src","alt","width","height"]))}});export{w as default}; diff --git a/_nuxt/Cp929Rer.js b/_nuxt/CmPckewG.js similarity index 81% rename from _nuxt/Cp929Rer.js rename to _nuxt/CmPckewG.js index 392b0acf..fd93c2eb 100644 --- a/_nuxt/Cp929Rer.js +++ b/_nuxt/CmPckewG.js @@ -1 +1 @@ -import{d as a,b as n,G as o,w as s,L as f,E as u}from"./XRF4b_vJ.js";const l=a({__name:"ProseA",props:{href:{type:String,default:""},target:{type:String,default:void 0,required:!1}},setup(e){return(t,c)=>{const r=u;return n(),o(r,{href:e.href,target:e.target},{default:s(()=>[f(t.$slots,"default")]),_:3},8,["href","target"])}}});export{l as default}; +import{d as a,b as n,G as o,w as s,L as f,E as u}from"./ZAsafoXZ.js";const l=a({__name:"ProseA",props:{href:{type:String,default:""},target:{type:String,default:void 0,required:!1}},setup(e){return(t,c)=>{const r=u;return n(),o(r,{href:e.href,target:e.target},{default:s(()=>[f(t.$slots,"default")]),_:3},8,["href","target"])}}});export{l as default}; diff --git a/_nuxt/CnHPgHnb.js b/_nuxt/CnHPgHnb.js deleted file mode 100644 index 34c5760b..00000000 --- a/_nuxt/CnHPgHnb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./BN4hubtl.js";import"./B5fxoaT1.js";import"./Dnd51l0P.js";import"./XRF4b_vJ.js";import"./Bs0KA79C.js";export{o as default}; diff --git a/_nuxt/Co6DaCUo.js b/_nuxt/Co6DaCUo.js deleted file mode 100644 index 17503c80..00000000 --- a/_nuxt/Co6DaCUo.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./dMipb99y.js";import"./B5fxoaT1.js";import"./Dnd51l0P.js";import"./XRF4b_vJ.js";import"./CbIcpiPE.js";import"./DhTXWxNA.js";import"./DVDnHXyh.js";import"./Bs0KA79C.js";export{o as default}; diff --git a/_nuxt/a3JeNMBb.js b/_nuxt/CqwHQiUm.js similarity index 82% rename from _nuxt/a3JeNMBb.js rename to _nuxt/CqwHQiUm.js index 1c9d002e..b98c442c 100644 --- a/_nuxt/a3JeNMBb.js +++ b/_nuxt/CqwHQiUm.js @@ -1 +1 @@ -import"./B5fxoaT1.js";import{r as o}from"./Bs0KA79C.js";import{l as a,b as i,c as r,f as t,e as s}from"./XRF4b_vJ.js";import"./Dnd51l0P.js";const d={},m={class:"p-4 md:p-8 mb-8"},n=s("h3",{class:"title page-title inline-block mb-4"},"Speaker media",-1),l={class:"media-grid my-12"},c={class:"media-1"},p={class:"media-2"},_={class:"media-3"};function u(e,f){return i(),r("div",m,[n,e.$slots.descripiton?o(e.$slots,"descripiton",{key:0}):t("",!0),s("figure",l,[s("div",c,[e.$slots.image1?o(e.$slots,"image1",{key:0,unwrap:"p"}):t("",!0)]),s("div",p,[e.$slots.image2?o(e.$slots,"image2",{key:0,unwrap:"p"}):t("",!0)]),s("div",_,[e.$slots.image3?o(e.$slots,"image3",{key:0,unwrap:"p"}):t("",!0)])])])}const y=a(d,[["render",u]]);export{y as default}; +import"./DY4Qxm47.js";import{r as o}from"./ETHpkkS0.js";import{l as a,b as i,c as r,f as t,e as s}from"./ZAsafoXZ.js";import"./Dnd51l0P.js";const d={},m={class:"p-4 md:p-8 mb-8"},n=s("h3",{class:"title page-title inline-block mb-4"},"Speaker media",-1),l={class:"media-grid my-12"},c={class:"media-1"},p={class:"media-2"},_={class:"media-3"};function u(e,f){return i(),r("div",m,[n,e.$slots.descripiton?o(e.$slots,"descripiton",{key:0}):t("",!0),s("figure",l,[s("div",c,[e.$slots.image1?o(e.$slots,"image1",{key:0,unwrap:"p"}):t("",!0)]),s("div",p,[e.$slots.image2?o(e.$slots,"image2",{key:0,unwrap:"p"}):t("",!0)]),s("div",_,[e.$slots.image3?o(e.$slots,"image3",{key:0,unwrap:"p"}):t("",!0)])])])}const y=a(d,[["render",u]]);export{y as default}; diff --git a/_nuxt/CyG0l8cR.js b/_nuxt/CyG0l8cR.js new file mode 100644 index 00000000..68ef33c1 --- /dev/null +++ b/_nuxt/CyG0l8cR.js @@ -0,0 +1 @@ +import{_ as m}from"./B0YuqmE5.js";import"./ZAsafoXZ.js";export{m as default}; diff --git a/_nuxt/zSbY1IBA.js b/_nuxt/Czc1t-wM.js similarity index 63% rename from _nuxt/zSbY1IBA.js rename to _nuxt/Czc1t-wM.js index 6e081ffc..526733b0 100644 --- a/_nuxt/zSbY1IBA.js +++ b/_nuxt/Czc1t-wM.js @@ -1 +1 @@ -import s from"./BUmnHLhL.js";import{d as o,O as m,H as p,V as u}from"./XRF4b_vJ.js";import"./B5fxoaT1.js";import"./Dnd51l0P.js";const l=o({name:"Markdown",extends:s,setup(t){const{parent:e}=u(),{between:n,default:r}=m(),a=p(()=>typeof t.unwrap=="string"?t.unwrap.split(" "):["*"]);return{fallbackSlot:r,tags:a,between:n,parent:e}}});export{l as default}; +import s from"./DPiVMe_u.js";import{d as o,O as m,H as p,V as u}from"./ZAsafoXZ.js";import"./DY4Qxm47.js";import"./Dnd51l0P.js";const l=o({name:"Markdown",extends:s,setup(t){const{parent:e}=u(),{between:n,default:r}=m(),a=p(()=>typeof t.unwrap=="string"?t.unwrap.split(" "):["*"]);return{fallbackSlot:r,tags:a,between:n,parent:e}}});export{l as default}; diff --git a/_nuxt/D0V36zTW.js b/_nuxt/D0V36zTW.js new file mode 100644 index 00000000..a1103c35 --- /dev/null +++ b/_nuxt/D0V36zTW.js @@ -0,0 +1 @@ +import t from"./DNoJqnvj.js";import{l as r,G as _,b as c}from"./ZAsafoXZ.js";import"./DfsoDfS3.js";import"./IFCu-2Bx.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";import"./Bg8nkQWz.js";const n={};function e(m,s){const o=t;return c(),_(o)}const x=r(n,[["render",e]]);export{x as default}; diff --git a/_nuxt/C7Kyp-qE.js b/_nuxt/D9lwLfCa.js similarity index 71% rename from _nuxt/C7Kyp-qE.js rename to _nuxt/D9lwLfCa.js index 9577d449..467a5e98 100644 --- a/_nuxt/C7Kyp-qE.js +++ b/_nuxt/D9lwLfCa.js @@ -1 +1 @@ -import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./XRF4b_vJ.js";const f=["id"],l=["href"],k=i({__name:"ProseH2",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h2)});return(e,m)=>(o(),n("h2",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./ZAsafoXZ.js";const f=["id"],l=["href"],k=i({__name:"ProseH2",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h2)});return(e,m)=>(o(),n("h2",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/DBOe6xVj.js b/_nuxt/DBOe6xVj.js new file mode 100644 index 00000000..37c2d274 --- /dev/null +++ b/_nuxt/DBOe6xVj.js @@ -0,0 +1 @@ +import{_ as o}from"./KCTYD4Gn.js";import"./DY4Qxm47.js";import"./Dnd51l0P.js";import"./ZAsafoXZ.js";import"./ITNRvgtr.js";import"./CVVxf02X.js";import"./Bg8nkQWz.js";import"./ETHpkkS0.js";export{o as default}; diff --git a/_nuxt/DD8qZ3hl.js b/_nuxt/DD8qZ3hl.js deleted file mode 100644 index 8abded2a..00000000 --- a/_nuxt/DD8qZ3hl.js +++ /dev/null @@ -1 +0,0 @@ -import t from"./C7ePx9hc.js";import{l as r,G as c,b as n}from"./XRF4b_vJ.js";import"./CM4QiD5h.js";import"./CRDyED6e.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";import"./DVDnHXyh.js";const e={};function m(_,i){const o=t;return n(),c(o)}const u=r(e,[["render",m]]);export{u as default}; diff --git a/_nuxt/D3l4VGev.js b/_nuxt/DG9AcW2j.js similarity index 65% rename from _nuxt/D3l4VGev.js rename to _nuxt/DG9AcW2j.js index aaf7c98d..2d13bbaa 100644 --- a/_nuxt/D3l4VGev.js +++ b/_nuxt/DG9AcW2j.js @@ -1 +1 @@ -import{l as r,b as t,c as o,L as s}from"./XRF4b_vJ.js";const a={};function c(e,n){return t(),o("thead",null,[s(e.$slots,"default")])}const d=r(a,[["render",c]]);export{d as default}; +import{l as r,b as t,c as o,L as s}from"./ZAsafoXZ.js";const a={};function c(e,n){return t(),o("thead",null,[s(e.$slots,"default")])}const d=r(a,[["render",c]]);export{d as default}; diff --git a/_nuxt/U7Zt4TCY.js b/_nuxt/DKOL77CZ.js similarity index 71% rename from _nuxt/U7Zt4TCY.js rename to _nuxt/DKOL77CZ.js index 77afbe26..cf4a6ef3 100644 --- a/_nuxt/U7Zt4TCY.js +++ b/_nuxt/DKOL77CZ.js @@ -1 +1 @@ -import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./XRF4b_vJ.js";const f=["id"],l=["href"],k=i({__name:"ProseH6",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h6)});return(e,m)=>(o(),n("h6",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; +import{d as i,v as c,H as p,b as o,c as n,I as u,L as t}from"./ZAsafoXZ.js";const f=["id"],l=["href"],k=i({__name:"ProseH6",props:{id:{}},setup(r){const a=r,{headings:s}=c().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h6)});return(e,m)=>(o(),n("h6",{id:e.id},[e.id&&u(d)?(o(),n("a",{key:0,href:`#${e.id}`},[t(e.$slots,"default")],8,l)):t(e.$slots,"default",{key:1})],8,f))}});export{k as default}; diff --git a/_nuxt/C7ePx9hc.js b/_nuxt/DNoJqnvj.js similarity index 93% rename from _nuxt/C7ePx9hc.js rename to _nuxt/DNoJqnvj.js index c970ab39..0cdaa052 100644 --- a/_nuxt/C7ePx9hc.js +++ b/_nuxt/DNoJqnvj.js @@ -1 +1 @@ -import{I as d,M as D,x as y,N as w,D as H,v as g,d as x,O as S,P as _,Q as u}from"./XRF4b_vJ.js";import b from"./CM4QiD5h.js";import q from"./DVDnHXyh.js";import"./CRDyED6e.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";const a=(s,p=y())=>{const e=d(s),f=g();D(()=>d(s),(n=e)=>{if(!p.path||!n)return;const t=Object.assign({},(n==null?void 0:n.head)||{});t.meta=[...t.meta||[]],t.link=[...t.link||[]];const r=t.title||(n==null?void 0:n.title);r&&(t.title=r),f.public.content.host;const c=(t==null?void 0:t.description)||(n==null?void 0:n.description);c&&t.meta.filter(l=>l.name==="description").length===0&&t.meta.push({name:"description",content:c}),t!=null&&t.image||(n==null||n.image),w(()=>H(t))},{immediate:!0})},O=x({name:"ContentDoc",props:{tag:{type:String,required:!1,default:"div"},excerpt:{type:Boolean,default:!1},path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0},head:{type:Boolean,required:!1,default:void 0}},render(s){const{contentHead:p}=g().public.content,e=S(),{tag:f,excerpt:m,path:n,query:t,head:r}=s,c=r===void 0?p:r,l={...t||{},path:n||(t==null?void 0:t.path)||_(y().path),find:"one"},v=(o,i)=>u("pre",null,JSON.stringify({message:"You should use slots with ",slot:o,data:i},null,2));return u(q,l,{default:e!=null&&e.default?({data:o,refresh:i,isPartial:C})=>{var h;return c&&a(o),(h=e.default)==null?void 0:h.call(e,{doc:o,refresh:i,isPartial:C,excerpt:m,...this.$attrs})}:({data:o})=>(c&&a(o),u(b,{value:o,excerpt:m,tag:f,...this.$attrs},{empty:i=>e!=null&&e.empty?e.empty(i):v("default",o)})),empty:o=>{var i;return((i=e==null?void 0:e.empty)==null?void 0:i.call(e,o))||u("p",null,"Document is empty, overwrite this content with #empty slot in .")},"not-found":o=>{var i;return((i=e==null?void 0:e["not-found"])==null?void 0:i.call(e,o))||u("p",null,"Document not found, overwrite this content with #not-found slot in .")}})}}),P=O;export{P as default}; +import{I as d,M as D,x as y,N as w,D as H,v as g,d as x,O as S,P as _,Q as u}from"./ZAsafoXZ.js";import b from"./DfsoDfS3.js";import q from"./Bg8nkQWz.js";import"./IFCu-2Bx.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";const a=(s,p=y())=>{const e=d(s),f=g();D(()=>d(s),(n=e)=>{if(!p.path||!n)return;const t=Object.assign({},(n==null?void 0:n.head)||{});t.meta=[...t.meta||[]],t.link=[...t.link||[]];const r=t.title||(n==null?void 0:n.title);r&&(t.title=r),f.public.content.host;const c=(t==null?void 0:t.description)||(n==null?void 0:n.description);c&&t.meta.filter(l=>l.name==="description").length===0&&t.meta.push({name:"description",content:c}),t!=null&&t.image||(n==null||n.image),w(()=>H(t))},{immediate:!0})},O=x({name:"ContentDoc",props:{tag:{type:String,required:!1,default:"div"},excerpt:{type:Boolean,default:!1},path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0},head:{type:Boolean,required:!1,default:void 0}},render(s){const{contentHead:p}=g().public.content,e=S(),{tag:f,excerpt:m,path:n,query:t,head:r}=s,c=r===void 0?p:r,l={...t||{},path:n||(t==null?void 0:t.path)||_(y().path),find:"one"},v=(o,i)=>u("pre",null,JSON.stringify({message:"You should use slots with ",slot:o,data:i},null,2));return u(q,l,{default:e!=null&&e.default?({data:o,refresh:i,isPartial:C})=>{var h;return c&&a(o),(h=e.default)==null?void 0:h.call(e,{doc:o,refresh:i,isPartial:C,excerpt:m,...this.$attrs})}:({data:o})=>(c&&a(o),u(b,{value:o,excerpt:m,tag:f,...this.$attrs},{empty:i=>e!=null&&e.empty?e.empty(i):v("default",o)})),empty:o=>{var i;return((i=e==null?void 0:e.empty)==null?void 0:i.call(e,o))||u("p",null,"Document is empty, overwrite this content with #empty slot in .")},"not-found":o=>{var i;return((i=e==null?void 0:e["not-found"])==null?void 0:i.call(e,o))||u("p",null,"Document not found, overwrite this content with #not-found slot in .")}})}}),P=O;export{P as default}; diff --git a/_nuxt/DPiVMe_u.js b/_nuxt/DPiVMe_u.js new file mode 100644 index 00000000..f8128ce7 --- /dev/null +++ b/_nuxt/DPiVMe_u.js @@ -0,0 +1 @@ +import{_ as o}from"./DY4Qxm47.js";import{d as t,Q as n}from"./ZAsafoXZ.js";import"./Dnd51l0P.js";const s=t({props:{use:{type:Function,default:void 0},unwrap:{type:[Boolean,String],default:!1}},render(e){return n(o,e)}});export{s as default}; diff --git a/_nuxt/DjRgFLIl.js b/_nuxt/DUyTP6fQ.js similarity index 64% rename from _nuxt/DjRgFLIl.js rename to _nuxt/DUyTP6fQ.js index 4b1a71aa..9810667f 100644 --- a/_nuxt/DjRgFLIl.js +++ b/_nuxt/DUyTP6fQ.js @@ -1 +1 @@ -import{l as r,b as t,c as o,L as s}from"./XRF4b_vJ.js";const c={};function n(e,a){return t(),o("td",null,[s(e.$slots,"default")])}const d=r(c,[["render",n]]);export{d as default}; +import{l as r,b as t,c as o,L as s}from"./ZAsafoXZ.js";const c={};function n(e,a){return t(),o("td",null,[s(e.$slots,"default")])}const d=r(c,[["render",n]]);export{d as default}; diff --git a/_nuxt/D-84Lps2.js b/_nuxt/DWI8ydmZ.js similarity index 53% rename from _nuxt/D-84Lps2.js rename to _nuxt/DWI8ydmZ.js index 0d8f8360..b1c7840b 100644 --- a/_nuxt/D-84Lps2.js +++ b/_nuxt/DWI8ydmZ.js @@ -1 +1 @@ -import"./B5fxoaT1.js";import{r as o}from"./Bs0KA79C.js";import{l as r,b as t,c as s}from"./XRF4b_vJ.js";import"./Dnd51l0P.js";const c={},a={class:"px-4 md:px-8 mb-8"};function m(e,n){return t(),s("div",a,[o(e.$slots,"media")])}const l=r(c,[["render",m]]);export{l as default}; +import"./DY4Qxm47.js";import{r as o}from"./ETHpkkS0.js";import{l as r,b as t,c as s}from"./ZAsafoXZ.js";import"./Dnd51l0P.js";const c={},a={class:"px-4 md:px-8 mb-8"};function m(e,n){return t(),s("div",a,[o(e.$slots,"media")])}const l=r(c,[["render",m]]);export{l as default}; diff --git a/_nuxt/B5fxoaT1.js b/_nuxt/DY4Qxm47.js similarity index 91% rename from _nuxt/B5fxoaT1.js rename to _nuxt/DY4Qxm47.js index f2ce4856..4a0b3577 100644 --- a/_nuxt/B5fxoaT1.js +++ b/_nuxt/DY4Qxm47.js @@ -1 +1 @@ -import{f as i}from"./Dnd51l0P.js";import{d as u,O as f,H as c,Q as l,V as d}from"./XRF4b_vJ.js";const m=u({name:"MDCSlot",functional:!0,props:{name:{type:String,default:"default"},unwrap:{type:[Boolean,String],default:!1},use:{type:Function,default:void 0}},setup(t){const{parent:s}=d(),{default:o}=f(),r=c(()=>typeof t.unwrap=="string"?t.unwrap.split(" "):["*"]);return{fallbackSlot:o,tags:r,parent:s}},render({use:t,unwrap:s,fallbackSlot:o,tags:r,parent:n}){var a;try{let e=t;return typeof t=="string"&&(e=(n==null?void 0:n.slots[t])||((a=n==null?void 0:n.parent)==null?void 0:a.slots[t]),console.warn(`Please set :use="$slots.${t}" in component to enable reactivity`)),e?s?i(e(),r):[e()]:o?o():l("div")}catch{return l("div")}}}),_=m;export{_}; +import{f as i}from"./Dnd51l0P.js";import{d as u,O as f,H as c,Q as l,V as d}from"./ZAsafoXZ.js";const m=u({name:"MDCSlot",functional:!0,props:{name:{type:String,default:"default"},unwrap:{type:[Boolean,String],default:!1},use:{type:Function,default:void 0}},setup(t){const{parent:s}=d(),{default:o}=f(),r=c(()=>typeof t.unwrap=="string"?t.unwrap.split(" "):["*"]);return{fallbackSlot:o,tags:r,parent:s}},render({use:t,unwrap:s,fallbackSlot:o,tags:r,parent:n}){var a;try{let e=t;return typeof t=="string"&&(e=(n==null?void 0:n.slots[t])||((a=n==null?void 0:n.parent)==null?void 0:a.slots[t]),console.warn(`Please set :use="$slots.${t}" in component to enable reactivity`)),e?s?i(e(),r):[e()]:o?o():l("div")}catch{return l("div")}}}),_=m;export{_}; diff --git a/_nuxt/BbY90lsR.js b/_nuxt/DaYxZgJd.js similarity index 82% rename from _nuxt/BbY90lsR.js rename to _nuxt/DaYxZgJd.js index 21c6c0ab..c628396b 100644 --- a/_nuxt/BbY90lsR.js +++ b/_nuxt/DaYxZgJd.js @@ -1 +1 @@ -import{_ as l}from"./vag9yJ5y.js";import{d as n,b as s,G as i,w as r,e as o,n as g,a0 as u,L as d}from"./XRF4b_vJ.js";const h=n({__name:"ProsePre",props:{code:{type:String,default:""},language:{type:String,default:null},filename:{type:String,default:null},highlights:{type:Array,default:()=>[]},meta:{type:String,default:null},class:{type:String,default:null},style:{type:[String,Object],default:null}},setup(e){return(a,f)=>{const t=l;return s(),i(t,{code:e.code,language:e.language,filename:e.filename,highlights:e.highlights,meta:e.meta},{default:r(()=>[o("pre",{class:g(a.$props.class),style:u(e.style)},[d(a.$slots,"default")],6)]),_:3},8,["code","language","filename","highlights","meta"])}}});export{h as default}; +import{_ as l}from"./B0YuqmE5.js";import{d as n,b as s,G as i,w as r,e as o,n as g,a0 as u,L as d}from"./ZAsafoXZ.js";const h=n({__name:"ProsePre",props:{code:{type:String,default:""},language:{type:String,default:null},filename:{type:String,default:null},highlights:{type:Array,default:()=>[]},meta:{type:String,default:null},class:{type:String,default:null},style:{type:[String,Object],default:null}},setup(e){return(a,f)=>{const t=l;return s(),i(t,{code:e.code,language:e.language,filename:e.filename,highlights:e.highlights,meta:e.meta},{default:r(()=>[o("pre",{class:g(a.$props.class),style:u(e.style)},[d(a.$slots,"default")],6)]),_:3},8,["code","language","filename","highlights","meta"])}}});export{h as default}; diff --git a/_nuxt/BmgllKrI.js b/_nuxt/DbcrnMCk.js similarity index 70% rename from _nuxt/BmgllKrI.js rename to _nuxt/DbcrnMCk.js index ead8f34f..d6134b62 100644 --- a/_nuxt/BmgllKrI.js +++ b/_nuxt/DbcrnMCk.js @@ -1 +1 @@ -import{d as c,v as i,H as p,b as o,c as t,I as u,L as n}from"./XRF4b_vJ.js";const f=["id"],l=["href"],_=c({__name:"ProseH1",props:{id:{}},setup(r){const a=r,{headings:s}=i().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h1)});return(e,m)=>(o(),t("h1",{id:e.id},[u(d)?(o(),t("a",{key:0,href:`#${e.id}`},[n(e.$slots,"default")],8,l)):n(e.$slots,"default",{key:1})],8,f))}});export{_ as default}; +import{d as c,v as i,H as p,b as o,c as t,I as u,L as n}from"./ZAsafoXZ.js";const f=["id"],l=["href"],_=c({__name:"ProseH1",props:{id:{}},setup(r){const a=r,{headings:s}=i().public.mdc,d=p(()=>{var e;return a.id&&((e=s==null?void 0:s.anchorLinks)==null?void 0:e.h1)});return(e,m)=>(o(),t("h1",{id:e.id},[u(d)?(o(),t("a",{key:0,href:`#${e.id}`},[n(e.$slots,"default")],8,l)):n(e.$slots,"default",{key:1})],8,f))}});export{_ as default}; diff --git a/_nuxt/FIlmglO9.js b/_nuxt/DcCIUjwe.js similarity index 64% rename from _nuxt/FIlmglO9.js rename to _nuxt/DcCIUjwe.js index 1bfd3378..4f021f00 100644 --- a/_nuxt/FIlmglO9.js +++ b/_nuxt/DcCIUjwe.js @@ -1 +1 @@ -import{l as r,b as t,c as o,L as s}from"./XRF4b_vJ.js";const c={};function n(e,a){return t(),o("th",null,[s(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; +import{l as r,b as t,c as o,L as s}from"./ZAsafoXZ.js";const c={};function n(e,a){return t(),o("th",null,[s(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; diff --git a/_nuxt/CM4QiD5h.js b/_nuxt/DfsoDfS3.js similarity index 89% rename from _nuxt/CM4QiD5h.js rename to _nuxt/DfsoDfS3.js index e0951fbc..972032e4 100644 --- a/_nuxt/CM4QiD5h.js +++ b/_nuxt/DfsoDfS3.js @@ -1 +1 @@ -import{_ as o}from"./CRDyED6e.js";import{d as l,M as s,O as d,Q as f}from"./XRF4b_vJ.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";const g=l({name:"ContentRenderer",props:{value:{type:Object,required:!1,default:()=>({})},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"}},setup(t){s(()=>t.excerpt,n=>{var e,a,u;n&&!((e=t.value)!=null&&e.excerpt)&&(console.warn(`No excerpt found for document content/${(a=t==null?void 0:t.value)==null?void 0:a._path}.${(u=t==null?void 0:t.value)==null?void 0:u._extension}!`),console.warn("Make sure to use in your content if you want to use excerpt feature."))},{immediate:!0})},render(t){var i,c;const n=d(),{value:e,excerpt:a,tag:u}=t,r=a?e==null?void 0:e.excerpt:e==null?void 0:e.body;return!((i=r==null?void 0:r.children)!=null&&i.length)&&(n!=null&&n.empty)?n.empty({value:e,excerpt:a,tag:u,...this.$attrs}):n!=null&&n.default?n.default({value:e,excerpt:a,tag:u,...this.$attrs}):(r==null?void 0:r.type)==="root"&&((c=r==null?void 0:r.children)!=null&&c.length)?f(o,{value:e,excerpt:a,tag:u,...this.$attrs}):f("pre",null,JSON.stringify({message:"You should use slots with ",value:e,excerpt:a,tag:u},null,2))}});export{g as default}; +import{_ as o}from"./IFCu-2Bx.js";import{d as l,M as s,O as d,Q as f}from"./ZAsafoXZ.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";const g=l({name:"ContentRenderer",props:{value:{type:Object,required:!1,default:()=>({})},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"}},setup(t){s(()=>t.excerpt,n=>{var e,a,u;n&&!((e=t.value)!=null&&e.excerpt)&&(console.warn(`No excerpt found for document content/${(a=t==null?void 0:t.value)==null?void 0:a._path}.${(u=t==null?void 0:t.value)==null?void 0:u._extension}!`),console.warn("Make sure to use in your content if you want to use excerpt feature."))},{immediate:!0})},render(t){var i,c;const n=d(),{value:e,excerpt:a,tag:u}=t,r=a?e==null?void 0:e.excerpt:e==null?void 0:e.body;return!((i=r==null?void 0:r.children)!=null&&i.length)&&(n!=null&&n.empty)?n.empty({value:e,excerpt:a,tag:u,...this.$attrs}):n!=null&&n.default?n.default({value:e,excerpt:a,tag:u,...this.$attrs}):(r==null?void 0:r.type)==="root"&&((c=r==null?void 0:r.children)!=null&&c.length)?f(o,{value:e,excerpt:a,tag:u,...this.$attrs}):f("pre",null,JSON.stringify({message:"You should use slots with ",value:e,excerpt:a,tag:u},null,2))}});export{g as default}; diff --git a/_nuxt/0WakZ16l.js b/_nuxt/DgOxVXtI.js similarity index 59% rename from _nuxt/0WakZ16l.js rename to _nuxt/DgOxVXtI.js index 5c63d840..742816f3 100644 --- a/_nuxt/0WakZ16l.js +++ b/_nuxt/DgOxVXtI.js @@ -1 +1 @@ -import"./B5fxoaT1.js";import{r as o}from"./Bs0KA79C.js";import{l as r,b as t,c as s}from"./XRF4b_vJ.js";import"./Dnd51l0P.js";const c={},n={class:"px-4 md:px-8 mb-8 prose prose-xl prose-invert max-w-none"};function p(e,a){return t(),s("div",n,[o(e.$slots,"body")])}const d=r(c,[["render",p]]);export{d as default}; +import"./DY4Qxm47.js";import{r as o}from"./ETHpkkS0.js";import{l as r,b as t,c as s}from"./ZAsafoXZ.js";import"./Dnd51l0P.js";const c={},n={class:"px-4 md:px-8 mb-8 prose prose-xl prose-invert max-w-none"};function p(e,a){return t(),s("div",n,[o(e.$slots,"body")])}const d=r(c,[["render",p]]);export{d as default}; diff --git a/_nuxt/C7Fz0XqL.js b/_nuxt/Dp0izi_k.js similarity index 64% rename from _nuxt/C7Fz0XqL.js rename to _nuxt/Dp0izi_k.js index 9474d88d..657f259d 100644 --- a/_nuxt/C7Fz0XqL.js +++ b/_nuxt/Dp0izi_k.js @@ -1 +1 @@ -import{l as r,b as o,c as s,L as t}from"./XRF4b_vJ.js";const c={};function n(e,a){return o(),s("em",null,[t(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; +import{l as r,b as o,c as s,L as t}from"./ZAsafoXZ.js";const c={};function n(e,a){return o(),s("em",null,[t(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; diff --git a/_nuxt/rxHcN81V.js b/_nuxt/DsgdWLt5.js similarity index 64% rename from _nuxt/rxHcN81V.js rename to _nuxt/DsgdWLt5.js index f45a421a..555fed7c 100644 --- a/_nuxt/rxHcN81V.js +++ b/_nuxt/DsgdWLt5.js @@ -1 +1 @@ -import{l as r,b as o,c as s,L as t}from"./XRF4b_vJ.js";const c={};function n(e,l){return o(),s("li",null,[t(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; +import{l as r,b as o,c as s,L as t}from"./ZAsafoXZ.js";const c={};function n(e,l){return o(),s("li",null,[t(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; diff --git a/_nuxt/B_fY9PLq.js b/_nuxt/Duj2v7Mb.js similarity index 97% rename from _nuxt/B_fY9PLq.js rename to _nuxt/Duj2v7Mb.js index 25b13b85..9f0c0363 100644 --- a/_nuxt/B_fY9PLq.js +++ b/_nuxt/Duj2v7Mb.js @@ -1 +1 @@ -import{l as r,D as s,b as i,c as u,e,t as o,g as c,w as l,j as d,E as p,p as h,i as g}from"./XRF4b_vJ.js";const b=t=>(h("data-v-73a07988"),t=t(),g(),t),f={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},x=b(()=>e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),m={class:"max-w-520px text-center z-20"},y=["textContent"],k=["textContent"],_={class:"w-full flex items-center justify-center"},w={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return s({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(z,S)=>{const a=p;return i(),u("div",f,[x,e("div",m,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:o(t.statusCode)},null,8,y),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:o(t.description)},null,8,k),e("div",_,[c(a,{to:"/",class:"gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer"},{default:l(()=>[d(o(t.backHome),1)]),_:1})])])])}}},C=r(w,[["__scopeId","data-v-73a07988"]]);export{C as default}; +import{l as r,D as s,b as i,c as u,e,t as o,g as c,w as l,j as d,E as p,p as h,i as g}from"./ZAsafoXZ.js";const b=t=>(h("data-v-73a07988"),t=t(),g(),t),f={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},x=b(()=>e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),m={class:"max-w-520px text-center z-20"},y=["textContent"],k=["textContent"],_={class:"w-full flex items-center justify-center"},w={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return s({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(z,S)=>{const a=p;return i(),u("div",f,[x,e("div",m,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:o(t.statusCode)},null,8,y),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:o(t.description)},null,8,k),e("div",_,[c(a,{to:"/",class:"gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer"},{default:l(()=>[d(o(t.backHome),1)]),_:1})])])])}}},C=r(w,[["__scopeId","data-v-73a07988"]]);export{C as default}; diff --git a/_nuxt/DxFydul6.js b/_nuxt/DxFydul6.js new file mode 100644 index 00000000..84eabe05 --- /dev/null +++ b/_nuxt/DxFydul6.js @@ -0,0 +1 @@ +import{_ as o}from"./IFCu-2Bx.js";import"./ZAsafoXZ.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";export{o as default}; diff --git a/_nuxt/Bs0KA79C.js b/_nuxt/ETHpkkS0.js similarity index 65% rename from _nuxt/Bs0KA79C.js rename to _nuxt/ETHpkkS0.js index 0d657a85..8ed04fc7 100644 --- a/_nuxt/Bs0KA79C.js +++ b/_nuxt/ETHpkkS0.js @@ -1 +1 @@ -import{f as u}from"./Dnd51l0P.js";import{L as n}from"./XRF4b_vJ.js";const e=(t,r,f,...i)=>t[r]?n({...t,[r]:()=>u(t[r](),f==null?void 0:f.unwrap)},r,f,...i):n(t,r,f,...i);export{e as r}; +import{f as u}from"./Dnd51l0P.js";import{L as n}from"./ZAsafoXZ.js";const e=(t,r,f,...i)=>t[r]?n({...t,[r]:()=>u(t[r](),f==null?void 0:f.unwrap)},r,f,...i):n(t,r,f,...i);export{e as r}; diff --git a/_nuxt/C8T_BnKE.js b/_nuxt/EWeNVnVJ.js similarity index 91% rename from _nuxt/C8T_BnKE.js rename to _nuxt/EWeNVnVJ.js index 73b42929..57d27e85 100644 --- a/_nuxt/C8T_BnKE.js +++ b/_nuxt/EWeNVnVJ.js @@ -1 +1 @@ -import{d as o,z as c,b as t,c as a,e as s,F as i,K as r,t as l,I as _}from"./XRF4b_vJ.js";const d={class:"p-4 md:p-8 mb-8"},p=s("h3",{class:"title page-title inline-block mb-6"},"Speaker details",-1),k={class:"bg-[#0e1029] p-4 md:p-8"},m={class:"grid grid-cols-1 md:grid-cols-3 gap-12"},g={class:"text-xl font-black text-pink-500 mb-2"},h={key:0,class:"text-xl"},f=["href"],u={key:1,class:"text-xl"},C=o({__name:"speaker-details",setup(b){const n=c().speaker.details;return(v,y)=>(t(),a("div",d,[p,s("div",k,[s("ul",m,[(t(!0),a(i,null,r(_(n),e=>(t(),a("li",{key:e.label},[s("dl",null,[s("dt",g,l(e.label),1),e.link?(t(),a("dd",h,[s("a",{href:e.link,target:"_blank",rel:"noopener"},l(e.val),9,f)])):(t(),a("dd",u,l(e.val),1))])]))),128))])])]))}});export{C as default}; +import{d as o,z as c,b as t,c as a,e as s,F as i,K as r,t as l,I as _}from"./ZAsafoXZ.js";const d={class:"p-4 md:p-8 mb-8"},p=s("h3",{class:"title page-title inline-block mb-6"},"Speaker details",-1),k={class:"bg-[#0e1029] p-4 md:p-8"},m={class:"grid grid-cols-1 md:grid-cols-3 gap-12"},g={class:"text-xl font-black text-pink-500 mb-2"},h={key:0,class:"text-xl"},f=["href"],u={key:1,class:"text-xl"},C=o({__name:"speaker-details",setup(b){const n=c().speaker.details;return(v,y)=>(t(),a("div",d,[p,s("div",k,[s("ul",m,[(t(!0),a(i,null,r(_(n),e=>(t(),a("li",{key:e.label},[s("dl",null,[s("dt",g,l(e.label),1),e.link?(t(),a("dd",h,[s("a",{href:e.link,target:"_blank",rel:"noopener"},l(e.val),9,f)])):(t(),a("dd",u,l(e.val),1))])]))),128))])])]))}});export{C as default}; diff --git a/_nuxt/CRDyED6e.js b/_nuxt/IFCu-2Bx.js similarity index 99% rename from _nuxt/CRDyED6e.js rename to _nuxt/IFCu-2Bx.js index a14a7ffc..c45a85c7 100644 --- a/_nuxt/CRDyED6e.js +++ b/_nuxt/IFCu-2Bx.js @@ -1 +1 @@ -import{d as H,V as ln,C as en,H as w,Q as D,W as on,X as P,Y as tn,Z as rn,$ as an,b as un,G as sn,I as cn}from"./XRF4b_vJ.js";import{p as F,k as pn}from"./C-v3KzvZ.js";import{f as dn}from"./Dnd51l0P.js";class S{constructor(l,o,t){this.property=l,this.normal=o,t&&(this.space=t)}}S.prototype.property={};S.prototype.normal={};S.prototype.space=null;function V(n,l){const o={},t={};let r=-1;for(;++r4&&o.slice(0,4)==="data"&&yn.test(l)){if(l.charAt(4)==="-"){const a=l.slice(5).replace(j,Cn);t="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=l.slice(4);if(!j.test(a)){let i=a.replace(vn,kn);i.charAt(0)!=="-"&&(i="-"+i),l="data"+i}}r=E}return new r(t,l)}function kn(n){return"-"+n.toLowerCase()}function Cn(n){return n.charAt(1).toUpperCase()}const Sn=V([W,q,Y,$,fn],"html");V([W,q,Y,$,mn],"svg");const B=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],T="default",Z=/^@|^v-on:/,G=/^:|^v-bind:/,J=/^v-model/,xn=["select","textarea","input"],wn=Object.fromEntries(["p","a","blockquote","code","pre","code","em","h1","h2","h3","h4","h5","h6","hr","img","ul","ol","li","strong","table","thead","tbody","td","th","tr","script"].map(n=>[n,`prose-${n}`])),Pn=H({name:"MDCRenderer",props:{body:{type:Object,required:!0},data:{type:Object,default:()=>({})},class:{type:[String,Object],default:void 0},tag:{type:[String,Boolean],default:void 0},prose:{type:Boolean,default:void 0},components:{type:Object,default:()=>({})},unwrap:{type:[Boolean,String],default:!1}},async setup(n){var i,s,c,h,f,p,y,z;const l=(c=(s=(i=ln())==null?void 0:i.appContext)==null?void 0:s.app)==null?void 0:c.$nuxt,o=(l==null?void 0:l.$route)||(l==null?void 0:l._route),{mdc:t}=((h=l==null?void 0:l.$config)==null?void 0:h.public)||{},r={...(f=t==null?void 0:t.components)!=null&&f.prose&&n.prose!==!1?wn:{},...((p=t==null?void 0:t.components)==null?void 0:p.map)||{},...en(((z=(y=n.data)==null?void 0:y.mdc)==null?void 0:z.components)||{}),...n.components},a=w(()=>{var I;const nn=(((I=n.body)==null?void 0:I.children)||[]).map(x=>x.tag||x.type).filter(x=>!B.includes(x));return Array.from(new Set(nn)).sort().join(".")});return await zn(n.body,{tags:r}),{tags:r,contentKey:a,route:o}},render(n){var p,y;const{tags:l,tag:o,body:t,data:r,contentKey:a,route:i,unwrap:s}=n;if(!t)return null;const c={...r,tags:l,$route:i},h=o!==!1?U(o||((p=c.component)==null?void 0:p.name)||c.component||"div"):void 0;return h?D(h,{...(y=c.component)==null?void 0:y.props,class:n.class,...this.$attrs,key:a},{default:f}):f==null?void 0:f();function f(){return s?dn(A(t,D,c,c).default(),typeof s=="string"?s.split(" "):["*"]):A(t,D,c,c).default()}}});function On(n,l,o,t={}){if(n.type==="text")return l(P,n.value);if(n.type==="comment")return l(tn,null,n.value);const r=n.tag,a=Q(n,o.tags);if(n.tag==="binding")return Dn(n,l,o,t);const i=U(a);typeof i=="object"&&(i.tag=r);const s=Ln(n,o);return l(i,s,A(n,l,o,{...t,...s}))}function Dn(n,l,o,t={}){var h,f;const r={...t,$document:o,$doc:o},a=/\.|\[(\d+)\]/,s=((h=n.props)==null?void 0:h.value.trim().split(a).filter(Boolean)).reduce((p,y)=>{if(p&&y in p)return typeof p[y]=="function"?p[y]():p[y]},r),c=(f=n.props)==null?void 0:f.defaultValue;return l(P,s??c??"")}function A(n,l,o,t){const a=(n.children||[]).reduce((s,c)=>{if(!Bn(c))return s[T].push(c),s;const h=En(c);return s[h]=s[h]||[],c.type==="element"&&s[h].push(...c.children||[]),s},{[T]:[]});return Object.entries(a).reduce((s,[c,h])=>(h.length&&(s[c]=()=>{const f=h.map(p=>On(p,l,o,t));return Un(f)}),s),{})}function Ln(n,l){const{tag:o="",props:t={}}=n;return Object.keys(t).reduce(function(r,a){if(a==="__ignoreMap")return r;const i=t[a];if(J.test(a)&&!xn.includes(o))return Mn(a,i,r,l);if(a==="v-bind")return Rn(a,i,r,l);if(Z.test(a))return Tn(a,i,r,l);if(G.test(a))return An(a,i,r,l);const{attribute:s}=bn(Sn,a);return Array.isArray(i)&&i.every(c=>typeof c=="string")?(r[s]=i.join(" "),r):(r[s]=i,r)},{})}function Mn(n,l,o,t){const r=p=>+p,a=p=>p.trim(),i=p=>p,s=n.replace(J,"").split(".").filter(p=>p).reduce((p,y)=>(p[y]=!0,p),{}),c="value",h=s.lazy?"change":"input",f=s.number?r:s.trim?a:i;return o[c]=O(l,t),o.on=o.on||{},o.on[h]=p=>t[l]=f(p),o}function Rn(n,l,o,t){const r=O(l,t);return o=Object.assign(o,r),o}function Tn(n,l,o,t){return n=n.replace(Z,""),o.on=o.on||{},o.on[n]=()=>O(l,t),o}function An(n,l,o,t){return n=n.replace(G,""),o[n]=O(l,t),o}const U=n=>{if(!B.includes(n)&&!(n!=null&&n.render)&&!(n!=null&&n.ssrRender)){const l=on(F(n),!1);if(typeof l=="object")return l}return n};function O(n,l){const o=n.split(".").reduce((t,r)=>typeof t=="object"?t[r]:void 0,l);return typeof o>"u"?rn(n):o}function En(n){let l="";for(const o of Object.keys(n.props||{}))if(!(!o.startsWith("#")&&!o.startsWith("v-slot:"))){l=o.split(/[:#]/,2)[1];break}return l||T}function Bn(n){return n.tag==="template"}function Un(n){const l=[];for(const o of n){const t=l[l.length-1];o.type===P&&(t==null?void 0:t.type)===P?t.children=t.children+o.children:l.push(o)}return l}async function zn(n,l){if(!n)return;const o=Array.from(new Set(t(n,l)));await Promise.all(o.map(async r=>{if(r!=null&&r.render||r!=null&&r.ssrRender||r!=null&&r.__ssrInlineRender)return;const a=U(r);a!=null&&a.__asyncLoader&&!a.__asyncResolved&&await a.__asyncLoader()}));function t(r,a){const i=r.tag;if(r.type==="text"||i==="binding"||r.type==="comment")return[];const s=Q(r,a.tags),c=[];r.type!=="root"&&!B.includes(s)&&c.push(s);for(const h of r.children||[])c.push(...t(h,a));return c}}function Q(n,l){var t;const o=n.tag;return!o||typeof((t=n.props)==null?void 0:t.__ignoreMap)<"u"?o:l[o]||l[F(o)]||l[pn(n.tag)]||o}const In=Pn,Fn=H({__name:"ContentRendererMarkdown",props:{value:{type:Object,required:!0},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"},components:{type:Object,default:()=>({})},data:{type:Object,default:()=>({})}},setup(n){const l=n,o=an().isEnabled(),t=w(()=>{let i=l.value.body||l.value;return l.excerpt&&l.value.excerpt&&(i=l.value.excerpt),i}),r=w(()=>{const{body:i,excerpt:s,...c}=l.value;return{...c,...l.data}}),a=w(()=>({...l.components,...r.value._components||{}}));return(i,s)=>{const c=In;return un(),sn(c,{body:t.value,data:r.value,tag:n.tag,components:a.value,"data-content-id":cn(o)?n.value._id:void 0},null,8,["body","data","tag","components","data-content-id"])}}});export{Fn as _}; +import{d as H,V as ln,C as en,H as w,Q as D,W as on,X as P,Y as tn,Z as rn,$ as an,b as un,G as sn,I as cn}from"./ZAsafoXZ.js";import{p as F,k as pn}from"./C-v3KzvZ.js";import{f as dn}from"./Dnd51l0P.js";class S{constructor(l,o,t){this.property=l,this.normal=o,t&&(this.space=t)}}S.prototype.property={};S.prototype.normal={};S.prototype.space=null;function V(n,l){const o={},t={};let r=-1;for(;++r4&&o.slice(0,4)==="data"&&yn.test(l)){if(l.charAt(4)==="-"){const a=l.slice(5).replace(j,Cn);t="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=l.slice(4);if(!j.test(a)){let i=a.replace(vn,kn);i.charAt(0)!=="-"&&(i="-"+i),l="data"+i}}r=E}return new r(t,l)}function kn(n){return"-"+n.toLowerCase()}function Cn(n){return n.charAt(1).toUpperCase()}const Sn=V([W,q,Y,$,fn],"html");V([W,q,Y,$,mn],"svg");const B=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],T="default",Z=/^@|^v-on:/,G=/^:|^v-bind:/,J=/^v-model/,xn=["select","textarea","input"],wn=Object.fromEntries(["p","a","blockquote","code","pre","code","em","h1","h2","h3","h4","h5","h6","hr","img","ul","ol","li","strong","table","thead","tbody","td","th","tr","script"].map(n=>[n,`prose-${n}`])),Pn=H({name:"MDCRenderer",props:{body:{type:Object,required:!0},data:{type:Object,default:()=>({})},class:{type:[String,Object],default:void 0},tag:{type:[String,Boolean],default:void 0},prose:{type:Boolean,default:void 0},components:{type:Object,default:()=>({})},unwrap:{type:[Boolean,String],default:!1}},async setup(n){var i,s,c,h,f,p,y,z;const l=(c=(s=(i=ln())==null?void 0:i.appContext)==null?void 0:s.app)==null?void 0:c.$nuxt,o=(l==null?void 0:l.$route)||(l==null?void 0:l._route),{mdc:t}=((h=l==null?void 0:l.$config)==null?void 0:h.public)||{},r={...(f=t==null?void 0:t.components)!=null&&f.prose&&n.prose!==!1?wn:{},...((p=t==null?void 0:t.components)==null?void 0:p.map)||{},...en(((z=(y=n.data)==null?void 0:y.mdc)==null?void 0:z.components)||{}),...n.components},a=w(()=>{var I;const nn=(((I=n.body)==null?void 0:I.children)||[]).map(x=>x.tag||x.type).filter(x=>!B.includes(x));return Array.from(new Set(nn)).sort().join(".")});return await zn(n.body,{tags:r}),{tags:r,contentKey:a,route:o}},render(n){var p,y;const{tags:l,tag:o,body:t,data:r,contentKey:a,route:i,unwrap:s}=n;if(!t)return null;const c={...r,tags:l,$route:i},h=o!==!1?U(o||((p=c.component)==null?void 0:p.name)||c.component||"div"):void 0;return h?D(h,{...(y=c.component)==null?void 0:y.props,class:n.class,...this.$attrs,key:a},{default:f}):f==null?void 0:f();function f(){return s?dn(A(t,D,c,c).default(),typeof s=="string"?s.split(" "):["*"]):A(t,D,c,c).default()}}});function On(n,l,o,t={}){if(n.type==="text")return l(P,n.value);if(n.type==="comment")return l(tn,null,n.value);const r=n.tag,a=Q(n,o.tags);if(n.tag==="binding")return Dn(n,l,o,t);const i=U(a);typeof i=="object"&&(i.tag=r);const s=Ln(n,o);return l(i,s,A(n,l,o,{...t,...s}))}function Dn(n,l,o,t={}){var h,f;const r={...t,$document:o,$doc:o},a=/\.|\[(\d+)\]/,s=((h=n.props)==null?void 0:h.value.trim().split(a).filter(Boolean)).reduce((p,y)=>{if(p&&y in p)return typeof p[y]=="function"?p[y]():p[y]},r),c=(f=n.props)==null?void 0:f.defaultValue;return l(P,s??c??"")}function A(n,l,o,t){const a=(n.children||[]).reduce((s,c)=>{if(!Bn(c))return s[T].push(c),s;const h=En(c);return s[h]=s[h]||[],c.type==="element"&&s[h].push(...c.children||[]),s},{[T]:[]});return Object.entries(a).reduce((s,[c,h])=>(h.length&&(s[c]=()=>{const f=h.map(p=>On(p,l,o,t));return Un(f)}),s),{})}function Ln(n,l){const{tag:o="",props:t={}}=n;return Object.keys(t).reduce(function(r,a){if(a==="__ignoreMap")return r;const i=t[a];if(J.test(a)&&!xn.includes(o))return Mn(a,i,r,l);if(a==="v-bind")return Rn(a,i,r,l);if(Z.test(a))return Tn(a,i,r,l);if(G.test(a))return An(a,i,r,l);const{attribute:s}=bn(Sn,a);return Array.isArray(i)&&i.every(c=>typeof c=="string")?(r[s]=i.join(" "),r):(r[s]=i,r)},{})}function Mn(n,l,o,t){const r=p=>+p,a=p=>p.trim(),i=p=>p,s=n.replace(J,"").split(".").filter(p=>p).reduce((p,y)=>(p[y]=!0,p),{}),c="value",h=s.lazy?"change":"input",f=s.number?r:s.trim?a:i;return o[c]=O(l,t),o.on=o.on||{},o.on[h]=p=>t[l]=f(p),o}function Rn(n,l,o,t){const r=O(l,t);return o=Object.assign(o,r),o}function Tn(n,l,o,t){return n=n.replace(Z,""),o.on=o.on||{},o.on[n]=()=>O(l,t),o}function An(n,l,o,t){return n=n.replace(G,""),o[n]=O(l,t),o}const U=n=>{if(!B.includes(n)&&!(n!=null&&n.render)&&!(n!=null&&n.ssrRender)){const l=on(F(n),!1);if(typeof l=="object")return l}return n};function O(n,l){const o=n.split(".").reduce((t,r)=>typeof t=="object"?t[r]:void 0,l);return typeof o>"u"?rn(n):o}function En(n){let l="";for(const o of Object.keys(n.props||{}))if(!(!o.startsWith("#")&&!o.startsWith("v-slot:"))){l=o.split(/[:#]/,2)[1];break}return l||T}function Bn(n){return n.tag==="template"}function Un(n){const l=[];for(const o of n){const t=l[l.length-1];o.type===P&&(t==null?void 0:t.type)===P?t.children=t.children+o.children:l.push(o)}return l}async function zn(n,l){if(!n)return;const o=Array.from(new Set(t(n,l)));await Promise.all(o.map(async r=>{if(r!=null&&r.render||r!=null&&r.ssrRender||r!=null&&r.__ssrInlineRender)return;const a=U(r);a!=null&&a.__asyncLoader&&!a.__asyncResolved&&await a.__asyncLoader()}));function t(r,a){const i=r.tag;if(r.type==="text"||i==="binding"||r.type==="comment")return[];const s=Q(r,a.tags),c=[];r.type!=="root"&&!B.includes(s)&&c.push(s);for(const h of r.children||[])c.push(...t(h,a));return c}}function Q(n,l){var t;const o=n.tag;return!o||typeof((t=n.props)==null?void 0:t.__ignoreMap)<"u"?o:l[o]||l[F(o)]||l[pn(n.tag)]||o}const In=Pn,Fn=H({__name:"ContentRendererMarkdown",props:{value:{type:Object,required:!0},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"},components:{type:Object,default:()=>({})},data:{type:Object,default:()=>({})}},setup(n){const l=n,o=an().isEnabled(),t=w(()=>{let i=l.value.body||l.value;return l.excerpt&&l.value.excerpt&&(i=l.value.excerpt),i}),r=w(()=>{const{body:i,excerpt:s,...c}=l.value;return{...c,...l.data}}),a=w(()=>({...l.components,...r.value._components||{}}));return(i,s)=>{const c=In;return un(),sn(c,{body:t.value,data:r.value,tag:n.tag,components:a.value,"data-content-id":cn(o)?n.value._id:void 0},null,8,["body","data","tag","components","data-content-id"])}}});export{Fn as _}; diff --git a/_nuxt/CbIcpiPE.js b/_nuxt/ITNRvgtr.js similarity index 98% rename from _nuxt/CbIcpiPE.js rename to _nuxt/ITNRvgtr.js index 131b437f..12332696 100644 --- a/_nuxt/CbIcpiPE.js +++ b/_nuxt/ITNRvgtr.js @@ -1 +1 @@ -import{a1 as j,a2 as k,a3 as b,a4 as C,a5 as S,a6 as A,a7 as W,v as L,k as E,H as p,d as D,r as I,D as U,o as B,Q as G}from"./XRF4b_vJ.js";async function T(e,t){return await J(t).catch(i=>(console.error("Failed to get image meta for "+t,i+""),{width:0,height:0,ratio:0}))}async function J(e){if(typeof Image>"u")throw new TypeError("Image not supported");return new Promise((t,r)=>{const i=new Image;i.onload=()=>{const o={width:i.width,height:i.height,ratio:i.width/i.height};t(o)},i.onerror=o=>r(o),i.src=e})}function M(e){return t=>t?e[t]||t:e.missingValue}function q({formatter:e,keyMap:t,joinWith:r="/",valueMap:i}={}){e||(e=(n,s)=>`${n}=${s}`),t&&typeof t!="function"&&(t=M(t));const o=i||{};return Object.keys(o).forEach(n=>{typeof o[n]!="function"&&(o[n]=M(o[n]))}),(n={})=>Object.entries(n).filter(([d,c])=>typeof c<"u").map(([d,c])=>{const l=o[d];return typeof l=="function"&&(c=l(n[d])),d=typeof t=="function"?t(d):d,e(d,c)}).join(r)}function g(e=""){if(typeof e=="number")return e;if(typeof e=="string"&&e.replace("px","").match(/^\d+$/g))return Number.parseInt(e,10)}function Q(e=""){if(e===void 0||!e.length)return[];const t=new Set;for(const r of e.split(" ")){const i=Number.parseInt(r.replace("x",""));i&&t.add(i)}return Array.from(t)}function V(e){if(e.length===0)throw new Error("`densities` must not be empty, configure to `1` to render regular size only (DPR 1.0)")}function X(e){const t={};if(typeof e=="string")for(const r of e.split(/[\s,]+/).filter(i=>i)){const i=r.split(":");i.length!==2?t["1px"]=i[0].trim():t[i[0].trim()]=i[1].trim()}else Object.assign(t,e);return t}function Y(e){const t={options:e},r=(o,n={})=>F(t,o,n),i=(o,n={},s={})=>r(o,{...s,modifiers:S(n,s.modifiers||{})}).url;for(const o in e.presets)i[o]=(n,s,d)=>i(n,s,{...e.presets[o],...d});return i.options=e,i.getImage=r,i.getMeta=(o,n)=>Z(t,o,n),i.getSizes=(o,n)=>te(t,o,n),t.$img=i,i}async function Z(e,t,r){const i=F(e,t,{...r});return typeof i.getMeta=="function"?await i.getMeta():await T(e,i.url)}function F(e,t,r){var l,h;if(t&&typeof t!="string")throw new TypeError(`input must be a string (received ${typeof t}: ${JSON.stringify(t)})`);if(!t||t.startsWith("data:"))return{url:t};const{provider:i,defaults:o}=K(e,r.provider||e.options.provider),n=ee(e,r.preset);if(t=j(t)?t:k(t),!i.supportsAlias)for(const m in e.options.alias)t.startsWith(m)&&(t=b(e.options.alias[m],t.substr(m.length)));if(i.validateDomains&&j(t)){const m=C(t).host;if(!e.options.domains.find(w=>w===m))return{url:t}}const s=S(r,n,o);s.modifiers={...s.modifiers};const d=s.modifiers.format;(l=s.modifiers)!=null&&l.width&&(s.modifiers.width=g(s.modifiers.width)),(h=s.modifiers)!=null&&h.height&&(s.modifiers.height=g(s.modifiers.height));const c=i.getImage(t,s,e);return c.format=c.format||d||"",c}function K(e,t){const r=e.options.providers[t];if(!r)throw new Error("Unknown provider: "+t);return r}function ee(e,t){if(!t)return{};if(!e.options.presets[t])throw new Error("Unknown preset: "+t);return e.options.presets[t]}function te(e,t,r){var f,_,$,z,x;const i=g((f=r.modifiers)==null?void 0:f.width),o=g((_=r.modifiers)==null?void 0:_.height),n=X(r.sizes),s=($=r.densities)!=null&&$.trim()?Q(r.densities.trim()):e.options.densities;V(s);const d=i&&o?o/i:0,c=[],l=[];if(Object.keys(n).length>=1){for(const u in n){const v=P(u,String(n[u]),o,d,e);if(v!==void 0){c.push({size:v.size,screenMaxWidth:v.screenMaxWidth,media:`(max-width: ${v.screenMaxWidth}px)`});for(const y of s)l.push({width:v._cWidth*y,src:N(e,t,r,v,y)})}}ie(c)}else for(const u of s){const v=Object.keys(n)[0];let y=P(v,String(n[v]),o,d,e);y===void 0&&(y={size:"",screenMaxWidth:0,_cWidth:(z=r.modifiers)==null?void 0:z.width,_cHeight:(x=r.modifiers)==null?void 0:x.height}),l.push({width:u,src:N(e,t,r,y,u)})}re(l);const h=l[l.length-1],m=c.length?c.map(u=>`${u.media?u.media+" ":""}${u.size}`).join(", "):void 0,w=m?"w":"x",a=l.map(u=>`${u.src} ${u.width}${w}`).join(", ");return{sizes:m,srcset:a,src:h==null?void 0:h.src}}function P(e,t,r,i,o){const n=o.options.screens&&o.options.screens[e]||Number.parseInt(e),s=t.endsWith("vw");if(!s&&/^\d+$/.test(t)&&(t=t+"px"),!s&&!t.endsWith("px"))return;let d=Number.parseInt(t);if(!n||!d)return;s&&(d=Math.round(d/100*n));const c=i?Math.round(d*i):r;return{size:t,screenMaxWidth:n,_cWidth:d,_cHeight:c}}function N(e,t,r,i,o){return e.$img(t,{...r.modifiers,width:i._cWidth?i._cWidth*o:void 0,height:i._cHeight?i._cHeight*o:void 0},r)}function ie(e){var r;e.sort((i,o)=>i.screenMaxWidth-o.screenMaxWidth);let t=null;for(let i=e.length-1;i>=0;i--){const o=e[i];o.media===t&&e.splice(i,1),t=o.media}for(let i=0;ir.width-i.width);let t=null;for(let r=e.length-1;r>=0;r--){const i=e[r];i.width===t&&e.splice(r,1),t=i.width}}const O=e=>e.startsWith("#")?e.replace("#","rgb_"):e,oe=e=>e.replace(/\.[^/.]+$/,""),ne=q({keyMap:{fit:"c",width:"w",height:"h",format:"f",quality:"q",background:"b",rotate:"a",roundCorner:"r",gravity:"g",effect:"e",color:"co",flags:"fl",dpr:"dpr",opacity:"o",overlay:"l",underlay:"u",transformation:"t",zoom:"z",colorSpace:"cs",customFunc:"fn",density:"dn",aspectRatio:"ar",blur:"e_blur"},valueMap:{fit:{fill:"fill",inside:"pad",outside:"lpad",cover:"fit",contain:"scale",minCover:"mfit",minInside:"mpad",thumbnail:"thumb",cropping:"crop",coverLimit:"limit"},format:{jpeg:"jpg"},background(e){return O(e)},color(e){return O(e)},gravity:{auto:"auto",subject:"auto:subject",face:"face",sink:"sink",faceCenter:"face:center",multipleFaces:"faces",multipleFacesCenter:"faces:center",north:"north",northEast:"north_east",northWest:"north_west",west:"west",southWest:"south_west",south:"south",southEast:"south_east",east:"east",center:"center"}},joinWith:",",formatter:(e,t)=>e.includes("_")?`${e}:${t}`:`${e}_${t}`}),se={format:"auto",quality:"auto"},ae=(e,{modifiers:t={},baseURL:r="/"}={})=>{const i=S(t,se),o=ne(i),n=r.match(/\/image\/upload\/(.*)/);if((n==null?void 0:n.length)>=1){const s=n[1],d=r.replace(s,"");return{url:b(d,o,s,e)}}else/\/image\/fetch\/?/.test(r)?e=A(e):e=oe(e);return{url:b(r,o,e)}},de=Object.freeze(Object.defineProperty({__proto__:null,getImage:ae},Symbol.toStringTag,{value:"Module"})),ce=q({keyMap:{format:"f",fit:"fit",width:"w",height:"h",resize:"s",quality:"q",background:"b"},joinWith:"&",formatter:(e,t)=>W(e)+"_"+W(t)}),le=(e,{modifiers:t={},baseURL:r}={},i)=>{t.width&&t.height&&(t.resize=`${t.width}x${t.height}`,delete t.width,delete t.height);const o=ce(t)||"_";return r||(r=b(i.options.nuxt.baseURL,"/_ipx")),{url:b(r,o,A(e))}},ue=!0,fe=!0,ge=Object.freeze(Object.defineProperty({__proto__:null,getImage:le,supportsAlias:fe,validateDomains:ue},Symbol.toStringTag,{value:"Module"})),R={screens:{xs:320,sm:640,md:768,lg:1024,xl:1280,xxl:1536,"2xl":1536},presets:{},provider:"ipxStatic",domains:[],alias:{},densities:[1,2],format:["webp"]};R.providers={cloudinary:{provider:de,defaults:{baseURL:"https://res.cloudinary.com/dwfcofnrd/image/fetch/"}},ipxStatic:{provider:ge,defaults:{}}};const H=()=>{const e=L(),t=E();return t.$img||t._img||(t._img=Y({...R,nuxt:{baseURL:e.app.baseURL}}))};function he(e){var t;(t=performance==null?void 0:performance.mark)==null||t.call(performance,"mark_feature_usage",{detail:{feature:e}})}const me={src:{type:String,default:void 0},format:{type:String,default:void 0},quality:{type:[Number,String],default:void 0},background:{type:String,default:void 0},fit:{type:String,default:void 0},modifiers:{type:Object,default:void 0},preset:{type:String,default:void 0},provider:{type:String,default:void 0},sizes:{type:[Object,String],default:void 0},densities:{type:String,default:void 0},preload:{type:[Boolean,Object],default:void 0},width:{type:[String,Number],default:void 0},height:{type:[String,Number],default:void 0},alt:{type:String,default:void 0},referrerpolicy:{type:String,default:void 0},usemap:{type:String,default:void 0},longdesc:{type:String,default:void 0},ismap:{type:Boolean,default:void 0},loading:{type:String,default:void 0,validator:e=>["lazy","eager"].includes(e)},crossorigin:{type:[Boolean,String],default:void 0,validator:e=>["anonymous","use-credentials","",!0,!1].includes(e)},decoding:{type:String,default:void 0,validator:e=>["async","auto","sync"].includes(e)},nonce:{type:[String],default:void 0}},ve=e=>{const t=p(()=>({provider:e.provider,preset:e.preset})),r=p(()=>({width:g(e.width),height:g(e.height),alt:e.alt,referrerpolicy:e.referrerpolicy,usemap:e.usemap,longdesc:e.longdesc,ismap:e.ismap,crossorigin:e.crossorigin===!0?"anonymous":e.crossorigin||void 0,loading:e.loading,decoding:e.decoding,nonce:e.nonce})),i=H(),o=p(()=>({...e.modifiers,width:g(e.width),height:g(e.height),format:e.format,quality:e.quality||i.options.quality,background:e.background,fit:e.fit}));return{options:t,attrs:r,modifiers:o}},pe={...me,placeholder:{type:[Boolean,String,Number,Array],default:void 0},placeholderClass:{type:String,default:void 0}},we=D({name:"NuxtImg",props:pe,emits:["load","error"],setup:(e,t)=>{const r=H(),i=ve(e),o=I(!1),n=I(),s=p(()=>r.getSizes(e.src,{...i.options.value,sizes:e.sizes,densities:e.densities,modifiers:{...i.modifiers.value,width:g(e.width),height:g(e.height)}})),d=p(()=>{const a={...i.attrs.value,"data-nuxt-img":""};return(!e.placeholder||o.value)&&(a.sizes=s.value.sizes,a.srcset=s.value.srcset),a}),c=p(()=>{let a=e.placeholder;if(a===""&&(a=!0),!a||o.value)return!1;if(typeof a=="string")return a;const f=Array.isArray(a)?a:typeof a=="number"?[a,a]:[10,10];return r(e.src,{...i.modifiers.value,width:f[0],height:f[1],quality:f[2]||50,blur:f[3]||3},i.options.value)}),l=p(()=>e.sizes?s.value.src:r(e.src,i.modifiers.value,i.options.value)),h=p(()=>c.value?c.value:l.value);if(e.preload){const a=Object.values(s.value).every(f=>f);U({link:[{rel:"preload",as:"image",nonce:e.nonce,...a?{href:s.value.src,imagesizes:s.value.sizes,imagesrcset:s.value.srcset}:{href:h.value},...typeof e.preload!="boolean"&&e.preload.fetchPriority?{fetchpriority:e.preload.fetchPriority}:{}}]})}const w=E().isHydrating;return B(()=>{if(c.value){const a=new Image;a.src=l.value,e.sizes&&(a.sizes=s.value.sizes||"",a.srcset=s.value.srcset),a.onload=f=>{o.value=!0,t.emit("load",f)},he("nuxt-image");return}n.value&&(n.value.complete&&w&&(n.value.getAttribute("data-error")?t.emit("error",new Event("error")):t.emit("load",new Event("load"))),n.value.onload=a=>{t.emit("load",a)},n.value.onerror=a=>{t.emit("error",a)})}),()=>G("img",{ref:n,...d.value,...t.attrs,class:e.placeholder&&!o.value?[e.placeholderClass]:void 0,src:h.value})}});export{we as _}; +import{a1 as j,a2 as k,a3 as b,a4 as C,a5 as S,a6 as A,a7 as W,v as L,k as E,H as p,d as D,r as I,D as U,o as B,Q as G}from"./ZAsafoXZ.js";async function T(e,t){return await J(t).catch(i=>(console.error("Failed to get image meta for "+t,i+""),{width:0,height:0,ratio:0}))}async function J(e){if(typeof Image>"u")throw new TypeError("Image not supported");return new Promise((t,r)=>{const i=new Image;i.onload=()=>{const o={width:i.width,height:i.height,ratio:i.width/i.height};t(o)},i.onerror=o=>r(o),i.src=e})}function M(e){return t=>t?e[t]||t:e.missingValue}function q({formatter:e,keyMap:t,joinWith:r="/",valueMap:i}={}){e||(e=(n,s)=>`${n}=${s}`),t&&typeof t!="function"&&(t=M(t));const o=i||{};return Object.keys(o).forEach(n=>{typeof o[n]!="function"&&(o[n]=M(o[n]))}),(n={})=>Object.entries(n).filter(([d,c])=>typeof c<"u").map(([d,c])=>{const l=o[d];return typeof l=="function"&&(c=l(n[d])),d=typeof t=="function"?t(d):d,e(d,c)}).join(r)}function g(e=""){if(typeof e=="number")return e;if(typeof e=="string"&&e.replace("px","").match(/^\d+$/g))return Number.parseInt(e,10)}function Q(e=""){if(e===void 0||!e.length)return[];const t=new Set;for(const r of e.split(" ")){const i=Number.parseInt(r.replace("x",""));i&&t.add(i)}return Array.from(t)}function V(e){if(e.length===0)throw new Error("`densities` must not be empty, configure to `1` to render regular size only (DPR 1.0)")}function X(e){const t={};if(typeof e=="string")for(const r of e.split(/[\s,]+/).filter(i=>i)){const i=r.split(":");i.length!==2?t["1px"]=i[0].trim():t[i[0].trim()]=i[1].trim()}else Object.assign(t,e);return t}function Y(e){const t={options:e},r=(o,n={})=>F(t,o,n),i=(o,n={},s={})=>r(o,{...s,modifiers:S(n,s.modifiers||{})}).url;for(const o in e.presets)i[o]=(n,s,d)=>i(n,s,{...e.presets[o],...d});return i.options=e,i.getImage=r,i.getMeta=(o,n)=>Z(t,o,n),i.getSizes=(o,n)=>te(t,o,n),t.$img=i,i}async function Z(e,t,r){const i=F(e,t,{...r});return typeof i.getMeta=="function"?await i.getMeta():await T(e,i.url)}function F(e,t,r){var l,h;if(t&&typeof t!="string")throw new TypeError(`input must be a string (received ${typeof t}: ${JSON.stringify(t)})`);if(!t||t.startsWith("data:"))return{url:t};const{provider:i,defaults:o}=K(e,r.provider||e.options.provider),n=ee(e,r.preset);if(t=j(t)?t:k(t),!i.supportsAlias)for(const m in e.options.alias)t.startsWith(m)&&(t=b(e.options.alias[m],t.substr(m.length)));if(i.validateDomains&&j(t)){const m=C(t).host;if(!e.options.domains.find(w=>w===m))return{url:t}}const s=S(r,n,o);s.modifiers={...s.modifiers};const d=s.modifiers.format;(l=s.modifiers)!=null&&l.width&&(s.modifiers.width=g(s.modifiers.width)),(h=s.modifiers)!=null&&h.height&&(s.modifiers.height=g(s.modifiers.height));const c=i.getImage(t,s,e);return c.format=c.format||d||"",c}function K(e,t){const r=e.options.providers[t];if(!r)throw new Error("Unknown provider: "+t);return r}function ee(e,t){if(!t)return{};if(!e.options.presets[t])throw new Error("Unknown preset: "+t);return e.options.presets[t]}function te(e,t,r){var f,_,$,z,x;const i=g((f=r.modifiers)==null?void 0:f.width),o=g((_=r.modifiers)==null?void 0:_.height),n=X(r.sizes),s=($=r.densities)!=null&&$.trim()?Q(r.densities.trim()):e.options.densities;V(s);const d=i&&o?o/i:0,c=[],l=[];if(Object.keys(n).length>=1){for(const u in n){const v=P(u,String(n[u]),o,d,e);if(v!==void 0){c.push({size:v.size,screenMaxWidth:v.screenMaxWidth,media:`(max-width: ${v.screenMaxWidth}px)`});for(const y of s)l.push({width:v._cWidth*y,src:N(e,t,r,v,y)})}}ie(c)}else for(const u of s){const v=Object.keys(n)[0];let y=P(v,String(n[v]),o,d,e);y===void 0&&(y={size:"",screenMaxWidth:0,_cWidth:(z=r.modifiers)==null?void 0:z.width,_cHeight:(x=r.modifiers)==null?void 0:x.height}),l.push({width:u,src:N(e,t,r,y,u)})}re(l);const h=l[l.length-1],m=c.length?c.map(u=>`${u.media?u.media+" ":""}${u.size}`).join(", "):void 0,w=m?"w":"x",a=l.map(u=>`${u.src} ${u.width}${w}`).join(", ");return{sizes:m,srcset:a,src:h==null?void 0:h.src}}function P(e,t,r,i,o){const n=o.options.screens&&o.options.screens[e]||Number.parseInt(e),s=t.endsWith("vw");if(!s&&/^\d+$/.test(t)&&(t=t+"px"),!s&&!t.endsWith("px"))return;let d=Number.parseInt(t);if(!n||!d)return;s&&(d=Math.round(d/100*n));const c=i?Math.round(d*i):r;return{size:t,screenMaxWidth:n,_cWidth:d,_cHeight:c}}function N(e,t,r,i,o){return e.$img(t,{...r.modifiers,width:i._cWidth?i._cWidth*o:void 0,height:i._cHeight?i._cHeight*o:void 0},r)}function ie(e){var r;e.sort((i,o)=>i.screenMaxWidth-o.screenMaxWidth);let t=null;for(let i=e.length-1;i>=0;i--){const o=e[i];o.media===t&&e.splice(i,1),t=o.media}for(let i=0;ir.width-i.width);let t=null;for(let r=e.length-1;r>=0;r--){const i=e[r];i.width===t&&e.splice(r,1),t=i.width}}const O=e=>e.startsWith("#")?e.replace("#","rgb_"):e,oe=e=>e.replace(/\.[^/.]+$/,""),ne=q({keyMap:{fit:"c",width:"w",height:"h",format:"f",quality:"q",background:"b",rotate:"a",roundCorner:"r",gravity:"g",effect:"e",color:"co",flags:"fl",dpr:"dpr",opacity:"o",overlay:"l",underlay:"u",transformation:"t",zoom:"z",colorSpace:"cs",customFunc:"fn",density:"dn",aspectRatio:"ar",blur:"e_blur"},valueMap:{fit:{fill:"fill",inside:"pad",outside:"lpad",cover:"fit",contain:"scale",minCover:"mfit",minInside:"mpad",thumbnail:"thumb",cropping:"crop",coverLimit:"limit"},format:{jpeg:"jpg"},background(e){return O(e)},color(e){return O(e)},gravity:{auto:"auto",subject:"auto:subject",face:"face",sink:"sink",faceCenter:"face:center",multipleFaces:"faces",multipleFacesCenter:"faces:center",north:"north",northEast:"north_east",northWest:"north_west",west:"west",southWest:"south_west",south:"south",southEast:"south_east",east:"east",center:"center"}},joinWith:",",formatter:(e,t)=>e.includes("_")?`${e}:${t}`:`${e}_${t}`}),se={format:"auto",quality:"auto"},ae=(e,{modifiers:t={},baseURL:r="/"}={})=>{const i=S(t,se),o=ne(i),n=r.match(/\/image\/upload\/(.*)/);if((n==null?void 0:n.length)>=1){const s=n[1],d=r.replace(s,"");return{url:b(d,o,s,e)}}else/\/image\/fetch\/?/.test(r)?e=A(e):e=oe(e);return{url:b(r,o,e)}},de=Object.freeze(Object.defineProperty({__proto__:null,getImage:ae},Symbol.toStringTag,{value:"Module"})),ce=q({keyMap:{format:"f",fit:"fit",width:"w",height:"h",resize:"s",quality:"q",background:"b"},joinWith:"&",formatter:(e,t)=>W(e)+"_"+W(t)}),le=(e,{modifiers:t={},baseURL:r}={},i)=>{t.width&&t.height&&(t.resize=`${t.width}x${t.height}`,delete t.width,delete t.height);const o=ce(t)||"_";return r||(r=b(i.options.nuxt.baseURL,"/_ipx")),{url:b(r,o,A(e))}},ue=!0,fe=!0,ge=Object.freeze(Object.defineProperty({__proto__:null,getImage:le,supportsAlias:fe,validateDomains:ue},Symbol.toStringTag,{value:"Module"})),R={screens:{xs:320,sm:640,md:768,lg:1024,xl:1280,xxl:1536,"2xl":1536},presets:{},provider:"ipxStatic",domains:[],alias:{},densities:[1,2],format:["webp"]};R.providers={cloudinary:{provider:de,defaults:{baseURL:"https://res.cloudinary.com/dwfcofnrd/image/fetch/"}},ipxStatic:{provider:ge,defaults:{}}};const H=()=>{const e=L(),t=E();return t.$img||t._img||(t._img=Y({...R,nuxt:{baseURL:e.app.baseURL}}))};function he(e){var t;(t=performance==null?void 0:performance.mark)==null||t.call(performance,"mark_feature_usage",{detail:{feature:e}})}const me={src:{type:String,default:void 0},format:{type:String,default:void 0},quality:{type:[Number,String],default:void 0},background:{type:String,default:void 0},fit:{type:String,default:void 0},modifiers:{type:Object,default:void 0},preset:{type:String,default:void 0},provider:{type:String,default:void 0},sizes:{type:[Object,String],default:void 0},densities:{type:String,default:void 0},preload:{type:[Boolean,Object],default:void 0},width:{type:[String,Number],default:void 0},height:{type:[String,Number],default:void 0},alt:{type:String,default:void 0},referrerpolicy:{type:String,default:void 0},usemap:{type:String,default:void 0},longdesc:{type:String,default:void 0},ismap:{type:Boolean,default:void 0},loading:{type:String,default:void 0,validator:e=>["lazy","eager"].includes(e)},crossorigin:{type:[Boolean,String],default:void 0,validator:e=>["anonymous","use-credentials","",!0,!1].includes(e)},decoding:{type:String,default:void 0,validator:e=>["async","auto","sync"].includes(e)},nonce:{type:[String],default:void 0}},ve=e=>{const t=p(()=>({provider:e.provider,preset:e.preset})),r=p(()=>({width:g(e.width),height:g(e.height),alt:e.alt,referrerpolicy:e.referrerpolicy,usemap:e.usemap,longdesc:e.longdesc,ismap:e.ismap,crossorigin:e.crossorigin===!0?"anonymous":e.crossorigin||void 0,loading:e.loading,decoding:e.decoding,nonce:e.nonce})),i=H(),o=p(()=>({...e.modifiers,width:g(e.width),height:g(e.height),format:e.format,quality:e.quality||i.options.quality,background:e.background,fit:e.fit}));return{options:t,attrs:r,modifiers:o}},pe={...me,placeholder:{type:[Boolean,String,Number,Array],default:void 0},placeholderClass:{type:String,default:void 0}},we=D({name:"NuxtImg",props:pe,emits:["load","error"],setup:(e,t)=>{const r=H(),i=ve(e),o=I(!1),n=I(),s=p(()=>r.getSizes(e.src,{...i.options.value,sizes:e.sizes,densities:e.densities,modifiers:{...i.modifiers.value,width:g(e.width),height:g(e.height)}})),d=p(()=>{const a={...i.attrs.value,"data-nuxt-img":""};return(!e.placeholder||o.value)&&(a.sizes=s.value.sizes,a.srcset=s.value.srcset),a}),c=p(()=>{let a=e.placeholder;if(a===""&&(a=!0),!a||o.value)return!1;if(typeof a=="string")return a;const f=Array.isArray(a)?a:typeof a=="number"?[a,a]:[10,10];return r(e.src,{...i.modifiers.value,width:f[0],height:f[1],quality:f[2]||50,blur:f[3]||3},i.options.value)}),l=p(()=>e.sizes?s.value.src:r(e.src,i.modifiers.value,i.options.value)),h=p(()=>c.value?c.value:l.value);if(e.preload){const a=Object.values(s.value).every(f=>f);U({link:[{rel:"preload",as:"image",nonce:e.nonce,...a?{href:s.value.src,imagesizes:s.value.sizes,imagesrcset:s.value.srcset}:{href:h.value},...typeof e.preload!="boolean"&&e.preload.fetchPriority?{fetchpriority:e.preload.fetchPriority}:{}}]})}const w=E().isHydrating;return B(()=>{if(c.value){const a=new Image;a.src=l.value,e.sizes&&(a.sizes=s.value.sizes||"",a.srcset=s.value.srcset),a.onload=f=>{o.value=!0,t.emit("load",f)},he("nuxt-image");return}n.value&&(n.value.complete&&w&&(n.value.getAttribute("data-error")?t.emit("error",new Event("error")):t.emit("load",new Event("load"))),n.value.onload=a=>{t.emit("load",a)},n.value.onerror=a=>{t.emit("error",a)})}),()=>G("img",{ref:n,...d.value,...t.attrs,class:e.placeholder&&!o.value?[e.placeholderClass]:void 0,src:h.value})}});export{we as _}; diff --git a/_nuxt/dMipb99y.js b/_nuxt/KCTYD4Gn.js similarity index 89% rename from _nuxt/dMipb99y.js rename to _nuxt/KCTYD4Gn.js index 2debb8f6..edfcd241 100644 --- a/_nuxt/dMipb99y.js +++ b/_nuxt/KCTYD4Gn.js @@ -1 +1 @@ -import"./B5fxoaT1.js";import{d as w,H as b,b as e,c as l,g as n,w as c,e as o,f as i,j as y,n as m,I as N,F as $,K as C,t as p,E as _}from"./XRF4b_vJ.js";import{_ as v}from"./CbIcpiPE.js";import B from"./DhTXWxNA.js";import{r as V}from"./Bs0KA79C.js";const I={class:"px-4 md:px-8 mb-8"},L={class:"mb-4 flex md:space-x-4 space-x-0 md:items-end flex-col md:flex-row items-start"},S={key:0,class:"title inline-block"},z={key:1,class:"uppercase text-sm mt-2"},E={class:"font-bold text-xl line-clamp-2"},F={key:0,class:"line-clamp-2 text-slate-400 text-sm"},j=o("p",null,"No videos found.",-1),A=w({__name:"videos",props:["limit","folder","small","extras"],setup(t){const a=t,r={path:`/videos/${a.folder}`,sort:[{position:1}]};a.limit&&(r.limit=a.limit);const u=b(()=>a.small?"grid grid-cols-1 md:grid-cols-1 gap-6":"grid grid-cols-1 md:grid-cols-3 gap-6");return(d,q)=>{const f=_,x=v,h=_,g=B;return e(),l("div",I,[n(g,{query:r},{default:c(({list:k})=>[o("header",L,[d.$slots.title?(e(),l("h3",S,[V(d.$slots,"title",{unwrap:"p"})])):i("",!0),t.extras?(e(),l("p",z,[n(f,{to:`/videos/${t.folder}`},{default:c(()=>[y("See all →")]),_:1},8,["to"])])):i("",!0)]),o("ul",{class:m(N(u))},[(e(!0),l($,null,C(k,s=>(e(),l("li",{key:s._path,class:"mb-4"},[n(h,{to:`https://youtube.com/watch?v=${s.videoId}`,target:"_blank",class:m(["md:flex",t.small?"md:flex-row md:space-x-4":"flex-col"])},{default:c(()=>[n(x,{provider:"cloudinary",src:s.image,sizes:"sm:564px",alt:s._path||"",class:m(["mb-2 fancy-image",t.small?"w-full md:w-64":"w-full"]),width:"564",height:"318"},null,8,["src","alt","class"]),o("div",null,[o("p",E,p(s.title),1),t.small?(e(),l("p",F,p(s.description),1)):i("",!0)])]),_:2},1032,["to","class"])]))),128))],2)]),"not-found":c(()=>[j]),_:3})])}}});export{A as _}; +import"./DY4Qxm47.js";import{d as w,H as b,b as e,c as l,g as n,w as c,e as o,f as i,j as y,n as m,I as N,F as $,K as C,t as p,E as _}from"./ZAsafoXZ.js";import{_ as v}from"./ITNRvgtr.js";import B from"./CVVxf02X.js";import{r as V}from"./ETHpkkS0.js";const I={class:"px-4 md:px-8 mb-8"},L={class:"mb-4 flex md:space-x-4 space-x-0 md:items-end flex-col md:flex-row items-start"},S={key:0,class:"title inline-block"},z={key:1,class:"uppercase text-sm mt-2"},E={class:"font-bold text-xl line-clamp-2"},F={key:0,class:"line-clamp-2 text-slate-400 text-sm"},j=o("p",null,"No videos found.",-1),A=w({__name:"videos",props:["limit","folder","small","extras"],setup(t){const a=t,r={path:`/videos/${a.folder}`,sort:[{position:1}]};a.limit&&(r.limit=a.limit);const u=b(()=>a.small?"grid grid-cols-1 md:grid-cols-1 gap-6":"grid grid-cols-1 md:grid-cols-3 gap-6");return(d,q)=>{const f=_,x=v,h=_,g=B;return e(),l("div",I,[n(g,{query:r},{default:c(({list:k})=>[o("header",L,[d.$slots.title?(e(),l("h3",S,[V(d.$slots,"title",{unwrap:"p"})])):i("",!0),t.extras?(e(),l("p",z,[n(f,{to:`/videos/${t.folder}`},{default:c(()=>[y("See all →")]),_:1},8,["to"])])):i("",!0)]),o("ul",{class:m(N(u))},[(e(!0),l($,null,C(k,s=>(e(),l("li",{key:s._path,class:"mb-4"},[n(h,{to:`https://youtube.com/watch?v=${s.videoId}`,target:"_blank",class:m(["md:flex",t.small?"md:flex-row md:space-x-4":"flex-col"])},{default:c(()=>[n(x,{provider:"cloudinary",src:s.image,sizes:"sm:564px",alt:s._path||"",class:m(["mb-2 fancy-image",t.small?"w-full md:w-64":"w-full"]),width:"564",height:"318"},null,8,["src","alt","class"]),o("div",null,[o("p",E,p(s.title),1),t.small?(e(),l("p",F,p(s.description),1)):i("",!0)])]),_:2},1032,["to","class"])]))),128))],2)]),"not-found":c(()=>[j]),_:3})])}}});export{A as _}; diff --git a/_nuxt/BeWLaV8q.js b/_nuxt/V5CGSosh.js similarity index 99% rename from _nuxt/BeWLaV8q.js rename to _nuxt/V5CGSosh.js index b21e64b3..43764a8a 100644 --- a/_nuxt/BeWLaV8q.js +++ b/_nuxt/V5CGSosh.js @@ -1 +1 @@ -import{Z as _,a8 as T,a9 as j,aa as E,ab as W,ac as B,ad as $,ae as P,af as D,a3 as b,v as M,ag as k,$ as U,ah as J,k as H}from"./XRF4b_vJ.js";import{p as G}from"./C-v3KzvZ.js";const Z="memory",q=()=>{const t=new Map;return{name:Z,options:{},hasItem(r){return t.has(r)},getItem(r){return t.get(r)??null},getItemRaw(r){return t.get(r)??null},setItem(r,n){t.set(r,n)},setItemRaw(r,n){t.set(r,n)},removeItem(r){t.delete(r)},getKeys(){return Array.from(t.keys())},clear(){t.clear()},dispose(){t.clear()}}};function F(t){return!t||typeof t.then!="function"?Promise.resolve(t):t}function p(t,...r){try{return F(t(...r))}catch(n){return Promise.reject(n)}}function V(t){const r=typeof t;return t===null||r!=="object"&&r!=="function"}function Q(t){const r=Object.getPrototypeOf(t);return!r||r.isPrototypeOf(Object)}function K(t){if(V(t))return String(t);if(Q(t)||Array.isArray(t))return JSON.stringify(t);if(typeof t.toJSON=="function")return K(t.toJSON());throw new Error("[unstorage] Cannot stringify value!")}function z(){if(typeof Buffer===void 0)throw new TypeError("[unstorage] Buffer is not supported!")}const R="base64:";function X(t){if(typeof t=="string")return t;z();const r=Buffer.from(t).toString("base64");return R+r}function ee(t){return typeof t!="string"||!t.startsWith(R)?t:(z(),Buffer.from(t.slice(R.length),"base64"))}const te=["hasItem","getItem","getItemRaw","setItem","setItemRaw","removeItem","getMeta","setMeta","removeMeta","getKeys","clear","mount","unmount"];function re(t,r){if(r=A(r),!r)return t;const n={...t};for(const a of te)n[a]=(l="",...c)=>t[a](r+l,...c);return n.getKeys=(a="",...l)=>t.getKeys(r+a,...l).then(c=>c.map(o=>o.slice(r.length))),n}function d(t){return t?t.split("?")[0].replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,""):""}function ne(...t){return d(t.join(":"))}function A(t){return t=d(t),t?t+":":""}const ie="memory",ae=()=>{const t=new Map;return{name:ie,options:{},hasItem(r){return t.has(r)},getItem(r){return t.get(r)??null},getItemRaw(r){return t.get(r)??null},setItem(r,n){t.set(r,n)},setItemRaw(r,n){t.set(r,n)},removeItem(r){t.delete(r)},getKeys(){return Array.from(t.keys())},clear(){t.clear()},dispose(){t.clear()}}};function se(t={}){const r={mounts:{"":t.driver||ae()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},n=e=>{for(const i of r.mountpoints)if(e.startsWith(i))return{base:i,relativeKey:e.slice(i.length),driver:r.mounts[i]};return{base:"",relativeKey:e,driver:r.mounts[""]}},a=(e,i)=>r.mountpoints.filter(s=>s.startsWith(e)||i&&e.startsWith(s)).map(s=>({relativeBase:e.length>s.length?e.slice(s.length):void 0,mountpoint:s,driver:r.mounts[s]})),l=(e,i)=>{if(r.watching){i=d(i);for(const s of r.watchListeners)s(e,i)}},c=async()=>{if(!r.watching){r.watching=!0;for(const e in r.mounts)r.unwatch[e]=await x(r.mounts[e],l,e)}},o=async()=>{if(r.watching){for(const e in r.unwatch)await r.unwatch[e]();r.unwatch={},r.watching=!1}},h=(e,i,s)=>{const u=new Map,f=m=>{let y=u.get(m.base);return y||(y={driver:m.driver,base:m.base,items:[]},u.set(m.base,y)),y};for(const m of e){const y=typeof m=="string",v=d(y?m:m.key),w=y?void 0:m.value,I=y||!m.options?i:{...i,...m.options},O=n(v);f(O).items.push({key:v,value:w,relativeKey:O.relativeKey,options:I})}return Promise.all([...u.values()].map(m=>s(m))).then(m=>m.flat())},g={hasItem(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return p(u.hasItem,s,i)},getItem(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return p(u.getItem,s,i).then(f=>_(f))},getItems(e,i){return h(e,i,s=>s.driver.getItems?p(s.driver.getItems,s.items.map(u=>({key:u.relativeKey,options:u.options})),i).then(u=>u.map(f=>({key:ne(s.base,f.key),value:_(f.value)}))):Promise.all(s.items.map(u=>p(s.driver.getItem,u.relativeKey,u.options).then(f=>({key:u.key,value:_(f)})))))},getItemRaw(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return u.getItemRaw?p(u.getItemRaw,s,i):p(u.getItem,s,i).then(f=>ee(f))},async setItem(e,i,s={}){if(i===void 0)return g.removeItem(e);e=d(e);const{relativeKey:u,driver:f}=n(e);f.setItem&&(await p(f.setItem,u,K(i),s),f.watch||l("update",e))},async setItems(e,i){await h(e,i,async s=>{if(s.driver.setItems)return p(s.driver.setItems,s.items.map(u=>({key:u.relativeKey,value:K(u.value),options:u.options})),i);s.driver.setItem&&await Promise.all(s.items.map(u=>p(s.driver.setItem,u.relativeKey,K(u.value),u.options)))})},async setItemRaw(e,i,s={}){if(i===void 0)return g.removeItem(e,s);e=d(e);const{relativeKey:u,driver:f}=n(e);if(f.setItemRaw)await p(f.setItemRaw,u,i,s);else if(f.setItem)await p(f.setItem,u,X(i),s);else return;f.watch||l("update",e)},async removeItem(e,i={}){typeof i=="boolean"&&(i={removeMeta:i}),e=d(e);const{relativeKey:s,driver:u}=n(e);u.removeItem&&(await p(u.removeItem,s,i),(i.removeMeta||i.removeMata)&&await p(u.removeItem,s+"$",i),u.watch||l("remove",e))},async getMeta(e,i={}){typeof i=="boolean"&&(i={nativeOnly:i}),e=d(e);const{relativeKey:s,driver:u}=n(e),f=Object.create(null);if(u.getMeta&&Object.assign(f,await p(u.getMeta,s,i)),!i.nativeOnly){const m=await p(u.getItem,s+"$",i).then(y=>_(y));m&&typeof m=="object"&&(typeof m.atime=="string"&&(m.atime=new Date(m.atime)),typeof m.mtime=="string"&&(m.mtime=new Date(m.mtime)),Object.assign(f,m))}return f},setMeta(e,i,s={}){return this.setItem(e+"$",i,s)},removeMeta(e,i={}){return this.removeItem(e+"$",i)},async getKeys(e,i={}){e=A(e);const s=a(e,!0);let u=[];const f=[];for(const m of s){const v=(await p(m.driver.getKeys,m.relativeBase,i)).map(w=>m.mountpoint+d(w)).filter(w=>!u.some(I=>w.startsWith(I)));f.push(...v),u=[m.mountpoint,...u.filter(w=>!w.startsWith(m.mountpoint))]}return e?f.filter(m=>m.startsWith(e)&&!m.endsWith("$")):f.filter(m=>!m.endsWith("$"))},async clear(e,i={}){e=A(e),await Promise.all(a(e,!1).map(async s=>{if(s.driver.clear)return p(s.driver.clear,s.relativeBase,i);if(s.driver.removeItem){const u=await s.driver.getKeys(s.relativeBase||"",i);return Promise.all(u.map(f=>s.driver.removeItem(f,i)))}}))},async dispose(){await Promise.all(Object.values(r.mounts).map(e=>L(e)))},async watch(e){return await c(),r.watchListeners.push(e),async()=>{r.watchListeners=r.watchListeners.filter(i=>i!==e),r.watchListeners.length===0&&await o()}},async unwatch(){r.watchListeners=[],await o()},mount(e,i){if(e=A(e),e&&r.mounts[e])throw new Error(`already mounted at ${e}`);return e&&(r.mountpoints.push(e),r.mountpoints.sort((s,u)=>u.length-s.length)),r.mounts[e]=i,r.watching&&Promise.resolve(x(i,l,e)).then(s=>{r.unwatch[e]=s}).catch(console.error),g},async unmount(e,i=!0){e=A(e),!(!e||!r.mounts[e])&&(r.watching&&e in r.unwatch&&(r.unwatch[e](),delete r.unwatch[e]),i&&await L(r.mounts[e]),r.mountpoints=r.mountpoints.filter(s=>s!==e),delete r.mounts[e])},getMount(e=""){e=d(e)+":";const i=n(e);return{driver:i.driver,base:i.base}},getMounts(e="",i={}){return e=d(e),a(e,i.parents).map(u=>({driver:u.driver,base:u.mountpoint}))}};return g}function x(t,r,n){return t.watch?t.watch((a,l)=>r(a,n+l)):()=>{}}async function L(t){typeof t.dispose=="function"&&await p(t.dispose)}function oe(t={}){const r=ue(n,t.operators);function n(a,l){return typeof l!="object"||l instanceof RegExp?r.$eq(a,l):Object.keys(l||{}).every(c=>{const o=l[c];if(c.startsWith("$")&&r[c]){const h=r[c];return typeof h=="function"?h(a,o):!1}return n(T(a,c),o)})}return n}function ue(t,r={}){return{$match:(n,a)=>t(n,a),$eq:(n,a)=>a instanceof RegExp?a.test(n):n===a,$ne:(n,a)=>a instanceof RegExp?!a.test(n):n!==a,$not:(n,a)=>!t(n,a),$and:(n,a)=>(j(a,"$and requires an array as condition"),a.every(l=>t(n,l))),$or:(n,a)=>(j(a,"$or requires an array as condition"),a.some(l=>t(n,l))),$in:(n,a)=>E(a).some(l=>Array.isArray(n)?t(n,{$contains:l}):t(n,l)),$contains:(n,a)=>(n=Array.isArray(n)?n:String(n),E(a).every(l=>n.includes(l))),$icontains:(n,a)=>{if(typeof a!="string")throw new TypeError("$icontains requires a string, use $contains instead");return n=String(n).toLocaleLowerCase(),E(a).every(l=>n.includes(l.toLocaleLowerCase()))},$containsAny:(n,a)=>(j(a,"$containsAny requires an array as condition"),n=Array.isArray(n)?n:String(n),a.some(l=>n.includes(l))),$exists:(n,a)=>a?typeof n<"u":typeof n>"u",$type:(n,a)=>typeof n===String(a),$regex:(n,a)=>{if(!(a instanceof RegExp)){const l=String(a).match(/\/(.*)\/([dgimsuy]*)$/);a=l?new RegExp(l[1],l[2]||""):new RegExp(a)}return a.test(String(n||""))},$lt:(n,a)=>nn<=a,$gt:(n,a)=>n>a,$gte:(n,a)=>n>=a,...r||{}}}function ce(t){const r=oe(),n=(c,{query:o,before:h,after:g})=>{const e=typeof o=="string"?{_path:o}:o,i=c.findIndex(u=>r(u,e));h=h??1,g=g??1;const s=new Array(h+g).fill(null,0);return i===-1?s:s.map((u,f)=>c[i-h+f+ +(f>=h)]||null)},a=[(c,o)=>{const h=c.result.filter(g=>E(o.where).every(e=>r(g,e)));return{...c,result:h,total:h.length}},(c,o)=>E(o.sort).forEach(h=>B(c.result,h)),function(o,h,g){var e;if(h.surround){let i=n(((e=o.result)==null?void 0:e.length)===1?g:o.result,h.surround);i=$(P(h.without))(i),i=$(D(h.only))(i),o.surround=i}return o}],l=[(c,o)=>{if(o.skip)return{...c,result:c.result.slice(o.skip),skip:o.skip}},(c,o)=>{if(o.limit)return{...c,result:c.result.slice(0,o.limit),limit:o.limit}},function(o,h,g){var e,i,s;if(h.dirConfig){const u=((e=o.result[0])==null?void 0:e._path)||((s=(i=h.where)==null?void 0:i.find(f=>f._path))==null?void 0:s._path);if(typeof u=="string"){const f=g.find(m=>m._path===b(u,"_dir"));f&&(o.dirConfig={_path:f._path,...P(["_"])(f)})}}return o},(c,o)=>({...c,result:$(P(o.without))(c.result)}),(c,o)=>({...c,result:$(D(o.only))(c.result)})];return async c=>{const o=await t(),h=c.params(),g={result:o,limit:0,skip:0,total:o.length},e=a.reduce((s,u)=>u(s,h,o)||s,g);if(h.count)return{result:e.result.length};const i=l.reduce((s,u)=>u(s,h,o)||s,e);return h.first?{...W(["skip","limit","total"])(i),result:i.result[0]}:i}}function N(t){const r=ce(t);return async n=>{var c;n.params().first&&n.withDirConfig();const a=n.params(),l=await r(n);return a.surround?l==null?void 0:l.surround:(l!=null&&l.dirConfig&&(l.result={_path:(c=l.dirConfig)==null?void 0:c._path,...l.result,_dir:l.dirConfig}),l==null?void 0:l.result)}}var le=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},fe={exports:{}};(function(t,r){(function(n,a,l){t.exports=l(),t.exports.default=l()})("slugify",le,function(){var n=JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ō":"O","ō":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","Ə":"E","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","ə":"e","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"E'","Ը":"Y'","Թ":"T'","Ժ":"JH","Ի":"I","Լ":"L","Խ":"X","Ծ":"C'","Կ":"K","Հ":"H","Ձ":"D'","Ղ":"GH","Ճ":"TW","Մ":"M","Յ":"Y","Ն":"N","Շ":"SH","Չ":"CH","Պ":"P","Ջ":"J","Ռ":"R'","Ս":"S","Վ":"V","Տ":"T","Ր":"R","Ց":"C","Փ":"P'","Ք":"Q'","Օ":"O''","Ֆ":"F","և":"EV","ء":"a","آ":"aa","أ":"a","ؤ":"u","إ":"i","ئ":"e","ا":"a","ب":"b","ة":"h","ت":"t","ث":"th","ج":"j","ح":"h","خ":"kh","د":"d","ذ":"th","ر":"r","ز":"z","س":"s","ش":"sh","ص":"s","ض":"dh","ط":"t","ظ":"z","ع":"a","غ":"gh","ف":"f","ق":"q","ك":"k","ل":"l","م":"m","ن":"n","ه":"h","و":"w","ى":"a","ي":"y","ً":"an","ٌ":"on","ٍ":"en","َ":"a","ُ":"u","ِ":"e","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","پ":"p","چ":"ch","ژ":"zh","ک":"k","گ":"g","ی":"y","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ṣ":"S","ṣ":"s","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","–":"-","‘":"'","’":"'","“":"\\"","”":"\\"","„":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₺":"turkish lira","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial","ﻵ":"laa","ﻷ":"laa","ﻹ":"lai","ﻻ":"la"}`),a=JSON.parse('{"bg":{"Й":"Y","Ц":"Ts","Щ":"Sht","Ъ":"A","Ь":"Y","й":"y","ц":"ts","щ":"sht","ъ":"a","ь":"y"},"de":{"Ä":"AE","ä":"ae","Ö":"OE","ö":"oe","Ü":"UE","ü":"ue","ß":"ss","%":"prozent","&":"und","|":"oder","∑":"summe","∞":"unendlich","♥":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","¢":"centavos","£":"libras","¤":"moneda","₣":"francos","∑":"suma","∞":"infinito","♥":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","¢":"centime","£":"livre","¤":"devise","₣":"franc","∑":"somme","∞":"infini","♥":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","¢":"centavo","∑":"soma","£":"libra","∞":"infinito","♥":"amor"},"uk":{"И":"Y","и":"y","Й":"Y","й":"y","Ц":"Ts","ц":"ts","Х":"Kh","х":"kh","Щ":"Shch","щ":"shch","Г":"H","г":"h"},"vi":{"Đ":"D","đ":"d"},"da":{"Ø":"OE","ø":"oe","Å":"AA","å":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"større end"},"nb":{"&":"og","Å":"AA","Æ":"AE","Ø":"OE","å":"aa","æ":"ae","ø":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","Å":"AA","Ä":"AE","Ö":"OE","å":"aa","ä":"ae","ö":"oe"}}');function l(c,o){if(typeof c!="string")throw new Error("slugify: string argument expected");o=typeof o=="string"?{replacement:o}:o||{};var h=a[o.locale]||{},g=o.replacement===void 0?"-":o.replacement,e=o.trim===void 0?!0:o.trim,i=c.normalize().split("").reduce(function(s,u){var f=h[u];return f===void 0&&(f=n[u]),f===void 0&&(f=u),f===g&&(f=" "),s+f.replace(o.remove||/[^\w\s$*_+~.()'"!\-:@]+/g,"")},"");return o.strict&&(i=i.replace(/[^A-Za-z0-9\s]/g,"")),e&&(i=i.trim()),i=i.replace(/\s+/g,g),o.lower&&(i=i.toLowerCase()),i}return l.extend=function(c){Object.assign(n,c)},l})})(fe);const me=t=>t.split(/[\s-]/g).map(G).join(" ");function he(t,r){const{navigation:n}=M().public.content;if(n===!1)return[];const a=c=>({...pe(["title",...n.fields])(c),...de(c==null?void 0:c.navigation)?c.navigation:{}}),l=t.sort((c,o)=>c._path.localeCompare(o._path)).reduce((c,o)=>{const h=o._path.substring(1).split("/"),g=o._id.split(":").slice(1),e=!!g[g.length-1].match(/([1-9][0-9]*\.)?index.md/g),i=f=>({title:f.title,_path:f._path,_file:f._file,children:[],...a(f),...f._draft?{_draft:!0}:{}}),s=i(o);if(e){const f=r[s._path];if(typeof(f==null?void 0:f.navigation)<"u"&&!(f!=null&&f.navigation))return c;if(o._path!=="/"){const m=i(o);s.children.push(m)}Object.assign(s,a(f))}return h.length===1?(c.push(s),c):(h.slice(0,-1).reduce((f,m,y)=>{const v="/"+h.slice(0,y+1).join("/"),w=r[v];if(typeof(w==null?void 0:w.navigation)<"u"&&!w.navigation)return[];let I=f.find(O=>O._path===v);return I||(I={title:me(m),_path:v,_file:o._file,children:[],...a(w)},f.push(I)),I.children},c).push(s),c)},[]);return Y(l)}const ge=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function Y(t){var n;t.forEach(a=>{a._file=a._file.split(".").slice(0,-1).join(".")});const r=t.sort((a,l)=>ge.compare(a._file,l._file));for(const a of r)(n=a.children)!=null&&n.length?Y(a.children):delete a.children,delete a._file;return t}function pe(t){return r=>(r=r||{},t&&t.length?t.filter(n=>typeof r[n]<"u").reduce((n,a)=>Object.assign(n,{[a]:r[a]}),{}):r)}function de(t){return Object.prototype.toString.call(t)==="[object Object]"}const ye=t=>J(t,M().public.content.api.baseURL),we=re(se({driver:q()}),"@content");function ve(t){async function r(){const n=new Set(await t.getKeys("cache:")),a=U().getPreviewToken();if(a){const c=await t.getItem(`${a}$`).then(g=>g||{});if(Array.isArray(c.ignoreSources)){const g=c.ignoreSources.map(e=>`cache:${e.trim()}:`);for(const e of n)g.some(i=>e.startsWith(i))&&n.delete(e)}const o=await t.getKeys(`${a}:`),h=await Promise.all(o.map(g=>t.getItem(g)));for(const g of h)n.delete(`cache:${g._id}`),g.__deleted||n.add(`${a}:${g._id}`)}return await Promise.all(Array.from(n).map(c=>t.getItem(c)))}return{storage:t,fetch:N(r),query:n=>k(N(r),{initialParams:n,legacy:!0})}}let C=null,S=null;async function Ie(){return S?await S:C||(S=Ae(),C=await S),C}async function Ae(){const t=H(),{content:r}=M().public,n=ve(we),a=await n.storage.getItem("integrity");if(r.integrity!==+(a||0)){const{contents:l,navigation:c}=await $fetch(ye(r.integrity?`cache.${r.integrity}.json`:"cache.json"));await Promise.all(l.map(o=>n.storage.setItem(`cache:${o._id}`,o))),await n.storage.setItem("navigation",c),await n.storage.setItem("integrity",r.integrity)}return await t.callHook("content:storage",n.storage),n}async function _e(t){const r=await Ie();if(!U().getPreviewToken()&&Object.keys(t||{}).length===0)return r.storage.getItem("navigation");const n=await r.query(t).where({_partial:!1,navigation:{$ne:!1}}).find(),l=(await r.query().where({_path:/\/_dir$/i,_partial:!0}).find()).reduce((c,o)=>{var g;((g=o.title)==null?void 0:g.toLowerCase())==="dir"&&(o.title=void 0);const h=o._path.split("/").slice(0,-1).join("/")||"/";return c[h]={...o,...o.body},c},{});return he(n,l)}export{we as contentStorage,ve as createDB,_e as generateNavigation,Ie as useContentDatabase}; +import{Z as _,a8 as T,a9 as j,aa as E,ab as W,ac as B,ad as $,ae as P,af as D,a3 as b,v as M,ag as k,$ as U,ah as J,k as H}from"./ZAsafoXZ.js";import{p as G}from"./C-v3KzvZ.js";const Z="memory",q=()=>{const t=new Map;return{name:Z,options:{},hasItem(r){return t.has(r)},getItem(r){return t.get(r)??null},getItemRaw(r){return t.get(r)??null},setItem(r,n){t.set(r,n)},setItemRaw(r,n){t.set(r,n)},removeItem(r){t.delete(r)},getKeys(){return Array.from(t.keys())},clear(){t.clear()},dispose(){t.clear()}}};function F(t){return!t||typeof t.then!="function"?Promise.resolve(t):t}function p(t,...r){try{return F(t(...r))}catch(n){return Promise.reject(n)}}function V(t){const r=typeof t;return t===null||r!=="object"&&r!=="function"}function Q(t){const r=Object.getPrototypeOf(t);return!r||r.isPrototypeOf(Object)}function K(t){if(V(t))return String(t);if(Q(t)||Array.isArray(t))return JSON.stringify(t);if(typeof t.toJSON=="function")return K(t.toJSON());throw new Error("[unstorage] Cannot stringify value!")}function z(){if(typeof Buffer===void 0)throw new TypeError("[unstorage] Buffer is not supported!")}const R="base64:";function X(t){if(typeof t=="string")return t;z();const r=Buffer.from(t).toString("base64");return R+r}function ee(t){return typeof t!="string"||!t.startsWith(R)?t:(z(),Buffer.from(t.slice(R.length),"base64"))}const te=["hasItem","getItem","getItemRaw","setItem","setItemRaw","removeItem","getMeta","setMeta","removeMeta","getKeys","clear","mount","unmount"];function re(t,r){if(r=A(r),!r)return t;const n={...t};for(const a of te)n[a]=(l="",...c)=>t[a](r+l,...c);return n.getKeys=(a="",...l)=>t.getKeys(r+a,...l).then(c=>c.map(o=>o.slice(r.length))),n}function d(t){return t?t.split("?")[0].replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,""):""}function ne(...t){return d(t.join(":"))}function A(t){return t=d(t),t?t+":":""}const ie="memory",ae=()=>{const t=new Map;return{name:ie,options:{},hasItem(r){return t.has(r)},getItem(r){return t.get(r)??null},getItemRaw(r){return t.get(r)??null},setItem(r,n){t.set(r,n)},setItemRaw(r,n){t.set(r,n)},removeItem(r){t.delete(r)},getKeys(){return Array.from(t.keys())},clear(){t.clear()},dispose(){t.clear()}}};function se(t={}){const r={mounts:{"":t.driver||ae()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},n=e=>{for(const i of r.mountpoints)if(e.startsWith(i))return{base:i,relativeKey:e.slice(i.length),driver:r.mounts[i]};return{base:"",relativeKey:e,driver:r.mounts[""]}},a=(e,i)=>r.mountpoints.filter(s=>s.startsWith(e)||i&&e.startsWith(s)).map(s=>({relativeBase:e.length>s.length?e.slice(s.length):void 0,mountpoint:s,driver:r.mounts[s]})),l=(e,i)=>{if(r.watching){i=d(i);for(const s of r.watchListeners)s(e,i)}},c=async()=>{if(!r.watching){r.watching=!0;for(const e in r.mounts)r.unwatch[e]=await x(r.mounts[e],l,e)}},o=async()=>{if(r.watching){for(const e in r.unwatch)await r.unwatch[e]();r.unwatch={},r.watching=!1}},h=(e,i,s)=>{const u=new Map,f=m=>{let y=u.get(m.base);return y||(y={driver:m.driver,base:m.base,items:[]},u.set(m.base,y)),y};for(const m of e){const y=typeof m=="string",v=d(y?m:m.key),w=y?void 0:m.value,I=y||!m.options?i:{...i,...m.options},O=n(v);f(O).items.push({key:v,value:w,relativeKey:O.relativeKey,options:I})}return Promise.all([...u.values()].map(m=>s(m))).then(m=>m.flat())},g={hasItem(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return p(u.hasItem,s,i)},getItem(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return p(u.getItem,s,i).then(f=>_(f))},getItems(e,i){return h(e,i,s=>s.driver.getItems?p(s.driver.getItems,s.items.map(u=>({key:u.relativeKey,options:u.options})),i).then(u=>u.map(f=>({key:ne(s.base,f.key),value:_(f.value)}))):Promise.all(s.items.map(u=>p(s.driver.getItem,u.relativeKey,u.options).then(f=>({key:u.key,value:_(f)})))))},getItemRaw(e,i={}){e=d(e);const{relativeKey:s,driver:u}=n(e);return u.getItemRaw?p(u.getItemRaw,s,i):p(u.getItem,s,i).then(f=>ee(f))},async setItem(e,i,s={}){if(i===void 0)return g.removeItem(e);e=d(e);const{relativeKey:u,driver:f}=n(e);f.setItem&&(await p(f.setItem,u,K(i),s),f.watch||l("update",e))},async setItems(e,i){await h(e,i,async s=>{if(s.driver.setItems)return p(s.driver.setItems,s.items.map(u=>({key:u.relativeKey,value:K(u.value),options:u.options})),i);s.driver.setItem&&await Promise.all(s.items.map(u=>p(s.driver.setItem,u.relativeKey,K(u.value),u.options)))})},async setItemRaw(e,i,s={}){if(i===void 0)return g.removeItem(e,s);e=d(e);const{relativeKey:u,driver:f}=n(e);if(f.setItemRaw)await p(f.setItemRaw,u,i,s);else if(f.setItem)await p(f.setItem,u,X(i),s);else return;f.watch||l("update",e)},async removeItem(e,i={}){typeof i=="boolean"&&(i={removeMeta:i}),e=d(e);const{relativeKey:s,driver:u}=n(e);u.removeItem&&(await p(u.removeItem,s,i),(i.removeMeta||i.removeMata)&&await p(u.removeItem,s+"$",i),u.watch||l("remove",e))},async getMeta(e,i={}){typeof i=="boolean"&&(i={nativeOnly:i}),e=d(e);const{relativeKey:s,driver:u}=n(e),f=Object.create(null);if(u.getMeta&&Object.assign(f,await p(u.getMeta,s,i)),!i.nativeOnly){const m=await p(u.getItem,s+"$",i).then(y=>_(y));m&&typeof m=="object"&&(typeof m.atime=="string"&&(m.atime=new Date(m.atime)),typeof m.mtime=="string"&&(m.mtime=new Date(m.mtime)),Object.assign(f,m))}return f},setMeta(e,i,s={}){return this.setItem(e+"$",i,s)},removeMeta(e,i={}){return this.removeItem(e+"$",i)},async getKeys(e,i={}){e=A(e);const s=a(e,!0);let u=[];const f=[];for(const m of s){const v=(await p(m.driver.getKeys,m.relativeBase,i)).map(w=>m.mountpoint+d(w)).filter(w=>!u.some(I=>w.startsWith(I)));f.push(...v),u=[m.mountpoint,...u.filter(w=>!w.startsWith(m.mountpoint))]}return e?f.filter(m=>m.startsWith(e)&&!m.endsWith("$")):f.filter(m=>!m.endsWith("$"))},async clear(e,i={}){e=A(e),await Promise.all(a(e,!1).map(async s=>{if(s.driver.clear)return p(s.driver.clear,s.relativeBase,i);if(s.driver.removeItem){const u=await s.driver.getKeys(s.relativeBase||"",i);return Promise.all(u.map(f=>s.driver.removeItem(f,i)))}}))},async dispose(){await Promise.all(Object.values(r.mounts).map(e=>L(e)))},async watch(e){return await c(),r.watchListeners.push(e),async()=>{r.watchListeners=r.watchListeners.filter(i=>i!==e),r.watchListeners.length===0&&await o()}},async unwatch(){r.watchListeners=[],await o()},mount(e,i){if(e=A(e),e&&r.mounts[e])throw new Error(`already mounted at ${e}`);return e&&(r.mountpoints.push(e),r.mountpoints.sort((s,u)=>u.length-s.length)),r.mounts[e]=i,r.watching&&Promise.resolve(x(i,l,e)).then(s=>{r.unwatch[e]=s}).catch(console.error),g},async unmount(e,i=!0){e=A(e),!(!e||!r.mounts[e])&&(r.watching&&e in r.unwatch&&(r.unwatch[e](),delete r.unwatch[e]),i&&await L(r.mounts[e]),r.mountpoints=r.mountpoints.filter(s=>s!==e),delete r.mounts[e])},getMount(e=""){e=d(e)+":";const i=n(e);return{driver:i.driver,base:i.base}},getMounts(e="",i={}){return e=d(e),a(e,i.parents).map(u=>({driver:u.driver,base:u.mountpoint}))}};return g}function x(t,r,n){return t.watch?t.watch((a,l)=>r(a,n+l)):()=>{}}async function L(t){typeof t.dispose=="function"&&await p(t.dispose)}function oe(t={}){const r=ue(n,t.operators);function n(a,l){return typeof l!="object"||l instanceof RegExp?r.$eq(a,l):Object.keys(l||{}).every(c=>{const o=l[c];if(c.startsWith("$")&&r[c]){const h=r[c];return typeof h=="function"?h(a,o):!1}return n(T(a,c),o)})}return n}function ue(t,r={}){return{$match:(n,a)=>t(n,a),$eq:(n,a)=>a instanceof RegExp?a.test(n):n===a,$ne:(n,a)=>a instanceof RegExp?!a.test(n):n!==a,$not:(n,a)=>!t(n,a),$and:(n,a)=>(j(a,"$and requires an array as condition"),a.every(l=>t(n,l))),$or:(n,a)=>(j(a,"$or requires an array as condition"),a.some(l=>t(n,l))),$in:(n,a)=>E(a).some(l=>Array.isArray(n)?t(n,{$contains:l}):t(n,l)),$contains:(n,a)=>(n=Array.isArray(n)?n:String(n),E(a).every(l=>n.includes(l))),$icontains:(n,a)=>{if(typeof a!="string")throw new TypeError("$icontains requires a string, use $contains instead");return n=String(n).toLocaleLowerCase(),E(a).every(l=>n.includes(l.toLocaleLowerCase()))},$containsAny:(n,a)=>(j(a,"$containsAny requires an array as condition"),n=Array.isArray(n)?n:String(n),a.some(l=>n.includes(l))),$exists:(n,a)=>a?typeof n<"u":typeof n>"u",$type:(n,a)=>typeof n===String(a),$regex:(n,a)=>{if(!(a instanceof RegExp)){const l=String(a).match(/\/(.*)\/([dgimsuy]*)$/);a=l?new RegExp(l[1],l[2]||""):new RegExp(a)}return a.test(String(n||""))},$lt:(n,a)=>nn<=a,$gt:(n,a)=>n>a,$gte:(n,a)=>n>=a,...r||{}}}function ce(t){const r=oe(),n=(c,{query:o,before:h,after:g})=>{const e=typeof o=="string"?{_path:o}:o,i=c.findIndex(u=>r(u,e));h=h??1,g=g??1;const s=new Array(h+g).fill(null,0);return i===-1?s:s.map((u,f)=>c[i-h+f+ +(f>=h)]||null)},a=[(c,o)=>{const h=c.result.filter(g=>E(o.where).every(e=>r(g,e)));return{...c,result:h,total:h.length}},(c,o)=>E(o.sort).forEach(h=>B(c.result,h)),function(o,h,g){var e;if(h.surround){let i=n(((e=o.result)==null?void 0:e.length)===1?g:o.result,h.surround);i=$(P(h.without))(i),i=$(D(h.only))(i),o.surround=i}return o}],l=[(c,o)=>{if(o.skip)return{...c,result:c.result.slice(o.skip),skip:o.skip}},(c,o)=>{if(o.limit)return{...c,result:c.result.slice(0,o.limit),limit:o.limit}},function(o,h,g){var e,i,s;if(h.dirConfig){const u=((e=o.result[0])==null?void 0:e._path)||((s=(i=h.where)==null?void 0:i.find(f=>f._path))==null?void 0:s._path);if(typeof u=="string"){const f=g.find(m=>m._path===b(u,"_dir"));f&&(o.dirConfig={_path:f._path,...P(["_"])(f)})}}return o},(c,o)=>({...c,result:$(P(o.without))(c.result)}),(c,o)=>({...c,result:$(D(o.only))(c.result)})];return async c=>{const o=await t(),h=c.params(),g={result:o,limit:0,skip:0,total:o.length},e=a.reduce((s,u)=>u(s,h,o)||s,g);if(h.count)return{result:e.result.length};const i=l.reduce((s,u)=>u(s,h,o)||s,e);return h.first?{...W(["skip","limit","total"])(i),result:i.result[0]}:i}}function N(t){const r=ce(t);return async n=>{var c;n.params().first&&n.withDirConfig();const a=n.params(),l=await r(n);return a.surround?l==null?void 0:l.surround:(l!=null&&l.dirConfig&&(l.result={_path:(c=l.dirConfig)==null?void 0:c._path,...l.result,_dir:l.dirConfig}),l==null?void 0:l.result)}}var le=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},fe={exports:{}};(function(t,r){(function(n,a,l){t.exports=l(),t.exports.default=l()})("slugify",le,function(){var n=JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ō":"O","ō":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","Ə":"E","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","ə":"e","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"E'","Ը":"Y'","Թ":"T'","Ժ":"JH","Ի":"I","Լ":"L","Խ":"X","Ծ":"C'","Կ":"K","Հ":"H","Ձ":"D'","Ղ":"GH","Ճ":"TW","Մ":"M","Յ":"Y","Ն":"N","Շ":"SH","Չ":"CH","Պ":"P","Ջ":"J","Ռ":"R'","Ս":"S","Վ":"V","Տ":"T","Ր":"R","Ց":"C","Փ":"P'","Ք":"Q'","Օ":"O''","Ֆ":"F","և":"EV","ء":"a","آ":"aa","أ":"a","ؤ":"u","إ":"i","ئ":"e","ا":"a","ب":"b","ة":"h","ت":"t","ث":"th","ج":"j","ح":"h","خ":"kh","د":"d","ذ":"th","ر":"r","ز":"z","س":"s","ش":"sh","ص":"s","ض":"dh","ط":"t","ظ":"z","ع":"a","غ":"gh","ف":"f","ق":"q","ك":"k","ل":"l","م":"m","ن":"n","ه":"h","و":"w","ى":"a","ي":"y","ً":"an","ٌ":"on","ٍ":"en","َ":"a","ُ":"u","ِ":"e","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","پ":"p","چ":"ch","ژ":"zh","ک":"k","گ":"g","ی":"y","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ṣ":"S","ṣ":"s","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","–":"-","‘":"'","’":"'","“":"\\"","”":"\\"","„":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₺":"turkish lira","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial","ﻵ":"laa","ﻷ":"laa","ﻹ":"lai","ﻻ":"la"}`),a=JSON.parse('{"bg":{"Й":"Y","Ц":"Ts","Щ":"Sht","Ъ":"A","Ь":"Y","й":"y","ц":"ts","щ":"sht","ъ":"a","ь":"y"},"de":{"Ä":"AE","ä":"ae","Ö":"OE","ö":"oe","Ü":"UE","ü":"ue","ß":"ss","%":"prozent","&":"und","|":"oder","∑":"summe","∞":"unendlich","♥":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","¢":"centavos","£":"libras","¤":"moneda","₣":"francos","∑":"suma","∞":"infinito","♥":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","¢":"centime","£":"livre","¤":"devise","₣":"franc","∑":"somme","∞":"infini","♥":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","¢":"centavo","∑":"soma","£":"libra","∞":"infinito","♥":"amor"},"uk":{"И":"Y","и":"y","Й":"Y","й":"y","Ц":"Ts","ц":"ts","Х":"Kh","х":"kh","Щ":"Shch","щ":"shch","Г":"H","г":"h"},"vi":{"Đ":"D","đ":"d"},"da":{"Ø":"OE","ø":"oe","Å":"AA","å":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"større end"},"nb":{"&":"og","Å":"AA","Æ":"AE","Ø":"OE","å":"aa","æ":"ae","ø":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","Å":"AA","Ä":"AE","Ö":"OE","å":"aa","ä":"ae","ö":"oe"}}');function l(c,o){if(typeof c!="string")throw new Error("slugify: string argument expected");o=typeof o=="string"?{replacement:o}:o||{};var h=a[o.locale]||{},g=o.replacement===void 0?"-":o.replacement,e=o.trim===void 0?!0:o.trim,i=c.normalize().split("").reduce(function(s,u){var f=h[u];return f===void 0&&(f=n[u]),f===void 0&&(f=u),f===g&&(f=" "),s+f.replace(o.remove||/[^\w\s$*_+~.()'"!\-:@]+/g,"")},"");return o.strict&&(i=i.replace(/[^A-Za-z0-9\s]/g,"")),e&&(i=i.trim()),i=i.replace(/\s+/g,g),o.lower&&(i=i.toLowerCase()),i}return l.extend=function(c){Object.assign(n,c)},l})})(fe);const me=t=>t.split(/[\s-]/g).map(G).join(" ");function he(t,r){const{navigation:n}=M().public.content;if(n===!1)return[];const a=c=>({...pe(["title",...n.fields])(c),...de(c==null?void 0:c.navigation)?c.navigation:{}}),l=t.sort((c,o)=>c._path.localeCompare(o._path)).reduce((c,o)=>{const h=o._path.substring(1).split("/"),g=o._id.split(":").slice(1),e=!!g[g.length-1].match(/([1-9][0-9]*\.)?index.md/g),i=f=>({title:f.title,_path:f._path,_file:f._file,children:[],...a(f),...f._draft?{_draft:!0}:{}}),s=i(o);if(e){const f=r[s._path];if(typeof(f==null?void 0:f.navigation)<"u"&&!(f!=null&&f.navigation))return c;if(o._path!=="/"){const m=i(o);s.children.push(m)}Object.assign(s,a(f))}return h.length===1?(c.push(s),c):(h.slice(0,-1).reduce((f,m,y)=>{const v="/"+h.slice(0,y+1).join("/"),w=r[v];if(typeof(w==null?void 0:w.navigation)<"u"&&!w.navigation)return[];let I=f.find(O=>O._path===v);return I||(I={title:me(m),_path:v,_file:o._file,children:[],...a(w)},f.push(I)),I.children},c).push(s),c)},[]);return Y(l)}const ge=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function Y(t){var n;t.forEach(a=>{a._file=a._file.split(".").slice(0,-1).join(".")});const r=t.sort((a,l)=>ge.compare(a._file,l._file));for(const a of r)(n=a.children)!=null&&n.length?Y(a.children):delete a.children,delete a._file;return t}function pe(t){return r=>(r=r||{},t&&t.length?t.filter(n=>typeof r[n]<"u").reduce((n,a)=>Object.assign(n,{[a]:r[a]}),{}):r)}function de(t){return Object.prototype.toString.call(t)==="[object Object]"}const ye=t=>J(t,M().public.content.api.baseURL),we=re(se({driver:q()}),"@content");function ve(t){async function r(){const n=new Set(await t.getKeys("cache:")),a=U().getPreviewToken();if(a){const c=await t.getItem(`${a}$`).then(g=>g||{});if(Array.isArray(c.ignoreSources)){const g=c.ignoreSources.map(e=>`cache:${e.trim()}:`);for(const e of n)g.some(i=>e.startsWith(i))&&n.delete(e)}const o=await t.getKeys(`${a}:`),h=await Promise.all(o.map(g=>t.getItem(g)));for(const g of h)n.delete(`cache:${g._id}`),g.__deleted||n.add(`${a}:${g._id}`)}return await Promise.all(Array.from(n).map(c=>t.getItem(c)))}return{storage:t,fetch:N(r),query:n=>k(N(r),{initialParams:n,legacy:!0})}}let C=null,S=null;async function Ie(){return S?await S:C||(S=Ae(),C=await S),C}async function Ae(){const t=H(),{content:r}=M().public,n=ve(we),a=await n.storage.getItem("integrity");if(r.integrity!==+(a||0)){const{contents:l,navigation:c}=await $fetch(ye(r.integrity?`cache.${r.integrity}.json`:"cache.json"));await Promise.all(l.map(o=>n.storage.setItem(`cache:${o._id}`,o))),await n.storage.setItem("navigation",c),await n.storage.setItem("integrity",r.integrity)}return await t.callHook("content:storage",n.storage),n}async function _e(t){const r=await Ie();if(!U().getPreviewToken()&&Object.keys(t||{}).length===0)return r.storage.getItem("navigation");const n=await r.query(t).where({_partial:!1,navigation:{$ne:!1}}).find(),l=(await r.query().where({_path:/\/_dir$/i,_partial:!0}).find()).reduce((c,o)=>{var g;((g=o.title)==null?void 0:g.toLowerCase())==="dir"&&(o.title=void 0);const h=o._path.split("/").slice(0,-1).join("/")||"/";return c[h]={...o,...o.body},c},{});return he(n,l)}export{we as contentStorage,ve as createDB,_e as generateNavigation,Ie as useContentDatabase}; diff --git a/_nuxt/XRF4b_vJ.js b/_nuxt/ZAsafoXZ.js similarity index 97% rename from _nuxt/XRF4b_vJ.js rename to _nuxt/ZAsafoXZ.js index 92323e04..9cdf2fd5 100644 --- a/_nuxt/XRF4b_vJ.js +++ b/_nuxt/ZAsafoXZ.js @@ -1,4 +1,4 @@ -const __vite__fileDeps=["./CXEfJix5.js","./C7ePx9hc.js","./CM4QiD5h.js","./CRDyED6e.js","./C-v3KzvZ.js","./Dnd51l0P.js","./DVDnHXyh.js","./BhlzmK7H.js","./CnFyItyq.js","./dMipb99y.js","./B5fxoaT1.js","./CbIcpiPE.js","./DhTXWxNA.js","./Bs0KA79C.js","./DD8qZ3hl.js","./BphJWFSF.js","./BN4hubtl.js","./CeI02lA4.js","./mEzFdTf5.js","./zx29ONos.js","./DYhIpFu0.js","./CnHPgHnb.js","./D-84Lps2.js","./0WakZ16l.js","./a3JeNMBb.js","./speaker-media.DNvhPn-B.css","./B-yvyQ1i.js","./talks.DHSqWsDZ.css","./Co6DaCUo.js","./B7ph2GW4.js","./BUmnHLhL.js","./zSbY1IBA.js","./B7wil4S-.js","./vag9yJ5y.js","./ProsePre.CchFRBtv.css","./BbY90lsR.js","./tjftRvHX.js","./BD-CroyX.js","./useStudio.DjuB_Dwr.css","./BeWLaV8q.js","./B_fY9PLq.js","./error-404.JekaaCis.css","./CBNC_GX-.js","./error-500.CNP9nqm1.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +const __vite__fileDeps=["./D0V36zTW.js","./DNoJqnvj.js","./DfsoDfS3.js","./IFCu-2Bx.js","./C-v3KzvZ.js","./Dnd51l0P.js","./Bg8nkQWz.js","./CfHTnMbA.js","./B68gSBWJ.js","./KCTYD4Gn.js","./DY4Qxm47.js","./ITNRvgtr.js","./CVVxf02X.js","./ETHpkkS0.js","./B38Kd99h.js","./C7iq-ot0.js","./BCkGF8ol.js","./CeI02lA4.js","./rnAScy2C.js","./dxcZF-PA.js","./CTYUGvGO.js","./CBaLZRFI.js","./DWI8ydmZ.js","./DgOxVXtI.js","./CqwHQiUm.js","./speaker-media.DNvhPn-B.css","./BdS669jU.js","./talks.DHSqWsDZ.css","./DBOe6xVj.js","./DxFydul6.js","./DPiVMe_u.js","./Czc1t-wM.js","./CyG0l8cR.js","./B0YuqmE5.js","./ProsePre.CchFRBtv.css","./DaYxZgJd.js","./Cg5RESyK.js","./7RLhvcjy.js","./useStudio.DjuB_Dwr.css","./V5CGSosh.js","./Duj2v7Mb.js","./error-404.JekaaCis.css","./C4nES0Wi.js","./error-500.CNP9nqm1.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); /** * @vue/shared v3.4.27 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -17,10 +17,10 @@ const __vite__fileDeps=["./CXEfJix5.js","./C7ePx9hc.js","./CM4QiD5h.js","./CRDyE * @license MIT **/const Hf="http://www.w3.org/2000/svg",Mf="http://www.w3.org/1998/Math/MathML",wt=typeof document<"u"?document:null,ii=wt&&wt.createElement("template"),$f={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?wt.createElementNS(Hf,e):t==="mathml"?wt.createElementNS(Mf,e):wt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>wt.createTextNode(e),createComment:e=>wt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>wt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{ii.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const a=ii.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},gt="transition",pn="animation",Mn=Symbol("_vtc"),wo=(e,{slots:t})=>Ae(qu,Nf(e),t);wo.displayName="Transition";const xl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};wo.props=ye({},Ga,xl);const Lt=(e,t=[])=>{G(e)?e.forEach(n=>n(...t)):e&&e(...t)},ai=e=>e?G(e)?e.some(t=>t.length>1):e.length>1:!1;function Nf(e){const t={};for(const I in e)I in xl||(t[I]=e[I]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:u=i,appearToClass:c=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,_=Df(s),w=_&&_[0],x=_&&_[1],{onBeforeEnter:C,onEnter:y,onEnterCancelled:m,onLeave:v,onLeaveCancelled:E,onBeforeAppear:P=C,onAppear:H=y,onAppearCancelled:A=m}=t,N=(I,J,le)=>{It(I,J?c:a),It(I,J?u:i),le&&le()},$=(I,J)=>{I._isLeaving=!1,It(I,f),It(I,g),It(I,d),J&&J()},X=I=>(J,le)=>{const ce=I?H:y,U=()=>N(J,I,le);Lt(ce,[J,U]),li(()=>{It(J,I?l:o),mt(J,I?c:a),ai(ce)||ci(J,r,w,U)})};return ye(t,{onBeforeEnter(I){Lt(C,[I]),mt(I,o),mt(I,i)},onBeforeAppear(I){Lt(P,[I]),mt(I,l),mt(I,u)},onEnter:X(!1),onAppear:X(!0),onLeave(I,J){I._isLeaving=!0;const le=()=>$(I,J);mt(I,f),mt(I,d),Ff(),li(()=>{I._isLeaving&&(It(I,f),mt(I,g),ai(v)||ci(I,r,x,le))}),Lt(v,[I,le])},onEnterCancelled(I){N(I,!1),Lt(m,[I])},onAppearCancelled(I){N(I,!0),Lt(A,[I])},onLeaveCancelled(I){$(I),Lt(E,[I])}})}function Df(e){if(e==null)return null;if(fe(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return ga(e)}function mt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Mn]||(e[Mn]=new Set)).add(t)}function It(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Mn];n&&(n.delete(t),n.size||(e[Mn]=void 0))}function li(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let jf=0;function ci(e,t,n,r){const s=e._endId=++jf,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=Bf(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,d),o()},d=g=>{g.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[_]||"").split(", "),s=r(`${gt}Delay`),o=r(`${gt}Duration`),i=ui(s,o),a=r(`${pn}Delay`),l=r(`${pn}Duration`),u=ui(a,l);let c=null,f=0,d=0;t===gt?i>0&&(c=gt,f=i,d=o.length):t===pn?u>0&&(c=pn,f=u,d=l.length):(f=Math.max(i,u),c=f>0?i>u?gt:pn:null,d=c?c===gt?o.length:l.length:0);const g=c===gt&&/\b(transform|all)(,|$)/.test(r(`${gt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:g}}function ui(e,t){for(;e.lengthfi(n)+fi(e[r])))}function fi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Ff(){return document.body.offsetHeight}function Uf(e,t,n){const r=e[Mn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const di=Symbol("_vod"),Vf=Symbol("_vsh"),Kf=Symbol(""),zf=/(^|;)\s*display\s*:/;function Wf(e,t,n){const r=e.style,s=me(n);let o=!1;if(n&&!s){if(t)if(me(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&pr(r,a,"")}else for(const i in t)n[i]==null&&pr(r,i,"");for(const i in n)i==="display"&&(o=!0),pr(r,i,n[i])}else if(s){if(t!==n){const i=r[Kf];i&&(n+=";"+i),r.cssText=n,o=zf.test(n)}}else t&&e.removeAttribute("style");di in e&&(e[di]=o?r.display:"",e[Vf]&&(r.display="none"))}const hi=/\s*!important$/;function pr(e,t,n){if(G(n))n.forEach(r=>pr(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=qf(e,t);hi.test(n)?e.setProperty(cn(r),n.replace(hi,""),"important"):e[r]=n}}const pi=["Webkit","Moz","ms"],is={};function qf(e,t){const n=is[t];if(n)return n;let r=nt(t);if(r!=="filter"&&r in e)return is[t]=r;r=$r(r);for(let s=0;sas||(ed.then(()=>as=0),as=Date.now());function nd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ve(rd(r,n.value),t,5,[r])};return n.value=e,n.attached=td(),n}function rd(e,t){if(G(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const _i=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,sd=(e,t,n,r,s,o,i,a,l)=>{const u=s==="svg";t==="class"?Uf(e,r,u):t==="style"?Wf(e,n,r):Un(t)?Zs(t)||Zf(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):od(e,t,r,u))?Jf(e,t,r,o,i,a,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Gf(e,t,r,u))};function od(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&_i(t)&&Z(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return _i(t)&&me(n)?!1:t in e}const kl=ye({patchProp:sd},$f);let Sn,vi=!1;function id(){return Sn||(Sn=wf(kl))}function ad(){return Sn=vi?Sn:Ef(kl),vi=!0,Sn}const ld=(...e)=>{const t=id().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ol(r);if(!s)return;const o=t._component;!Z(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,Al(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},cd=(...e)=>{const t=ad().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ol(r);if(s)return n(s,!0,Al(s))},t};function Al(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ol(e){return me(e)?document.querySelector(e):e}const ud=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,fd=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,dd=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function hd(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){pd(e);return}return t}function pd(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function $n(e,t={}){if(typeof e!="string")return e;const n=e.trim();if(e[0]==='"'&&e.endsWith('"')&&!e.includes("\\"))return n.slice(1,-1);if(n.length<=9){const r=n.toLowerCase();if(r==="true")return!0;if(r==="false")return!1;if(r==="undefined")return;if(r==="null")return null;if(r==="nan")return Number.NaN;if(r==="infinity")return Number.POSITIVE_INFINITY;if(r==="-infinity")return Number.NEGATIVE_INFINITY}if(!dd.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(ud.test(e)||fd.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,hd)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}const Ll=/#/g,Il=/&/g,Hl=/\//g,gd=/=/g,md=/\?/g,zr=/\+/g,yd=/%5e/gi,_d=/%60/gi,vd=/%7c/gi,bd=/%20/gi,wd=/%252f/gi;function Ml(e){return encodeURI(""+e).replace(vd,"|")}function Is(e){return Ml(typeof e=="string"?e:JSON.stringify(e)).replace(zr,"%2B").replace(bd,"+").replace(Ll,"%23").replace(Il,"%26").replace(_d,"`").replace(yd,"^").replace(Hl,"%2F")}function ls(e){return Is(e).replace(gd,"%3D")}function Ed(e){return Ml(e).replace(Ll,"%23").replace(md,"%3F").replace(wd,"%2F").replace(Il,"%26").replace(zr,"%2B")}function u0(e){return Ed(e).replace(Hl,"%2F")}function xr(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function Pd(e){return xr(e.replace(zr," "))}function Cd(e){return xr(e.replace(zr," "))}function $l(e=""){const t={};e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const s=Pd(r[1]);if(s==="__proto__"||s==="constructor")continue;const o=Cd(r[2]||"");t[s]===void 0?t[s]=o:Array.isArray(t[s])?t[s].push(o):t[s]=[t[s],o]}return t}function Rd(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${ls(e)}=${Is(n)}`).join("&"):`${ls(e)}=${Is(t)}`:ls(e)}function Td(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>Rd(t,e[t])).filter(Boolean).join("&")}const Sd=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,xd=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,kd=/^([/\\]\s*){2,}[^/\\]/,Ad=/^[\s\0]*(blob|data|javascript|vbscript):$/i,Od=/\/$|\/\?|\/#/,Ld=/^\.?\//;function ut(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?Sd.test(e):xd.test(e)||(t.acceptRelative?kd.test(e):!1)}function Id(e){return!!e&&Ad.test(e)}function Hs(e="",t){return t?Od.test(e):e.endsWith("/")}function Jn(e="",t){if(!t)return(Hs(e)?e.slice(0,-1):e)||"/";if(!Hs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");s>=0&&(n=e.slice(0,s),r=e.slice(s));const[o,...i]=n.split("?");return((o.endsWith("/")?o.slice(0,-1):o)||"/")+(i.length>0?`?${i.join("?")}`:"")+r}function kr(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(Hs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");if(s>=0&&(n=e.slice(0,s),r=e.slice(s),!n))return r;const[o,...i]=n.split("?");return o+"/"+(i.length>0?`?${i.join("?")}`:"")+r}function Hd(e=""){return e.startsWith("/")}function Ms(e=""){return Hd(e)?e:"/"+e}function Nl(e,t){if(jl(t)||ut(e))return e;const n=Jn(t);return e.startsWith(n)?e:Qn(n,e)}function bi(e,t){if(jl(t))return e;const n=Jn(t);if(!e.startsWith(n))return e;const r=e.slice(n.length);return r[0]==="/"?r:"/"+r}function Dl(e,t){const n=Xn(e),r={...$l(n.search),...t};return n.search=Td(r),Nd(n)}function jl(e){return!e||e==="/"}function Md(e){return e&&e!=="/"}function Qn(e,...t){let n=e||"";for(const r of t.filter(s=>Md(s)))if(n){const s=r.replace(Ld,"");n=kr(n)+s}else n=r;return n}function Bl(...e){var i,a,l,u;const t=/\/(?!\/)/,n=e.filter(Boolean),r=[];let s=0;for(const c of n)if(!(!c||c==="/")){for(const[f,d]of c.split(t).entries())if(!(!d||d===".")){if(d===".."){if(r.length===1&&ut(r[0]))continue;r.pop(),s--;continue}if(f===1&&((i=r[r.length-1])!=null&&i.endsWith(":/"))){r[r.length-1]+="/"+d;continue}r.push(d),s++}}let o=r.join("/");return s>=0?(a=n[0])!=null&&a.startsWith("/")&&!o.startsWith("/")?o="/"+o:(l=n[0])!=null&&l.startsWith("./")&&!o.startsWith("./")&&(o="./"+o):o="../".repeat(-1*s)+o,(u=n[n.length-1])!=null&&u.endsWith("/")&&!o.endsWith("/")&&(o+="/"),o}function $d(e,t,n={}){return n.trailingSlash||(e=kr(e),t=kr(t)),n.leadingSlash||(e=Ms(e),t=Ms(t)),n.encoding||(e=xr(e),t=xr(t)),e===t}const Fl=Symbol.for("ufo:protocolRelative");function Xn(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,f,d=""]=n;return{protocol:f.toLowerCase(),pathname:d,href:f+d,auth:"",host:"",search:"",hash:""}}if(!ut(e,{acceptRelative:!0}))return t?Xn(t+e):wi(e);const[,r="",s,o=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[],[,i="",a=""]=o.match(/([^#/?]*)(.*)?/)||[],{pathname:l,search:u,hash:c}=wi(a.replace(/\/(?=[A-Za-z]:)/,""));return{protocol:r.toLowerCase(),auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:l,search:u,hash:c,[Fl]:!r}}function wi(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Nd(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",r=e.hash||"",s=e.auth?e.auth+"@":"",o=e.host||"";return(e.protocol||e[Fl]?(e.protocol||"")+"//":"")+s+o+t+n+r}class Dd extends Error{constructor(t,n){super(t,n),this.name="FetchError",n!=null&&n.cause&&!this.cause&&(this.cause=n.cause)}}function jd(e){var l,u,c,f,d;const t=((l=e.error)==null?void 0:l.message)||((u=e.error)==null?void 0:u.toString())||"",n=((c=e.request)==null?void 0:c.method)||((f=e.options)==null?void 0:f.method)||"GET",r=((d=e.request)==null?void 0:d.url)||String(e.request)||"/",s=`[${n}] ${JSON.stringify(r)}`,o=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${s}: ${o}${t?` ${t}`:""}`,a=new Dd(i,e.error?{cause:e.error}:void 0);for(const g of["request","options","response"])Object.defineProperty(a,g,{get(){return e[g]}});for(const[g,_]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(a,g,{get(){return e.response&&e.response[_]}});return a}const Bd=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function Ei(e="GET"){return Bd.has(e.toUpperCase())}function Fd(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const Ud=new Set(["image/svg","application/xml","application/xhtml","application/html"]),Vd=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Kd(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return Vd.test(t)?"json":Ud.has(t)||t.startsWith("text/")?"text":"blob"}function zd(e,t,n=globalThis.Headers){const r={...t,...e};if(t!=null&&t.params&&(e!=null&&e.params)&&(r.params={...t==null?void 0:t.params,...e==null?void 0:e.params}),t!=null&&t.query&&(e!=null&&e.query)&&(r.query={...t==null?void 0:t.query,...e==null?void 0:e.query}),t!=null&&t.headers&&(e!=null&&e.headers)){r.headers=new n((t==null?void 0:t.headers)||{});for(const[s,o]of new n((e==null?void 0:e.headers)||{}))r.headers.set(s,o)}return r}const Wd=new Set([408,409,425,429,500,502,503,504]),qd=new Set([101,204,205,304]);function Ul(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function s(a){const l=a.error&&a.error.name==="AbortError"&&!a.options.timeout||!1;if(a.options.retry!==!1&&!l){let c;typeof a.options.retry=="number"?c=a.options.retry:c=Ei(a.options.method)?0:1;const f=a.response&&a.response.status||500;if(c>0&&(Array.isArray(a.options.retryStatusCodes)?a.options.retryStatusCodes.includes(f):Wd.has(f))){const d=a.options.retryDelay||0;return d>0&&await new Promise(g=>setTimeout(g,d)),o(a.request,{...a.options,retry:c-1})}}const u=jd(a);throw Error.captureStackTrace&&Error.captureStackTrace(u,o),u}const o=async function(l,u={}){var g;const c={request:l,options:zd(u,e.defaults,n),response:void 0,error:void 0};c.options.method=(g=c.options.method)==null?void 0:g.toUpperCase(),c.options.onRequest&&await c.options.onRequest(c),typeof c.request=="string"&&(c.options.baseURL&&(c.request=Nl(c.request,c.options.baseURL)),(c.options.query||c.options.params)&&(c.request=Dl(c.request,{...c.options.params,...c.options.query}))),c.options.body&&Ei(c.options.method)&&(Fd(c.options.body)?(c.options.body=typeof c.options.body=="string"?c.options.body:JSON.stringify(c.options.body),c.options.headers=new n(c.options.headers||{}),c.options.headers.has("content-type")||c.options.headers.set("content-type","application/json"),c.options.headers.has("accept")||c.options.headers.set("accept","application/json")):("pipeTo"in c.options.body&&typeof c.options.body.pipeTo=="function"||typeof c.options.body.pipe=="function")&&("duplex"in c.options||(c.options.duplex="half")));let f;if(!c.options.signal&&c.options.timeout){const _=new r;f=setTimeout(()=>_.abort(),c.options.timeout),c.options.signal=_.signal}try{c.response=await t(c.request,c.options)}catch(_){return c.error=_,c.options.onRequestError&&await c.options.onRequestError(c),await s(c)}finally{f&&clearTimeout(f)}if(c.response.body&&!qd.has(c.response.status)&&c.options.method!=="HEAD"){const _=(c.options.parseResponse?"json":c.options.responseType)||Kd(c.response.headers.get("content-type")||"");switch(_){case"json":{const w=await c.response.text(),x=c.options.parseResponse||$n;c.response._data=x(w);break}case"stream":{c.response._data=c.response.body;break}default:c.response._data=await c.response[_]()}}return c.options.onResponse&&await c.options.onResponse(c),!c.options.ignoreResponseError&&c.response.status>=400&&c.response.status<600?(c.options.onResponseError&&await c.options.onResponseError(c),await s(c)):c.response},i=async function(l,u){return(await o(l,u))._data};return i.raw=o,i.native=(...a)=>t(...a),i.create=(a={})=>Ul({...e,defaults:{...e.defaults,...a}}),i}const Eo=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),Gd=Eo.fetch||(()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!"))),Jd=Eo.Headers,Qd=Eo.AbortController,Xd=Ul({fetch:Gd,Headers:Jd,AbortController:Qd}),Zd=Xd,Yd=()=>{var e;return((e=window==null?void 0:window.__NUXT__)==null?void 0:e.config)||{}},Ar=Yd().app,eh=()=>Ar.baseURL,th=()=>Ar.buildAssetsDir,Po=(...e)=>Bl(Vl(),th(),...e),Vl=(...e)=>{const t=Ar.cdnURL||Ar.baseURL;return e.length?Bl(t,...e):t};globalThis.__buildAssetsURL=Po,globalThis.__publicAssetsURL=Vl;globalThis.$fetch||(globalThis.$fetch=Zd.create({baseURL:eh()}));function $s(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?$s(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const nh={run:e=>e()},rh=()=>nh,Kl=typeof console.createTask<"u"?console.createTask:rh;function sh(e,t){const n=t.shift(),r=Kl(n);return e.reduce((s,o)=>s.then(()=>r.run(()=>o(...t))),Promise.resolve())}function oh(e,t){const n=t.shift(),r=Kl(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}function cs(e,t){for(const n of[...e])n(t)}class ih{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const s=t;let o;for(;this._deprecatedHooks[t];)o=this._deprecatedHooks[t],t=o.to;if(o&&!r.allowDeprecated){let i=o.message;i||(i=`${s} hook has been deprecated`+(o.to?`, please use ${o.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,s=(...o)=>(typeof r=="function"&&r(),r=void 0,s=void 0,n(...o));return r=this.hook(t,s),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const s of r)this.hook(t,s)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=$s(t),r=Object.keys(n).map(s=>this.hook(s,n[s]));return()=>{for(const s of r.splice(0,r.length))s()}}removeHooks(t){const n=$s(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(sh,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(oh,t,...n)}callHookWith(t,n,...r){const s=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&cs(this._before,s);const o=t(n in this._hooks?[...this._hooks[n]]:[],r);return o instanceof Promise?o.finally(()=>{this._after&&s&&cs(this._after,s)}):(this._after&&s&&cs(this._after,s),o)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function zl(){return new ih}function ah(e={}){let t,n=!1;const r=i=>{if(t&&t!==i)throw new Error("Context conflict")};let s;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?s=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const o=()=>{if(s&&t===void 0){const i=s.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=o();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>o(),set:(i,a)=>{a||r(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,a)=>{r(i),t=i;try{return s?s.run(i,a):a()}finally{n||(t=void 0)}},async callAsync(i,a){t=i;const l=()=>{t=i},u=()=>t===i?l:void 0;Ns.add(u);try{const c=s?s.run(i,a):a();return n||(t=void 0),await c}finally{Ns.delete(u)}}}}function lh(e={}){const t={};return{get(n,r={}){return t[n]||(t[n]=ah({...e,...r})),t[n],t[n]}}}const Or=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},Pi="__unctx__",ch=Or[Pi]||(Or[Pi]=lh()),uh=(e,t={})=>ch.get(e,t),Ci="__unctx_async_handlers__",Ns=Or[Ci]||(Or[Ci]=new Set);function Nn(e){const t=[];for(const s of Ns){const o=s();o&&t.push(o)}const n=()=>{for(const s of t)s()};let r=e();return r&&typeof r=="object"&&"catch"in r&&(r=r.catch(s=>{throw n(),s})),[r,n]}const Wl=uh("nuxt-app",{asyncContext:!1}),fh="__nuxt_plugin";function dh(e){let t=0;const n={_scope:qc(),provide:void 0,globalName:"nuxt",versions:{get nuxt(){return"3.11.2"},get vue(){return n.vueApp.version}},payload:At({data:{},state:{},once:new Set,_errors:{},...window.__NUXT__??{}}),static:{data:{}},runWithContext:s=>n._scope.run(()=>gh(n,s)),isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:{},_payloadRevivers:{},...e};n.hooks=zl(),n.hook=n.hooks.hook,n.callHook=n.hooks.callHook,n.provide=(s,o)=>{const i="$"+s;cr(n,i,o),cr(n.vueApp.config.globalProperties,i,o)},cr(n.vueApp,"$nuxt",n),cr(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener("nuxt.preloadError",o=>{n.callHook("app:chunkError",{error:o.payload})}),window.useNuxtApp=window.useNuxtApp||de;const s=n.hook("app:error",(...o)=>{console.error("[nuxt] error caught during app initialization",...o)});n.hook("app:mounted",s)}const r=n.payload.config;return n.provide("config",r),n}async function hh(e,t){if(t.hooks&&e.hooks.addHooks(t.hooks),typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}}async function ph(e,t){const n=[],r=[],s=[],o=[];let i=0;async function a(l){var c;const u=((c=l.dependsOn)==null?void 0:c.filter(f=>t.some(d=>d._name===f)&&!n.includes(f)))??[];if(u.length>0)r.push([new Set(u),l]);else{const f=hh(e,l).then(async()=>{l._name&&(n.push(l._name),await Promise.all(r.map(async([d,g])=>{d.has(l._name)&&(d.delete(l._name),d.size===0&&(i++,await a(g)))})))});l.parallel?s.push(f.catch(d=>o.push(d))):await f}}for(const l of t)await a(l);if(await Promise.all(s),i)for(let l=0;l{}),e,{[fh]:!0,_name:t})}function gh(e,t,n){const r=()=>t();return Wl.set(e),e.vueApp.runWithContext(r)}function mh(){var t;let e;return il()&&(e=(t=dn())==null?void 0:t.appContext.app.$nuxt),e=e||Wl.tryUse(),e||null}function de(){const e=mh();if(!e)throw new Error("[nuxt] instance unavailable");return e}function rt(e){return de().$config}function cr(e,t,n){Object.defineProperty(e,t,{get:()=>n})}const ur=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function yh(e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");const n={},s=(t||{}).decode||bh;let o=0;for(;o{t+=s};return{toString(){return t},getContext(){return n},dispatch(s){return e.replacer&&(s=e.replacer(s)),this[s===null?"null":typeof s](s)},object(s){if(s&&typeof s.toJSON=="function")return this.object(s.toJSON());const o=Object.prototype.toString.call(s);let i="";const a=o.length;a<10?i="unknown:["+o+"]":i=o.slice(8,a-1),i=i.toLowerCase();let l=null;if((l=n.get(s))===void 0)n.set(s,n.size);else return this.dispatch("[CIRCULAR:"+l+"]");if(typeof Buffer<"u"&&Buffer.isBuffer&&Buffer.isBuffer(s))return r("buffer:"),r(s.toString("utf8"));if(i!=="object"&&i!=="function"&&i!=="asyncfunction")this[i]?this[i](s):e.ignoreUnknown||this.unkown(s,i);else{let u=Object.keys(s);e.unorderedObjects&&(u=u.sort());let c=[];e.respectType!==!1&&!Si(s)&&(c=Eh),e.excludeKeys&&(u=u.filter(d=>!e.excludeKeys(d)),c=c.filter(d=>!e.excludeKeys(d))),r("object:"+(u.length+c.length)+":");const f=d=>{this.dispatch(d),r(":"),e.excludeValues||this.dispatch(s[d]),r(",")};for(const d of u)f(d);for(const d of c)f(d)}},array(s,o){if(o=o===void 0?e.unorderedArrays!==!1:o,r("array:"+s.length+":"),!o||s.length<=1){for(const l of s)this.dispatch(l);return}const i=new Map,a=s.map(l=>{const u=ql(e);u.dispatch(l);for(const[c,f]of u.getContext())i.set(c,f);return u.toString()});return n=i,a.sort(),this.array(a,!1)},date(s){return r("date:"+s.toJSON())},symbol(s){return r("symbol:"+s.toString())},unkown(s,o){if(r(o),!!s&&(r(":"),s&&typeof s.entries=="function"))return this.array(Array.from(s.entries()),!0)},error(s){return r("error:"+s.toString())},boolean(s){return r("bool:"+s)},string(s){r("string:"+s.length+":"),r(s)},function(s){r("fn:"),Si(s)?this.dispatch("[native]"):this.dispatch(s.toString()),e.respectFunctionNames!==!1&&this.dispatch("function-name:"+String(s.name)),e.respectFunctionProperties&&this.object(s)},number(s){return r("number:"+s)},xml(s){return r("xml:"+s.toString())},null(){return r("Null")},undefined(){return r("Undefined")},regexp(s){return r("regex:"+s.toString())},uint8array(s){return r("uint8array:"),this.dispatch(Array.prototype.slice.call(s))},uint8clampedarray(s){return r("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(s))},int8array(s){return r("int8array:"),this.dispatch(Array.prototype.slice.call(s))},uint16array(s){return r("uint16array:"),this.dispatch(Array.prototype.slice.call(s))},int16array(s){return r("int16array:"),this.dispatch(Array.prototype.slice.call(s))},uint32array(s){return r("uint32array:"),this.dispatch(Array.prototype.slice.call(s))},int32array(s){return r("int32array:"),this.dispatch(Array.prototype.slice.call(s))},float32array(s){return r("float32array:"),this.dispatch(Array.prototype.slice.call(s))},float64array(s){return r("float64array:"),this.dispatch(Array.prototype.slice.call(s))},arraybuffer(s){return r("arraybuffer:"),this.dispatch(new Uint8Array(s))},url(s){return r("url:"+s.toString())},map(s){r("map:");const o=[...s];return this.array(o,e.unorderedSets!==!1)},set(s){r("set:");const o=[...s];return this.array(o,e.unorderedSets!==!1)},file(s){return r("file:"),this.dispatch([s.name,s.size,s.type,s.lastModfied])},blob(){if(e.ignoreUnknown)return r("[blob]");throw new Error(`Hashing Blob objects is currently not supported Use "options.replacer" or "options.ignoreUnknown" -`)},domwindow(){return r("domwindow")},bigint(s){return r("bigint:"+s.toString())},process(){return r("process")},timer(){return r("timer")},pipe(){return r("pipe")},tcp(){return r("tcp")},udp(){return r("udp")},tty(){return r("tty")},statwatcher(){return r("statwatcher")},securecontext(){return r("securecontext")},connection(){return r("connection")},zlib(){return r("zlib")},context(){return r("context")},nodescript(){return r("nodescript")},httpparser(){return r("httpparser")},dataview(){return r("dataview")},signal(){return r("signal")},fsevent(){return r("fsevent")},tlswrap(){return r("tlswrap")}}}const Gl="[native code] }",Ph=Gl.length;function Si(e){return typeof e!="function"?!1:Function.prototype.toString.call(e).slice(-Ph)===Gl}class Tt{constructor(t,n){t=this.words=t||[],this.sigBytes=n===void 0?t.length*4:n}toString(t){return(t||Ch).stringify(this)}concat(t){if(this.clamp(),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];return this.sigBytes+=t.sigBytes,this}clamp(){this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4)}clone(){return new Tt([...this.words])}}const Ch={stringify(e){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255;t.push((r>>>4).toString(16),(r&15).toString(16))}return t.join("")}},Rh={stringify(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=[];for(let r=0;r>>2]>>>24-r%4*8&255,o=e.words[r+1>>>2]>>>24-(r+1)%4*8&255,i=e.words[r+2>>>2]>>>24-(r+2)%4*8&255,a=s<<16|o<<8|i;for(let l=0;l<4&&r*8+l*6>>6*(3-l)&63))}return n.join("")}},Th={parse(e){const t=e.length,n=[];for(let r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new Tt(n,t)}},Sh={parse(e){return Th.parse(unescape(encodeURIComponent(e)))}};class xh{constructor(){this._data=new Tt,this._nDataBytes=0,this._minBufferSize=0,this.blockSize=512/32}reset(){this._data=new Tt,this._nDataBytes=0}_append(t){typeof t=="string"&&(t=Sh.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_doProcessBlock(t,n){}_process(t){let n,r=this._data.sigBytes/(this.blockSize*4);t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const s=r*this.blockSize,o=Math.min(s*4,this._data.sigBytes);if(s){for(let i=0;i>>7)^(m<<14|m>>>18)^m>>>3,E=Ht[d-2],P=(E<<15|E>>>17)^(E<<13|E>>>19)^E>>>10;Ht[d]=v+Ht[d-7]+P+Ht[d-16]}const g=l&u^~l&c,_=s&o^s&i^o&i,w=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),x=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),C=f+x+g+Ah[d]+Ht[d],y=w+_;f=c,c=u,u=l,l=a+C|0,a=i,i=o,o=s,s=C+y|0}r[0]=r[0]+s|0,r[1]=r[1]+o|0,r[2]=r[2]+i|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0}finalize(t){super.finalize(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}}function Lh(e){return new Oh().finalize(e).toString(Rh)}function Dn(e,t={}){const n=typeof e=="string"?e:Ds(e,t);return Lh(n).slice(0,10)}function Ih(e,t,n={}){return e===t||Ds(e,n)===Ds(t,n)}function Hh(e,t){return{ctx:{table:e},matchAll:n=>Ql(n,e)}}function Jl(e){const t={};for(const n in e)t[n]=n==="dynamic"?new Map(Object.entries(e[n]).map(([r,s])=>[r,Jl(s)])):new Map(Object.entries(e[n]));return t}function Mh(e){return Hh(Jl(e))}function Ql(e,t,n){e.endsWith("/")&&(e=e.slice(0,-1)||"/");const r=[];for(const[o,i]of ki(t.wildcard))(e===o||e.startsWith(o+"/"))&&r.push(i);for(const[o,i]of ki(t.dynamic))if(e.startsWith(o+"/")){const a="/"+e.slice(o.length).split("/").splice(2).join("/");r.push(...Ql(a,i))}const s=t.static.get(e);return s&&r.push(s),r.filter(Boolean)}function ki(e){return[...e.entries()].sort((t,n)=>t[0].length-n[0].length)}function us(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function js(e,t,n=".",r){if(!us(t))return js(e,{},n,r);const s=Object.assign({},t);for(const o in e){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:us(i)&&us(s[o])?s[o]=js(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function Xl(e){return(...t)=>t.reduce((n,r)=>js(n,r,"",e),{})}const Zl=Xl(),$h=Xl((e,t,n)=>{if(e[t]!==void 0&&typeof n=="function")return e[t]=n(e[t]),!0});function Nh(e,t){try{return t in e}catch{return!1}}var Dh=Object.defineProperty,jh=(e,t,n)=>t in e?Dh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mt=(e,t,n)=>(jh(e,typeof t!="symbol"?t+"":t,n),n);class Bs extends Error{constructor(t,n={}){super(t,n),Mt(this,"statusCode",500),Mt(this,"fatal",!1),Mt(this,"unhandled",!1),Mt(this,"statusMessage"),Mt(this,"data"),Mt(this,"cause"),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:Us(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=Yl(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}Mt(Bs,"__h3_error__",!0);function Fs(e){if(typeof e=="string")return new Bs(e);if(Bh(e))return e;const t=new Bs(e.message??e.statusMessage??"",{cause:e.cause||e});if(Nh(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=Us(e.statusCode,t.statusCode):e.status&&(t.statusCode=Us(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;Yl(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function Bh(e){var t;return((t=e==null?void 0:e.constructor)==null?void 0:t.__h3_error__)===!0}const Fh=/[^\u0009\u0020-\u007E]/g;function Yl(e=""){return e.replace(Fh,"")}function Us(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Uh=Symbol("layout-meta"),Wr=Symbol("route"),Je=()=>{var e;return(e=de())==null?void 0:e.$router},jn=()=>il()?De(Wr,de()._route):de()._route;const Vh=()=>{try{if(de()._processingMiddleware)return!0}catch{return!1}return!1},Kh=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:Dl(e.path||"/",e.query||{})+(e.hash||"");if(t!=null&&t.open){const{target:a="_blank",windowFeatures:l={}}=t.open,u=Object.entries(l).filter(([c,f])=>f!==void 0).map(([c,f])=>`${c.toLowerCase()}=${f}`).join(", ");return open(n,a,u),Promise.resolve()}const r=(t==null?void 0:t.external)||ut(n,{acceptRelative:!0});if(r){if(!(t!=null&&t.external))throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const a=Xn(n).protocol;if(a&&Id(a))throw new Error(`Cannot navigate to a URL with '${a}' protocol.`)}const s=Vh();if(!r&&s)return e;const o=Je(),i=de();return r?(i._scope.stop(),t!=null&&t.replace?location.replace(n):location.href=n,s?i.isHydrating?new Promise(()=>{}):!1:Promise.resolve()):t!=null&&t.replace?o.replace(e):o.push(e)},ec="__nuxt_error",qr=()=>co(de().payload,"error"),Wt=e=>{const t=Zn(e);try{const n=de(),r=qr();n.hooks.callHook("app:error",t),r.value=r.value||t}catch{throw t}return t},zh=async(e={})=>{const t=de(),n=qr();t.callHook("app:error:cleared",e),e.redirect&&await Je().replace(e.redirect),n.value=null},Wh=e=>!!e&&typeof e=="object"&&ec in e,Zn=e=>{const t=Fs(e);return Object.defineProperty(t,ec,{value:!0,configurable:!1,writable:!1}),t},qh=-1,Gh=-2,Jh=-3,Qh=-4,Xh=-5,Zh=-6;function Yh(e,t){return ep(JSON.parse(e),t)}function ep(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function s(o,i=!1){if(o===qh)return;if(o===Jh)return NaN;if(o===Qh)return 1/0;if(o===Xh)return-1/0;if(o===Zh)return-0;if(i)throw new Error("Invalid input");if(o in r)return r[o];const a=n[o];if(!a||typeof a!="object")r[o]=a;else if(Array.isArray(a))if(typeof a[0]=="string"){const l=a[0],u=t==null?void 0:t[l];if(u)return r[o]=u(s(a[1]));switch(l){case"Date":r[o]=new Date(a[1]);break;case"Set":const c=new Set;r[o]=c;for(let g=1;g>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Ai(e){return e._h||Co(e._d?e._d:`${e.tag}:${e.textContent||e.innerHTML||""}:${Object.entries(e.props).map(([t,n])=>`${t}:${String(n)}`).join(",")}`)}function nc(e,t){const{props:n,tag:r}=e;if(sp.includes(r))return r;if(r==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const s=["id"];r==="meta"&&s.push("name","property","http-equiv");for(const o of s)if(typeof n[o]<"u"){const i=String(n[o]);return`${r}:${o}:${i}`}return!1}function Oi(e,t){return e==null?t||null:typeof e=="function"?e(t):e}async function ip(e,t,n){const r={tag:e,props:await rc(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[["script","noscript","style"].includes(e)?"innerHTML":"textContent"]:t},["templateParams","titleTemplate"].includes(e))};return tc.forEach(s=>{const o=typeof r.props[s]<"u"?r.props[s]:n[s];typeof o<"u"&&((!["innerHTML","textContent","children"].includes(s)||np.includes(r.tag))&&(r[s==="children"?"innerHTML":s]=o),delete r.props[s])}),r.props.body&&(r.tagPosition="bodyClose",delete r.props.body),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function ap(e,t){var r;const n=e==="class"?" ":";";return typeof t=="object"&&!Array.isArray(t)&&(t=Object.entries(t).filter(([,s])=>s).map(([s,o])=>e==="style"?`${s}:${o}`:s)),(r=Array.isArray(t)?t.join(n):t)==null?void 0:r.split(n).filter(s=>s.trim()).filter(Boolean).join(n)}async function rc(e,t){for(const n of Object.keys(e)){if(["class","style"].includes(n)){e[n]=ap(n,e[n]);continue}if(e[n]instanceof Promise&&(e[n]=await e[n]),!t&&!tc.includes(n)){const r=String(e[n]),s=n.startsWith("data-");r==="true"||r===""?e[n]=s?"true":!0:e[n]||(s&&r==="false"?e[n]="false":delete e[n])}}return e}const lp=10;async function cp(e){const t=[];return Object.entries(e.resolvedInput).filter(([n,r])=>typeof r<"u"&&rp.includes(n)).forEach(([n,r])=>{const s=tp(r);t.push(...s.map(o=>ip(n,o,e)).flat())}),(await Promise.all(t)).flat().filter(Boolean).map((n,r)=>(n._e=e._i,e.mode&&(n._m=e.mode),n._p=(e._i<l&&l[u]||void 0,t):a=t[i],typeof a<"u"?(a||"").replace(/"/g,'\\"'):!1}let s=e;try{s=decodeURI(e)}catch{}return(s.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(i=>{const a=r(i.slice(1));typeof a=="string"&&(e=e.replace(new RegExp(`\\${i}(\\W|$)`,"g"),(l,u)=>`${a}${u}`).trim())}),e.includes(yt)&&(e.endsWith(yt)&&(e=e.slice(0,-yt.length).trim()),e.startsWith(yt)&&(e=e.slice(yt.length).trim()),e=e.replace(new RegExp(`\\${yt}\\s*\\${yt}`,"g"),yt),e=mr(e,{separator:n},n)),e}async function sc(e,t={}){var c;const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!r.shouldRender)return;const s=(await e.resolveTags()).map(f=>({tag:f,id:gr.includes(f.tag)?Ai(f):f.tag,shouldRender:!0}));let o=e._dom;if(!o){o={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const f of["body","head"]){const d=(c=n[f])==null?void 0:c.children,g=[];for(const _ of[...d].filter(w=>gr.includes(w.tagName.toLowerCase()))){const w={tag:_.tagName.toLowerCase(),props:await rc(_.getAttributeNames().reduce((y,m)=>({...y,[m]:_.getAttribute(m)}),{})),innerHTML:_.innerHTML};let x=1,C=nc(w);for(;C&&g.find(y=>y._d===C);)C=`${C}:${x++}`;w._d=C||void 0,g.push(w),o.elMap[_.getAttribute("data-hid")||Ai(w)]=_}}}o.pendingSideEffects={...o.sideEffects||{}},o.sideEffects={};function i(f,d,g){const _=`${f}:${d}`;o.sideEffects[_]=g,delete o.pendingSideEffects[_]}function a({id:f,$el:d,tag:g}){const _=g.tag.endsWith("Attrs");o.elMap[f]=d,_||(["textContent","innerHTML"].forEach(w=>{g[w]&&g[w]!==d[w]&&(d[w]=g[w])}),i(f,"el",()=>{var w;(w=o.elMap[f])==null||w.remove(),delete o.elMap[f]}));for(const[w,x]of Object.entries(g._eventHandlers||{}))d.getAttribute(`data-${w}`)!==""&&((g.tag==="bodyAttrs"?n.defaultView:d).addEventListener(w.replace("on",""),x.bind(d)),d.setAttribute(`data-${w}`,""));Object.entries(g.props).forEach(([w,x])=>{const C=`attr:${w}`;if(w==="class")for(const y of(x||"").split(" ").filter(Boolean))_&&i(f,`${C}:${y}`,()=>d.classList.remove(y)),!d.classList.contains(y)&&d.classList.add(y);else if(w==="style")for(const y of(x||"").split(";").filter(Boolean)){const[m,...v]=y.split(":").map(E=>E.trim());i(f,`${C}:${y}:${m}`,()=>{d.style.removeProperty(m)}),d.style.setProperty(m,v.join(":"))}else d.getAttribute(w)!==x&&d.setAttribute(w,x===!0?"":String(x)),_&&i(f,C,()=>d.removeAttribute(w))})}const l=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const f of s){const{tag:d,shouldRender:g,id:_}=f;if(g){if(d.tag==="title"){n.title=d.textContent;continue}f.$el=f.$el||o.elMap[_],f.$el?a(f):gr.includes(d.tag)&&l.push(f)}}for(const f of l){const d=f.tag.tagPosition||"head";f.$el=n.createElement(f.tag.tag),a(f),u[d]=u[d]||n.createDocumentFragment(),u[d].appendChild(f.$el)}for(const f of s)await e.hooks.callHook("dom:renderTag",f,n,i);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose),Object.values(o.pendingSideEffects).forEach(f=>f()),e._dom=o,e.dirty=!1,await e.hooks.callHook("dom:rendered",{renders:s})}async function fp(e,t={}){const n=t.delayFn||(r=>setTimeout(r,10));return e._domUpdatePromise=e._domUpdatePromise||new Promise(r=>n(async()=>{await sc(e,t),delete e._domUpdatePromise,r()}))}function dp(e){return t=>{var r,s;const n=((s=(r=t.resolvedOptions.document)==null?void 0:r.head.querySelector('script[id="unhead:payload"]'))==null?void 0:s.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(o){fp(o,e)}}}}}const hp=["templateParams","htmlAttrs","bodyAttrs"],pp={hooks:{"tag:normalise":function({tag:e}){["hid","vmid","key"].forEach(r=>{e.props[r]&&(e.key=e.props[r],delete e.props[r])});const n=nc(e)||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":function(e){const t={};e.tags.forEach(r=>{const s=(r.key?`${r.tag}:${r.key}`:r._d)||r._p,o=t[s];if(o){let a=r==null?void 0:r.tagDuplicateStrategy;if(!a&&hp.includes(r.tag)&&(a="merge"),a==="merge"){const l=o.props;["class","style"].forEach(u=>{l[u]&&(r.props[u]?(u==="style"&&!l[u].endsWith(";")&&(l[u]+=";"),r.props[u]=`${l[u]} ${r.props[u]}`):r.props[u]=l[u])}),t[s].props={...l,...r.props};return}else if(r._e===o._e){o._duped=o._duped||[],r._d=`${o._d}:${o._duped.length+1}`,o._duped.push(r);return}else if(Lr(r)>Lr(o))return}const i=Object.keys(r.props).length+(r.innerHTML?1:0)+(r.textContent?1:0);if(gr.includes(r.tag)&&i===0){delete t[s];return}t[s]=r});const n=[];Object.values(t).forEach(r=>{const s=r._duped;delete r._duped,n.push(r),s&&n.push(...s)}),e.tags=n,e.tags=e.tags.filter(r=>!(r.tag==="meta"&&(r.props.name||r.props.property)&&!r.props.content))}}},gp={mode:"server",hooks:{"tags:resolve":function(e){const t={};e.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{t[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(t).length&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},mp=["script","link","bodyAttrs"],yp=e=>({hooks:{"tags:resolve":function(t){for(const n of t.tags.filter(r=>mp.includes(r.tag)))Object.entries(n.props).forEach(([r,s])=>{r.startsWith("on")&&typeof s=="function"&&(e.ssr&&Hi.includes(r)?n.props[r]=`this.dataset.${r}fired = true`:delete n.props[r],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[r]=s)}),e.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||Co(n.props.src||n.props.href))},"dom:renderTag":function({$el:t,tag:n}){var r,s;for(const o of Object.keys((t==null?void 0:t.dataset)||{}).filter(i=>Hi.some(a=>`${a}fired`===i))){const i=o.replace("fired","");(s=(r=n._eventHandlers)==null?void 0:r[i])==null||s.call(t,new Event(i.replace("on","")))}}}}),_p=["link","style","script","noscript"],vp={hooks:{"tag:normalise":({tag:e})=>{e.key&&_p.includes(e.tag)&&(e.props["data-hid"]=e._h=Co(e.key))}}},bp={hooks:{"tags:resolve":e=>{const t=n=>{var r;return(r=e.tags.find(s=>s._d===n))==null?void 0:r._p};for(const{prefix:n,offset:r}of up)for(const s of e.tags.filter(o=>typeof o.tagPriority=="string"&&o.tagPriority.startsWith(n))){const o=t(s.tagPriority.replace(n,""));typeof o<"u"&&(s._p=o+r)}e.tags.sort((n,r)=>n._p-r._p).sort((n,r)=>Lr(n)-Lr(r))}}},wp={meta:"content",link:"href",htmlAttrs:"lang"},Ep=e=>({hooks:{"tags:resolve":t=>{var a;const{tags:n}=t,r=(a=n.find(l=>l.tag==="title"))==null?void 0:a.textContent,s=n.findIndex(l=>l.tag==="templateParams"),o=s!==-1?n[s].props:{},i=o.separator||"|";delete o.separator,o.pageTitle=mr(o.pageTitle||r||"",o,i);for(const l of n.filter(u=>u.processTemplateParams!==!1)){const u=wp[l.tag];u&&typeof l.props[u]=="string"?l.props[u]=mr(l.props[u],o,i):(l.processTemplateParams===!0||["titleTemplate","title"].includes(l.tag))&&["innerHTML","textContent"].forEach(c=>{typeof l[c]=="string"&&(l[c]=mr(l[c],o,i))})}e._templateParams=o,e._separator=i,t.tags=n.filter(l=>l.tag!=="templateParams")}}}),Pp={hooks:{"tags:resolve":e=>{const{tags:t}=e;let n=t.findIndex(s=>s.tag==="titleTemplate");const r=t.findIndex(s=>s.tag==="title");if(r!==-1&&n!==-1){const s=Oi(t[n].textContent,t[r].textContent);s!==null?t[r].textContent=s||t[r].textContent:delete t[r]}else if(n!==-1){const s=Oi(t[n].textContent);s!==null&&(t[n].textContent=s,t[n].tag="title",n=-1)}n!==-1&&delete t[n],e.tags=t.filter(Boolean)}}},Cp={hooks:{"tags:afterResolve":function(e){for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&["application/ld+json","application/json"].includes(t.props.type)?t.innerHTML=t.innerHTML.replace(/{a.dirty=!0,t.callHook("entries:updated",a)};let s=0,o=[];const i=[],a={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return o},use(l){const u=typeof l=="function"?l(a):l;(!u.key||!i.some(c=>c.key===u.key))&&(i.push(u),Mi(u.mode,n)&&t.addHooks(u.hooks||{}))},push(l,u){u==null||delete u.head;const c={_i:s++,input:l,...u};return Mi(c.mode,n)&&(o.push(c),r()),{dispose(){o=o.filter(f=>f._i!==c._i),t.callHook("entries:updated",a),r()},patch(f){o=o.map(d=>(d._i===c._i&&(d.input=c.input=f),d)),r()}}},async resolveTags(){const l={tags:[],entries:[...o]};await t.callHook("entries:resolve",l);for(const u of l.entries){const c=u.resolvedInput||u.input;if(u.resolvedInput=await(u.transform?u.transform(c):c),u.resolvedInput)for(const f of await cp(u)){const d={tag:f,entry:u,resolvedOptions:a.resolvedOptions};await t.callHook("tag:normalise",d),l.tags.push(d.tag)}}return await t.callHook("tags:beforeResolve",l),await t.callHook("tags:resolve",l),await t.callHook("tags:afterResolve",l),l.tags},ssr:n};return[pp,gp,yp,vp,bp,Ep,Pp,Cp,...(e==null?void 0:e.plugins)||[]].forEach(l=>a.use(l)),a.hooks.callHook("init",a),a}function Sp(){return oc}const xp=Sl.startsWith("3");function kp(e){return typeof e=="function"?e():ue(e)}function Ir(e,t=""){if(e instanceof Promise)return e;const n=kp(e);return!e||!n?n:Array.isArray(n)?n.map(r=>Ir(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,ue(s)]:[r,Ir(s,r)])):n}const Ap={hooks:{"entries:resolve":function(e){for(const t of e.entries)t.resolvedInput=Ir(t.input)}}},ic="usehead";function Op(e){return{install(n){xp&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(ic,e))}}.install}function Lp(e={}){e.domDelayFn=e.domDelayFn||(n=>fn(()=>setTimeout(()=>n(),0)));const t=Rp(e);return t.use(Ap),t.install=Op(t),t}const Vs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Ks="__unhead_injection_handler__";function Ip(e){Vs[Ks]=e}function Hp(){if(Ks in Vs)return Vs[Ks]();const e=De(ic);return e||Sp()}function Mp(e,t={}){const n=t.head||Hp();if(n)return n.ssr?n.push(e,t):$p(n,e,t)}function $p(e,t,n={}){const r=be(!1),s=be({});Vu(()=>{s.value=r.value?{}:Ir(t)});const o=e.push(s.value,n);return tt(s,a=>{o.patch(a)}),dn()&&(Wn(()=>{o.dispose()}),Za(()=>{r.value=!0}),Xa(()=>{r.value=!1})),o}function Ze(e){if(typeof e!="object")return e;var t,n,r=Object.prototype.toString.call(e);if(r==="[object Object]"){if(e.constructor!==Object&&typeof e.constructor=="function"){n=new e.constructor;for(t in e)e.hasOwnProperty(t)&&n[t]!==e[t]&&(n[t]=Ze(e[t]))}else{n={};for(t in e)t==="__proto__"?Object.defineProperty(n,t,{value:Ze(e[t]),configurable:!0,enumerable:!0,writable:!0}):n[t]=Ze(e[t])}return n}if(r==="[object Array]"){for(t=e.length,n=Array(t);t--;)n[t]=Ze(e[t]);return n}return r==="[object Set]"?(n=new Set,e.forEach(function(s){n.add(Ze(s))}),n):r==="[object Map]"?(n=new Map,e.forEach(function(s,o){n.set(Ze(o),Ze(s))}),n):r==="[object Date]"?new Date(+e):r==="[object RegExp]"?(n=new RegExp(e.source,e.flags),n.lastIndex=e.lastIndex,n):r==="[object DataView]"?new e.constructor(Ze(e.buffer)):r==="[object ArrayBuffer]"?e.slice(0):r.slice(-6)==="Array]"?new e.constructor(e):e}const Np={speaker:{details:[{label:"Name",val:"Tim Benniks"},{label:"Company",val:"Hygraph",link:"https://hygraph.com"},{label:"Title",val:"Developer Relations Lead for outreach and awareness"},{label:"Location",val:"Greater Toulouse Area, France"},{label:"E-mail",val:"timbenniks.dev@gmail.com"},{label:"Website",val:"https://timbenniks.dev",link:"https://timbenniks.dev"}]}},Dp={nuxt:{buildId:"bccae337-ddb9-44f0-924e-bd4ffaa83b9d"}},jp=$h(Np,Dp);function ac(){const e=de();return e._appConfig||(e._appConfig=At(jp)),e._appConfig}const zs=!1,Bp=!1,Fp={componentName:"NuxtLink"},Up={deep:!0},Vp="#__nuxt";let yr,lc;function Kp(){var t;const e=(t=ac().nuxt)==null?void 0:t.buildId;return yr=$fetch(Po(`builds/meta/${e}.json`)),yr.then(n=>{lc=Mh(n.matcher)}),yr}function Gr(){return yr||Kp()}async function Ro(e){return await Gr(),Zl({},...lc.matchAll(e).reverse())}function $i(e,t={}){const n=Wp(e,t),r=de(),s=r._payloadCache=r._payloadCache||{};return n in s||(s[n]=qp(e).then(o=>o?cc(n).then(i=>i||(delete s[n],null)):(s[n]=null,null))),s[n]}const zp="_payload.json";function Wp(e,t={}){var s;const n=new URL(e,"http://localhost");if(n.host!=="localhost"||ut(n.pathname,{acceptRelative:!0}))throw new Error("Payload URL must not include hostname: "+e);const r=t.hash||(t.fresh?Date.now():(s=ac().nuxt)==null?void 0:s.buildId);return Qn(rt().app.baseURL,n.pathname,zp+(r?`?${r}`:""))}async function cc(e){const t=fetch(e).then(n=>n.text().then(uc));try{return await t}catch(n){console.warn("[nuxt] Cannot load payload ",e,n)}return null}async function qp(e=jn().path){if(e=Jn(e),(await Gr()).prerendered.includes(e))return!0;const n=await Ro(e);return!!n.prerender&&!n.redirect}let fr=null;async function Gp(){if(fr)return fr;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await uc(e.textContent||""),n=e.dataset.src?await cc(e.dataset.src):void 0;return fr={...t,...n,...window.__NUXT__},fr}async function uc(e){return await Yh(e,de()._payloadRevivers)}function Jp(e,t){de()._payloadRevivers[e]=t}const Ni={NuxtError:e=>Zn(e),EmptyShallowRef:e=>nn(e==="_"?void 0:e==="0n"?BigInt(0):$n(e)),EmptyRef:e=>be(e==="_"?void 0:e==="0n"?BigInt(0):$n(e)),ShallowRef:e=>nn(e),ShallowReactive:e=>Kn(e),Ref:e=>be(e),Reactive:e=>At(e)},Qp=ft({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const r in Ni)Jp(r,Ni[r]);Object.assign(e.payload,([t,n]=Nn(()=>e.runWithContext(Gp)),t=await t,n(),t)),window.__NUXT__=e.payload}}),Xp=[],Zp=ft({name:"nuxt:head",enforce:"pre",setup(e){const t=Lp({plugins:Xp});Ip(()=>de().vueApp._context.provides.usehead),e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await sc(t)};t.hooks.hook("dom:beforeRender",s=>{s.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r)}}});/*! +`)},domwindow(){return r("domwindow")},bigint(s){return r("bigint:"+s.toString())},process(){return r("process")},timer(){return r("timer")},pipe(){return r("pipe")},tcp(){return r("tcp")},udp(){return r("udp")},tty(){return r("tty")},statwatcher(){return r("statwatcher")},securecontext(){return r("securecontext")},connection(){return r("connection")},zlib(){return r("zlib")},context(){return r("context")},nodescript(){return r("nodescript")},httpparser(){return r("httpparser")},dataview(){return r("dataview")},signal(){return r("signal")},fsevent(){return r("fsevent")},tlswrap(){return r("tlswrap")}}}const Gl="[native code] }",Ph=Gl.length;function Si(e){return typeof e!="function"?!1:Function.prototype.toString.call(e).slice(-Ph)===Gl}class Tt{constructor(t,n){t=this.words=t||[],this.sigBytes=n===void 0?t.length*4:n}toString(t){return(t||Ch).stringify(this)}concat(t){if(this.clamp(),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];return this.sigBytes+=t.sigBytes,this}clamp(){this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4)}clone(){return new Tt([...this.words])}}const Ch={stringify(e){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255;t.push((r>>>4).toString(16),(r&15).toString(16))}return t.join("")}},Rh={stringify(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=[];for(let r=0;r>>2]>>>24-r%4*8&255,o=e.words[r+1>>>2]>>>24-(r+1)%4*8&255,i=e.words[r+2>>>2]>>>24-(r+2)%4*8&255,a=s<<16|o<<8|i;for(let l=0;l<4&&r*8+l*6>>6*(3-l)&63))}return n.join("")}},Th={parse(e){const t=e.length,n=[];for(let r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new Tt(n,t)}},Sh={parse(e){return Th.parse(unescape(encodeURIComponent(e)))}};class xh{constructor(){this._data=new Tt,this._nDataBytes=0,this._minBufferSize=0,this.blockSize=512/32}reset(){this._data=new Tt,this._nDataBytes=0}_append(t){typeof t=="string"&&(t=Sh.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_doProcessBlock(t,n){}_process(t){let n,r=this._data.sigBytes/(this.blockSize*4);t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const s=r*this.blockSize,o=Math.min(s*4,this._data.sigBytes);if(s){for(let i=0;i>>7)^(m<<14|m>>>18)^m>>>3,E=Ht[d-2],P=(E<<15|E>>>17)^(E<<13|E>>>19)^E>>>10;Ht[d]=v+Ht[d-7]+P+Ht[d-16]}const g=l&u^~l&c,_=s&o^s&i^o&i,w=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),x=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),C=f+x+g+Ah[d]+Ht[d],y=w+_;f=c,c=u,u=l,l=a+C|0,a=i,i=o,o=s,s=C+y|0}r[0]=r[0]+s|0,r[1]=r[1]+o|0,r[2]=r[2]+i|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0}finalize(t){super.finalize(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}}function Lh(e){return new Oh().finalize(e).toString(Rh)}function Dn(e,t={}){const n=typeof e=="string"?e:Ds(e,t);return Lh(n).slice(0,10)}function Ih(e,t,n={}){return e===t||Ds(e,n)===Ds(t,n)}function Hh(e,t){return{ctx:{table:e},matchAll:n=>Ql(n,e)}}function Jl(e){const t={};for(const n in e)t[n]=n==="dynamic"?new Map(Object.entries(e[n]).map(([r,s])=>[r,Jl(s)])):new Map(Object.entries(e[n]));return t}function Mh(e){return Hh(Jl(e))}function Ql(e,t,n){e.endsWith("/")&&(e=e.slice(0,-1)||"/");const r=[];for(const[o,i]of ki(t.wildcard))(e===o||e.startsWith(o+"/"))&&r.push(i);for(const[o,i]of ki(t.dynamic))if(e.startsWith(o+"/")){const a="/"+e.slice(o.length).split("/").splice(2).join("/");r.push(...Ql(a,i))}const s=t.static.get(e);return s&&r.push(s),r.filter(Boolean)}function ki(e){return[...e.entries()].sort((t,n)=>t[0].length-n[0].length)}function us(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function js(e,t,n=".",r){if(!us(t))return js(e,{},n,r);const s=Object.assign({},t);for(const o in e){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:us(i)&&us(s[o])?s[o]=js(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function Xl(e){return(...t)=>t.reduce((n,r)=>js(n,r,"",e),{})}const Zl=Xl(),$h=Xl((e,t,n)=>{if(e[t]!==void 0&&typeof n=="function")return e[t]=n(e[t]),!0});function Nh(e,t){try{return t in e}catch{return!1}}var Dh=Object.defineProperty,jh=(e,t,n)=>t in e?Dh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mt=(e,t,n)=>(jh(e,typeof t!="symbol"?t+"":t,n),n);class Bs extends Error{constructor(t,n={}){super(t,n),Mt(this,"statusCode",500),Mt(this,"fatal",!1),Mt(this,"unhandled",!1),Mt(this,"statusMessage"),Mt(this,"data"),Mt(this,"cause"),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:Us(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=Yl(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}Mt(Bs,"__h3_error__",!0);function Fs(e){if(typeof e=="string")return new Bs(e);if(Bh(e))return e;const t=new Bs(e.message??e.statusMessage??"",{cause:e.cause||e});if(Nh(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=Us(e.statusCode,t.statusCode):e.status&&(t.statusCode=Us(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;Yl(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function Bh(e){var t;return((t=e==null?void 0:e.constructor)==null?void 0:t.__h3_error__)===!0}const Fh=/[^\u0009\u0020-\u007E]/g;function Yl(e=""){return e.replace(Fh,"")}function Us(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Uh=Symbol("layout-meta"),Wr=Symbol("route"),Je=()=>{var e;return(e=de())==null?void 0:e.$router},jn=()=>il()?De(Wr,de()._route):de()._route;const Vh=()=>{try{if(de()._processingMiddleware)return!0}catch{return!1}return!1},Kh=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:Dl(e.path||"/",e.query||{})+(e.hash||"");if(t!=null&&t.open){const{target:a="_blank",windowFeatures:l={}}=t.open,u=Object.entries(l).filter(([c,f])=>f!==void 0).map(([c,f])=>`${c.toLowerCase()}=${f}`).join(", ");return open(n,a,u),Promise.resolve()}const r=(t==null?void 0:t.external)||ut(n,{acceptRelative:!0});if(r){if(!(t!=null&&t.external))throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const a=Xn(n).protocol;if(a&&Id(a))throw new Error(`Cannot navigate to a URL with '${a}' protocol.`)}const s=Vh();if(!r&&s)return e;const o=Je(),i=de();return r?(i._scope.stop(),t!=null&&t.replace?location.replace(n):location.href=n,s?i.isHydrating?new Promise(()=>{}):!1:Promise.resolve()):t!=null&&t.replace?o.replace(e):o.push(e)},ec="__nuxt_error",qr=()=>co(de().payload,"error"),Wt=e=>{const t=Zn(e);try{const n=de(),r=qr();n.hooks.callHook("app:error",t),r.value=r.value||t}catch{throw t}return t},zh=async(e={})=>{const t=de(),n=qr();t.callHook("app:error:cleared",e),e.redirect&&await Je().replace(e.redirect),n.value=null},Wh=e=>!!e&&typeof e=="object"&&ec in e,Zn=e=>{const t=Fs(e);return Object.defineProperty(t,ec,{value:!0,configurable:!1,writable:!1}),t},qh=-1,Gh=-2,Jh=-3,Qh=-4,Xh=-5,Zh=-6;function Yh(e,t){return ep(JSON.parse(e),t)}function ep(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function s(o,i=!1){if(o===qh)return;if(o===Jh)return NaN;if(o===Qh)return 1/0;if(o===Xh)return-1/0;if(o===Zh)return-0;if(i)throw new Error("Invalid input");if(o in r)return r[o];const a=n[o];if(!a||typeof a!="object")r[o]=a;else if(Array.isArray(a))if(typeof a[0]=="string"){const l=a[0],u=t==null?void 0:t[l];if(u)return r[o]=u(s(a[1]));switch(l){case"Date":r[o]=new Date(a[1]);break;case"Set":const c=new Set;r[o]=c;for(let g=1;g>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Ai(e){return e._h||Co(e._d?e._d:`${e.tag}:${e.textContent||e.innerHTML||""}:${Object.entries(e.props).map(([t,n])=>`${t}:${String(n)}`).join(",")}`)}function nc(e,t){const{props:n,tag:r}=e;if(sp.includes(r))return r;if(r==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const s=["id"];r==="meta"&&s.push("name","property","http-equiv");for(const o of s)if(typeof n[o]<"u"){const i=String(n[o]);return`${r}:${o}:${i}`}return!1}function Oi(e,t){return e==null?t||null:typeof e=="function"?e(t):e}async function ip(e,t,n){const r={tag:e,props:await rc(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[["script","noscript","style"].includes(e)?"innerHTML":"textContent"]:t},["templateParams","titleTemplate"].includes(e))};return tc.forEach(s=>{const o=typeof r.props[s]<"u"?r.props[s]:n[s];typeof o<"u"&&((!["innerHTML","textContent","children"].includes(s)||np.includes(r.tag))&&(r[s==="children"?"innerHTML":s]=o),delete r.props[s])}),r.props.body&&(r.tagPosition="bodyClose",delete r.props.body),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function ap(e,t){var r;const n=e==="class"?" ":";";return typeof t=="object"&&!Array.isArray(t)&&(t=Object.entries(t).filter(([,s])=>s).map(([s,o])=>e==="style"?`${s}:${o}`:s)),(r=Array.isArray(t)?t.join(n):t)==null?void 0:r.split(n).filter(s=>s.trim()).filter(Boolean).join(n)}async function rc(e,t){for(const n of Object.keys(e)){if(["class","style"].includes(n)){e[n]=ap(n,e[n]);continue}if(e[n]instanceof Promise&&(e[n]=await e[n]),!t&&!tc.includes(n)){const r=String(e[n]),s=n.startsWith("data-");r==="true"||r===""?e[n]=s?"true":!0:e[n]||(s&&r==="false"?e[n]="false":delete e[n])}}return e}const lp=10;async function cp(e){const t=[];return Object.entries(e.resolvedInput).filter(([n,r])=>typeof r<"u"&&rp.includes(n)).forEach(([n,r])=>{const s=tp(r);t.push(...s.map(o=>ip(n,o,e)).flat())}),(await Promise.all(t)).flat().filter(Boolean).map((n,r)=>(n._e=e._i,e.mode&&(n._m=e.mode),n._p=(e._i<l&&l[u]||void 0,t):a=t[i],typeof a<"u"?(a||"").replace(/"/g,'\\"'):!1}let s=e;try{s=decodeURI(e)}catch{}return(s.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(i=>{const a=r(i.slice(1));typeof a=="string"&&(e=e.replace(new RegExp(`\\${i}(\\W|$)`,"g"),(l,u)=>`${a}${u}`).trim())}),e.includes(yt)&&(e.endsWith(yt)&&(e=e.slice(0,-yt.length).trim()),e.startsWith(yt)&&(e=e.slice(yt.length).trim()),e=e.replace(new RegExp(`\\${yt}\\s*\\${yt}`,"g"),yt),e=mr(e,{separator:n},n)),e}async function sc(e,t={}){var c;const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!r.shouldRender)return;const s=(await e.resolveTags()).map(f=>({tag:f,id:gr.includes(f.tag)?Ai(f):f.tag,shouldRender:!0}));let o=e._dom;if(!o){o={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const f of["body","head"]){const d=(c=n[f])==null?void 0:c.children,g=[];for(const _ of[...d].filter(w=>gr.includes(w.tagName.toLowerCase()))){const w={tag:_.tagName.toLowerCase(),props:await rc(_.getAttributeNames().reduce((y,m)=>({...y,[m]:_.getAttribute(m)}),{})),innerHTML:_.innerHTML};let x=1,C=nc(w);for(;C&&g.find(y=>y._d===C);)C=`${C}:${x++}`;w._d=C||void 0,g.push(w),o.elMap[_.getAttribute("data-hid")||Ai(w)]=_}}}o.pendingSideEffects={...o.sideEffects||{}},o.sideEffects={};function i(f,d,g){const _=`${f}:${d}`;o.sideEffects[_]=g,delete o.pendingSideEffects[_]}function a({id:f,$el:d,tag:g}){const _=g.tag.endsWith("Attrs");o.elMap[f]=d,_||(["textContent","innerHTML"].forEach(w=>{g[w]&&g[w]!==d[w]&&(d[w]=g[w])}),i(f,"el",()=>{var w;(w=o.elMap[f])==null||w.remove(),delete o.elMap[f]}));for(const[w,x]of Object.entries(g._eventHandlers||{}))d.getAttribute(`data-${w}`)!==""&&((g.tag==="bodyAttrs"?n.defaultView:d).addEventListener(w.replace("on",""),x.bind(d)),d.setAttribute(`data-${w}`,""));Object.entries(g.props).forEach(([w,x])=>{const C=`attr:${w}`;if(w==="class")for(const y of(x||"").split(" ").filter(Boolean))_&&i(f,`${C}:${y}`,()=>d.classList.remove(y)),!d.classList.contains(y)&&d.classList.add(y);else if(w==="style")for(const y of(x||"").split(";").filter(Boolean)){const[m,...v]=y.split(":").map(E=>E.trim());i(f,`${C}:${y}:${m}`,()=>{d.style.removeProperty(m)}),d.style.setProperty(m,v.join(":"))}else d.getAttribute(w)!==x&&d.setAttribute(w,x===!0?"":String(x)),_&&i(f,C,()=>d.removeAttribute(w))})}const l=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const f of s){const{tag:d,shouldRender:g,id:_}=f;if(g){if(d.tag==="title"){n.title=d.textContent;continue}f.$el=f.$el||o.elMap[_],f.$el?a(f):gr.includes(d.tag)&&l.push(f)}}for(const f of l){const d=f.tag.tagPosition||"head";f.$el=n.createElement(f.tag.tag),a(f),u[d]=u[d]||n.createDocumentFragment(),u[d].appendChild(f.$el)}for(const f of s)await e.hooks.callHook("dom:renderTag",f,n,i);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose),Object.values(o.pendingSideEffects).forEach(f=>f()),e._dom=o,e.dirty=!1,await e.hooks.callHook("dom:rendered",{renders:s})}async function fp(e,t={}){const n=t.delayFn||(r=>setTimeout(r,10));return e._domUpdatePromise=e._domUpdatePromise||new Promise(r=>n(async()=>{await sc(e,t),delete e._domUpdatePromise,r()}))}function dp(e){return t=>{var r,s;const n=((s=(r=t.resolvedOptions.document)==null?void 0:r.head.querySelector('script[id="unhead:payload"]'))==null?void 0:s.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(o){fp(o,e)}}}}}const hp=["templateParams","htmlAttrs","bodyAttrs"],pp={hooks:{"tag:normalise":function({tag:e}){["hid","vmid","key"].forEach(r=>{e.props[r]&&(e.key=e.props[r],delete e.props[r])});const n=nc(e)||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":function(e){const t={};e.tags.forEach(r=>{const s=(r.key?`${r.tag}:${r.key}`:r._d)||r._p,o=t[s];if(o){let a=r==null?void 0:r.tagDuplicateStrategy;if(!a&&hp.includes(r.tag)&&(a="merge"),a==="merge"){const l=o.props;["class","style"].forEach(u=>{l[u]&&(r.props[u]?(u==="style"&&!l[u].endsWith(";")&&(l[u]+=";"),r.props[u]=`${l[u]} ${r.props[u]}`):r.props[u]=l[u])}),t[s].props={...l,...r.props};return}else if(r._e===o._e){o._duped=o._duped||[],r._d=`${o._d}:${o._duped.length+1}`,o._duped.push(r);return}else if(Lr(r)>Lr(o))return}const i=Object.keys(r.props).length+(r.innerHTML?1:0)+(r.textContent?1:0);if(gr.includes(r.tag)&&i===0){delete t[s];return}t[s]=r});const n=[];Object.values(t).forEach(r=>{const s=r._duped;delete r._duped,n.push(r),s&&n.push(...s)}),e.tags=n,e.tags=e.tags.filter(r=>!(r.tag==="meta"&&(r.props.name||r.props.property)&&!r.props.content))}}},gp={mode:"server",hooks:{"tags:resolve":function(e){const t={};e.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{t[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(t).length&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},mp=["script","link","bodyAttrs"],yp=e=>({hooks:{"tags:resolve":function(t){for(const n of t.tags.filter(r=>mp.includes(r.tag)))Object.entries(n.props).forEach(([r,s])=>{r.startsWith("on")&&typeof s=="function"&&(e.ssr&&Hi.includes(r)?n.props[r]=`this.dataset.${r}fired = true`:delete n.props[r],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[r]=s)}),e.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||Co(n.props.src||n.props.href))},"dom:renderTag":function({$el:t,tag:n}){var r,s;for(const o of Object.keys((t==null?void 0:t.dataset)||{}).filter(i=>Hi.some(a=>`${a}fired`===i))){const i=o.replace("fired","");(s=(r=n._eventHandlers)==null?void 0:r[i])==null||s.call(t,new Event(i.replace("on","")))}}}}),_p=["link","style","script","noscript"],vp={hooks:{"tag:normalise":({tag:e})=>{e.key&&_p.includes(e.tag)&&(e.props["data-hid"]=e._h=Co(e.key))}}},bp={hooks:{"tags:resolve":e=>{const t=n=>{var r;return(r=e.tags.find(s=>s._d===n))==null?void 0:r._p};for(const{prefix:n,offset:r}of up)for(const s of e.tags.filter(o=>typeof o.tagPriority=="string"&&o.tagPriority.startsWith(n))){const o=t(s.tagPriority.replace(n,""));typeof o<"u"&&(s._p=o+r)}e.tags.sort((n,r)=>n._p-r._p).sort((n,r)=>Lr(n)-Lr(r))}}},wp={meta:"content",link:"href",htmlAttrs:"lang"},Ep=e=>({hooks:{"tags:resolve":t=>{var a;const{tags:n}=t,r=(a=n.find(l=>l.tag==="title"))==null?void 0:a.textContent,s=n.findIndex(l=>l.tag==="templateParams"),o=s!==-1?n[s].props:{},i=o.separator||"|";delete o.separator,o.pageTitle=mr(o.pageTitle||r||"",o,i);for(const l of n.filter(u=>u.processTemplateParams!==!1)){const u=wp[l.tag];u&&typeof l.props[u]=="string"?l.props[u]=mr(l.props[u],o,i):(l.processTemplateParams===!0||["titleTemplate","title"].includes(l.tag))&&["innerHTML","textContent"].forEach(c=>{typeof l[c]=="string"&&(l[c]=mr(l[c],o,i))})}e._templateParams=o,e._separator=i,t.tags=n.filter(l=>l.tag!=="templateParams")}}}),Pp={hooks:{"tags:resolve":e=>{const{tags:t}=e;let n=t.findIndex(s=>s.tag==="titleTemplate");const r=t.findIndex(s=>s.tag==="title");if(r!==-1&&n!==-1){const s=Oi(t[n].textContent,t[r].textContent);s!==null?t[r].textContent=s||t[r].textContent:delete t[r]}else if(n!==-1){const s=Oi(t[n].textContent);s!==null&&(t[n].textContent=s,t[n].tag="title",n=-1)}n!==-1&&delete t[n],e.tags=t.filter(Boolean)}}},Cp={hooks:{"tags:afterResolve":function(e){for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&["application/ld+json","application/json"].includes(t.props.type)?t.innerHTML=t.innerHTML.replace(/{a.dirty=!0,t.callHook("entries:updated",a)};let s=0,o=[];const i=[],a={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return o},use(l){const u=typeof l=="function"?l(a):l;(!u.key||!i.some(c=>c.key===u.key))&&(i.push(u),Mi(u.mode,n)&&t.addHooks(u.hooks||{}))},push(l,u){u==null||delete u.head;const c={_i:s++,input:l,...u};return Mi(c.mode,n)&&(o.push(c),r()),{dispose(){o=o.filter(f=>f._i!==c._i),t.callHook("entries:updated",a),r()},patch(f){o=o.map(d=>(d._i===c._i&&(d.input=c.input=f),d)),r()}}},async resolveTags(){const l={tags:[],entries:[...o]};await t.callHook("entries:resolve",l);for(const u of l.entries){const c=u.resolvedInput||u.input;if(u.resolvedInput=await(u.transform?u.transform(c):c),u.resolvedInput)for(const f of await cp(u)){const d={tag:f,entry:u,resolvedOptions:a.resolvedOptions};await t.callHook("tag:normalise",d),l.tags.push(d.tag)}}return await t.callHook("tags:beforeResolve",l),await t.callHook("tags:resolve",l),await t.callHook("tags:afterResolve",l),l.tags},ssr:n};return[pp,gp,yp,vp,bp,Ep,Pp,Cp,...(e==null?void 0:e.plugins)||[]].forEach(l=>a.use(l)),a.hooks.callHook("init",a),a}function Sp(){return oc}const xp=Sl.startsWith("3");function kp(e){return typeof e=="function"?e():ue(e)}function Ir(e,t=""){if(e instanceof Promise)return e;const n=kp(e);return!e||!n?n:Array.isArray(n)?n.map(r=>Ir(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,ue(s)]:[r,Ir(s,r)])):n}const Ap={hooks:{"entries:resolve":function(e){for(const t of e.entries)t.resolvedInput=Ir(t.input)}}},ic="usehead";function Op(e){return{install(n){xp&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(ic,e))}}.install}function Lp(e={}){e.domDelayFn=e.domDelayFn||(n=>fn(()=>setTimeout(()=>n(),0)));const t=Rp(e);return t.use(Ap),t.install=Op(t),t}const Vs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Ks="__unhead_injection_handler__";function Ip(e){Vs[Ks]=e}function Hp(){if(Ks in Vs)return Vs[Ks]();const e=De(ic);return e||Sp()}function Mp(e,t={}){const n=t.head||Hp();if(n)return n.ssr?n.push(e,t):$p(n,e,t)}function $p(e,t,n={}){const r=be(!1),s=be({});Vu(()=>{s.value=r.value?{}:Ir(t)});const o=e.push(s.value,n);return tt(s,a=>{o.patch(a)}),dn()&&(Wn(()=>{o.dispose()}),Za(()=>{r.value=!0}),Xa(()=>{r.value=!1})),o}function Ze(e){if(typeof e!="object")return e;var t,n,r=Object.prototype.toString.call(e);if(r==="[object Object]"){if(e.constructor!==Object&&typeof e.constructor=="function"){n=new e.constructor;for(t in e)e.hasOwnProperty(t)&&n[t]!==e[t]&&(n[t]=Ze(e[t]))}else{n={};for(t in e)t==="__proto__"?Object.defineProperty(n,t,{value:Ze(e[t]),configurable:!0,enumerable:!0,writable:!0}):n[t]=Ze(e[t])}return n}if(r==="[object Array]"){for(t=e.length,n=Array(t);t--;)n[t]=Ze(e[t]);return n}return r==="[object Set]"?(n=new Set,e.forEach(function(s){n.add(Ze(s))}),n):r==="[object Map]"?(n=new Map,e.forEach(function(s,o){n.set(Ze(o),Ze(s))}),n):r==="[object Date]"?new Date(+e):r==="[object RegExp]"?(n=new RegExp(e.source,e.flags),n.lastIndex=e.lastIndex,n):r==="[object DataView]"?new e.constructor(Ze(e.buffer)):r==="[object ArrayBuffer]"?e.slice(0):r.slice(-6)==="Array]"?new e.constructor(e):e}const Np={speaker:{details:[{label:"Name",val:"Tim Benniks"},{label:"Company",val:"Hygraph",link:"https://hygraph.com"},{label:"Title",val:"Developer Relations Lead for outreach and awareness"},{label:"Location",val:"Greater Toulouse Area, France"},{label:"E-mail",val:"timbenniks.dev@gmail.com"},{label:"Website",val:"https://timbenniks.dev",link:"https://timbenniks.dev"}]}},Dp={nuxt:{buildId:"f8158024-6d61-4a4d-a16c-96197fdeaa6b"}},jp=$h(Np,Dp);function ac(){const e=de();return e._appConfig||(e._appConfig=At(jp)),e._appConfig}const zs=!1,Bp=!1,Fp={componentName:"NuxtLink"},Up={deep:!0},Vp="#__nuxt";let yr,lc;function Kp(){var t;const e=(t=ac().nuxt)==null?void 0:t.buildId;return yr=$fetch(Po(`builds/meta/${e}.json`)),yr.then(n=>{lc=Mh(n.matcher)}),yr}function Gr(){return yr||Kp()}async function Ro(e){return await Gr(),Zl({},...lc.matchAll(e).reverse())}function $i(e,t={}){const n=Wp(e,t),r=de(),s=r._payloadCache=r._payloadCache||{};return n in s||(s[n]=qp(e).then(o=>o?cc(n).then(i=>i||(delete s[n],null)):(s[n]=null,null))),s[n]}const zp="_payload.json";function Wp(e,t={}){var s;const n=new URL(e,"http://localhost");if(n.host!=="localhost"||ut(n.pathname,{acceptRelative:!0}))throw new Error("Payload URL must not include hostname: "+e);const r=t.hash||(t.fresh?Date.now():(s=ac().nuxt)==null?void 0:s.buildId);return Qn(rt().app.baseURL,n.pathname,zp+(r?`?${r}`:""))}async function cc(e){const t=fetch(e).then(n=>n.text().then(uc));try{return await t}catch(n){console.warn("[nuxt] Cannot load payload ",e,n)}return null}async function qp(e=jn().path){if(e=Jn(e),(await Gr()).prerendered.includes(e))return!0;const n=await Ro(e);return!!n.prerender&&!n.redirect}let fr=null;async function Gp(){if(fr)return fr;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await uc(e.textContent||""),n=e.dataset.src?await cc(e.dataset.src):void 0;return fr={...t,...n,...window.__NUXT__},fr}async function uc(e){return await Yh(e,de()._payloadRevivers)}function Jp(e,t){de()._payloadRevivers[e]=t}const Ni={NuxtError:e=>Zn(e),EmptyShallowRef:e=>nn(e==="_"?void 0:e==="0n"?BigInt(0):$n(e)),EmptyRef:e=>be(e==="_"?void 0:e==="0n"?BigInt(0):$n(e)),ShallowRef:e=>nn(e),ShallowReactive:e=>Kn(e),Ref:e=>be(e),Reactive:e=>At(e)},Qp=ft({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const r in Ni)Jp(r,Ni[r]);Object.assign(e.payload,([t,n]=Nn(()=>e.runWithContext(Gp)),t=await t,n(),t)),window.__NUXT__=e.payload}}),Xp=[],Zp=ft({name:"nuxt:head",enforce:"pre",setup(e){const t=Lp({plugins:Xp});Ip(()=>de().vueApp._context.provides.usehead),e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await sc(t)};t.hooks.hook("dom:beforeRender",s=>{s.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r)}}});/*! * vue-router v4.3.2 * (c) 2024 Eduardo San Martin Morote * @license MIT - */const Kt=typeof document<"u";function Yp(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const oe=Object.assign;function fs(e,t){const n={};for(const r in t){const s=t[r];n[r]=Ge(s)?s.map(e):e(s)}return n}const xn=()=>{},Ge=Array.isArray,fc=/#/g,e1=/&/g,t1=/\//g,n1=/=/g,r1=/\?/g,dc=/\+/g,s1=/%5B/g,o1=/%5D/g,hc=/%5E/g,i1=/%60/g,pc=/%7B/g,a1=/%7C/g,gc=/%7D/g,l1=/%20/g;function To(e){return encodeURI(""+e).replace(a1,"|").replace(s1,"[").replace(o1,"]")}function c1(e){return To(e).replace(pc,"{").replace(gc,"}").replace(hc,"^")}function Ws(e){return To(e).replace(dc,"%2B").replace(l1,"+").replace(fc,"%23").replace(e1,"%26").replace(i1,"`").replace(pc,"{").replace(gc,"}").replace(hc,"^")}function u1(e){return Ws(e).replace(n1,"%3D")}function f1(e){return To(e).replace(fc,"%23").replace(r1,"%3F")}function d1(e){return e==null?"":f1(e).replace(t1,"%2F")}function Bn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const h1=/\/$/,p1=e=>e.replace(h1,"");function ds(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=_1(r??t,n),{fullPath:r+(o&&"?")+o+i,path:r,query:s,hash:Bn(i)}}function g1(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Di(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function m1(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&an(t.matched[r],n.matched[s])&&mc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function an(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function mc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!y1(e[n],t[n]))return!1;return!0}function y1(e,t){return Ge(e)?ji(e,t):Ge(t)?ji(t,e):e===t}function ji(e,t){return Ge(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function _1(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}var Fn;(function(e){e.pop="pop",e.push="push"})(Fn||(Fn={}));var kn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(kn||(kn={}));function v1(e){if(!e)if(Kt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),p1(e)}const b1=/^[^#]+#/;function w1(e,t){return e.replace(b1,"#")+t}function E1(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Jr=()=>({left:window.scrollX,top:window.scrollY});function P1(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=E1(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Bi(e,t){return(history.state?history.state.position-t:-1)+e}const qs=new Map;function C1(e,t){qs.set(e,t)}function R1(e){const t=qs.get(e);return qs.delete(e),t}let T1=()=>location.protocol+"//"+location.host;function yc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),Di(l,"")}return Di(n,e)+r+s}function S1(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const g=yc(e,location),_=n.value,w=t.value;let x=0;if(d){if(n.value=g,t.value=d,i&&i===_){i=null;return}x=w?d.position-w.position:0}else r(g);s.forEach(C=>{C(n.value,_,{delta:x,type:Fn.pop,direction:x?x>0?kn.forward:kn.back:kn.unknown})})};function l(){i=n.value}function u(d){s.push(d);const g=()=>{const _=s.indexOf(d);_>-1&&s.splice(_,1)};return o.push(g),g}function c(){const{history:d}=window;d.state&&d.replaceState(oe({},d.state,{scroll:Jr()}),"")}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function Fi(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?Jr():null}}function x1(e){const{history:t,location:n}=window,r={value:yc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:T1()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(g){console.error(g),n[c?"replace":"assign"](d)}}function i(l,u){const c=oe({},t.state,Fi(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,c,!0),r.value=l}function a(l,u){const c=oe({},s.value,t.state,{forward:l,scroll:Jr()});o(c.current,c,!0);const f=oe({},Fi(r.value,l,null),{position:c.position+1},u);o(l,f,!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function _c(e){e=v1(e);const t=x1(e),n=S1(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=oe({location:"",base:e,go:r,createHref:w1.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function k1(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),_c(e)}function A1(e){return typeof e=="string"||e&&typeof e=="object"}function vc(e){return typeof e=="string"||typeof e=="symbol"}const We={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},bc=Symbol("");var Ui;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ui||(Ui={}));function ln(e,t){return oe(new Error,{type:e,[bc]:!0},t)}function st(e,t){return e instanceof Error&&bc in e&&(t==null||!!(e.type&t))}const Vi="[^/]+?",O1={sensitive:!1,strict:!1,start:!0,end:!0},L1=/[.+*?^${}()[\]/\\]/g;function I1(e,t){const n=oe({},O1,t),r=[];let s=n.start?"^":"";const o=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function M1(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const $1={type:0,value:""},N1=/[a-zA-Z0-9_]/;function D1(e){if(!e)return[[]];if(e==="/")return[[$1]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",c="";function f(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(y)}:xn}function i(c){if(vc(c)){const f=r.get(c);f&&(r.delete(c),n.splice(n.indexOf(f),1),f.children.forEach(i),f.alias.forEach(i))}else{const f=n.indexOf(c);f>-1&&(n.splice(f,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function a(){return n}function l(c){let f=0;for(;f=0&&(c.record.path!==n[f].record.path||!wc(c,n[f]));)f++;n.splice(f,0,c),c.record.name&&!Wi(c)&&r.set(c.record.name,c)}function u(c,f){let d,g={},_,w;if("name"in c&&c.name){if(d=r.get(c.name),!d)throw ln(1,{location:c});w=d.record.name,g=oe(zi(f.params,d.keys.filter(y=>!y.optional).concat(d.parent?d.parent.keys.filter(y=>y.optional):[]).map(y=>y.name)),c.params&&zi(c.params,d.keys.map(y=>y.name))),_=d.stringify(g)}else if(c.path!=null)_=c.path,d=n.find(y=>y.re.test(_)),d&&(g=d.parse(_),w=d.record.name);else{if(d=f.name?r.get(f.name):n.find(y=>y.re.test(f.path)),!d)throw ln(1,{location:c,currentLocation:f});w=d.record.name,g=oe({},f.params,c.params),_=d.stringify(g)}const x=[];let C=d;for(;C;)x.unshift(C.record),C=C.parent;return{name:w,path:_,params:g,matched:x,meta:V1(x)}}return e.forEach(c=>o(c)),{addRoute:o,resolve:u,removeRoute:i,getRoutes:a,getRecordMatcher:s}}function zi(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function F1(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:U1(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function U1(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Wi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function V1(e){return e.reduce((t,n)=>oe(t,n.meta),{})}function qi(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function wc(e,t){return t.children.some(n=>n===e||wc(e,n))}function K1(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&Ws(o)):[r&&Ws(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function z1(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Ge(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const W1=Symbol(""),Ji=Symbol(""),So=Symbol(""),Ec=Symbol(""),Gs=Symbol("");function gn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Et(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(ln(4,{from:n,to:t})):d instanceof Error?l(d):A1(d)?l(ln(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},c=o(()=>e.call(r&&r.instances[s],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function hs(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(q1(l)){const c=(l.__vccOpts||l)[t];c&&o.push(Et(c,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${i.path}"`));const f=Yp(c)?c.default:c;i.components[a]=f;const g=(f.__vccOpts||f)[t];return g&&Et(g,n,r,i,a,s)()}))}}return o}function q1(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Qi(e){const t=De(So),n=De(Ec),r=Te(()=>{const l=ue(e.to);return t.resolve(l)}),s=Te(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(an.bind(null,c));if(d>-1)return d;const g=Xi(l[u-2]);return u>1&&Xi(c)===g&&f[f.length-1].path!==g?f.findIndex(an.bind(null,l[u-2])):d}),o=Te(()=>s.value>-1&&X1(n.params,r.value.params)),i=Te(()=>s.value>-1&&s.value===n.matched.length-1&&mc(n.params,r.value.params));function a(l={}){return Q1(l)?t[ue(e.replace)?"replace":"push"](ue(e.to)).catch(xn):Promise.resolve()}return{route:r,href:Te(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}const G1=lt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Qi,setup(e,{slots:t}){const n=At(Qi(e)),{options:r}=De(So),s=Te(()=>({[Zi(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Zi(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:Ae("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),J1=G1;function Q1(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function X1(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!Ge(s)||s.length!==r.length||r.some((o,i)=>o!==s[i]))return!1}return!0}function Xi(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Zi=(e,t,n)=>e??t??n,Z1=lt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=De(Gs),s=Te(()=>e.route||r.value),o=De(Ji,0),i=Te(()=>{let u=ue(o);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=Te(()=>s.value.matched[i.value]);Yt(Ji,Te(()=>i.value+1)),Yt(W1,a),Yt(Gs,s);const l=be();return tt(()=>[l.value,a.value,e.name],([u,c,f],[d,g,_])=>{c&&(c.instances[f]=u,g&&g!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=g.leaveGuards),c.updateGuards.size||(c.updateGuards=g.updateGuards))),u&&c&&(!g||!an(c,g)||!d)&&(c.enterCallbacks[f]||[]).forEach(w=>w(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return Yi(n.default,{Component:d,route:u});const g=f.props[c],_=g?g===!0?u.params:typeof g=="function"?g(u):g:null,x=Ae(d,oe({},_,t,{onVnodeUnmounted:C=>{C.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return Yi(n.default,{Component:x,route:u})||x}}});function Yi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Pc=Z1;function Y1(e){const t=B1(e.routes,e),n=e.parseQuery||K1,r=e.stringifyQuery||Gi,s=e.history,o=gn(),i=gn(),a=gn(),l=nn(We);let u=We;Kt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=fs.bind(null,T=>""+T),f=fs.bind(null,d1),d=fs.bind(null,Bn);function g(T,B){let D,V;return vc(T)?(D=t.getRecordMatcher(T),V=B):V=T,t.addRoute(V,D)}function _(T){const B=t.getRecordMatcher(T);B&&t.removeRoute(B)}function w(){return t.getRoutes().map(T=>T.record)}function x(T){return!!t.getRecordMatcher(T)}function C(T,B){if(B=oe({},B||l.value),typeof T=="string"){const p=ds(n,T,B.path),b=t.resolve({path:p.path},B),S=s.createHref(p.fullPath);return oe(p,b,{params:d(b.params),hash:Bn(p.hash),redirectedFrom:void 0,href:S})}let D;if(T.path!=null)D=oe({},T,{path:ds(n,T.path,B.path).path});else{const p=oe({},T.params);for(const b in p)p[b]==null&&delete p[b];D=oe({},T,{params:f(p)}),B.params=f(B.params)}const V=t.resolve(D,B),se=T.hash||"";V.params=c(d(V.params));const he=g1(r,oe({},T,{hash:c1(se),path:V.path})),h=s.createHref(he);return oe({fullPath:he,hash:se,query:r===Gi?z1(T.query):T.query||{}},V,{redirectedFrom:void 0,href:h})}function y(T){return typeof T=="string"?ds(n,T,l.value.path):oe({},T)}function m(T,B){if(u!==T)return ln(8,{from:B,to:T})}function v(T){return H(T)}function E(T){return v(oe(y(T),{replace:!0}))}function P(T){const B=T.matched[T.matched.length-1];if(B&&B.redirect){const{redirect:D}=B;let V=typeof D=="function"?D(T):D;return typeof V=="string"&&(V=V.includes("?")||V.includes("#")?V=y(V):{path:V},V.params={}),oe({query:T.query,hash:T.hash,params:V.path!=null?{}:T.params},V)}}function H(T,B){const D=u=C(T),V=l.value,se=T.state,he=T.force,h=T.replace===!0,p=P(D);if(p)return H(oe(y(p),{state:typeof p=="object"?oe({},se,p.state):se,force:he,replace:h}),B||D);const b=D;b.redirectedFrom=B;let S;return!he&&m1(r,V,D)&&(S=ln(16,{to:b,from:V}),Qe(V,V,!0,!1)),(S?Promise.resolve(S):$(b,V)).catch(R=>st(R)?st(R,2)?R:dt(R):K(R,b,V)).then(R=>{if(R){if(st(R,2))return H(oe({replace:h},y(R.to),{state:typeof R.to=="object"?oe({},se,R.to.state):se,force:he}),B||b)}else R=I(b,V,!0,h,se);return X(b,V,R),R})}function A(T,B){const D=m(T,B);return D?Promise.reject(D):Promise.resolve()}function N(T){const B=Ut.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(T):T()}function $(T,B){let D;const[V,se,he]=eg(T,B);D=hs(V.reverse(),"beforeRouteLeave",T,B);for(const p of V)p.leaveGuards.forEach(b=>{D.push(Et(b,T,B))});const h=A.bind(null,T,B);return D.push(h),Ce(D).then(()=>{D=[];for(const p of o.list())D.push(Et(p,T,B));return D.push(h),Ce(D)}).then(()=>{D=hs(se,"beforeRouteUpdate",T,B);for(const p of se)p.updateGuards.forEach(b=>{D.push(Et(b,T,B))});return D.push(h),Ce(D)}).then(()=>{D=[];for(const p of he)if(p.beforeEnter)if(Ge(p.beforeEnter))for(const b of p.beforeEnter)D.push(Et(b,T,B));else D.push(Et(p.beforeEnter,T,B));return D.push(h),Ce(D)}).then(()=>(T.matched.forEach(p=>p.enterCallbacks={}),D=hs(he,"beforeRouteEnter",T,B,N),D.push(h),Ce(D))).then(()=>{D=[];for(const p of i.list())D.push(Et(p,T,B));return D.push(h),Ce(D)}).catch(p=>st(p,8)?p:Promise.reject(p))}function X(T,B,D){a.list().forEach(V=>N(()=>V(T,B,D)))}function I(T,B,D,V,se){const he=m(T,B);if(he)return he;const h=B===We,p=Kt?history.state:{};D&&(V||h?s.replace(T.fullPath,oe({scroll:h&&p&&p.scroll},se)):s.push(T.fullPath,se)),l.value=T,Qe(T,B,D,h),dt()}let J;function le(){J||(J=s.listen((T,B,D)=>{if(!Yn.listening)return;const V=C(T),se=P(V);if(se){H(oe(se,{replace:!0}),V).catch(xn);return}u=V;const he=l.value;Kt&&C1(Bi(he.fullPath,D.delta),Jr()),$(V,he).catch(h=>st(h,12)?h:st(h,2)?(H(h.to,V).then(p=>{st(p,20)&&!D.delta&&D.type===Fn.pop&&s.go(-1,!1)}).catch(xn),Promise.reject()):(D.delta&&s.go(-D.delta,!1),K(h,V,he))).then(h=>{h=h||I(V,he,!1),h&&(D.delta&&!st(h,8)?s.go(-D.delta,!1):D.type===Fn.pop&&st(h,20)&&s.go(-1,!1)),X(V,he,h)}).catch(xn)}))}let ce=gn(),U=gn(),ee;function K(T,B,D){dt(T);const V=U.list();return V.length?V.forEach(se=>se(T,B,D)):console.error(T),Promise.reject(T)}function Ke(){return ee&&l.value!==We?Promise.resolve():new Promise((T,B)=>{ce.add([T,B])})}function dt(T){return ee||(ee=!T,le(),ce.list().forEach(([B,D])=>T?D(T):B()),ce.reset()),T}function Qe(T,B,D,V){const{scrollBehavior:se}=e;if(!Kt||!se)return Promise.resolve();const he=!D&&R1(Bi(T.fullPath,0))||(V||!D)&&history.state&&history.state.scroll||null;return fn().then(()=>se(T,B,he)).then(h=>h&&P1(h)).catch(h=>K(h,T,B))}const Oe=T=>s.go(T);let Ft;const Ut=new Set,Yn={currentRoute:l,listening:!0,addRoute:g,removeRoute:_,hasRoute:x,getRoutes:w,resolve:C,options:e,push:v,replace:E,go:Oe,back:()=>Oe(-1),forward:()=>Oe(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:U.add,isReady:Ke,install(T){const B=this;T.component("RouterLink",J1),T.component("RouterView",Pc),T.config.globalProperties.$router=B,Object.defineProperty(T.config.globalProperties,"$route",{enumerable:!0,get:()=>ue(l)}),Kt&&!Ft&&l.value===We&&(Ft=!0,v(s.location).catch(se=>{}));const D={};for(const se in We)Object.defineProperty(D,se,{get:()=>l.value[se],enumerable:!0});T.provide(So,B),T.provide(Ec,Kn(D)),T.provide(Gs,l);const V=T.unmount;Ut.add(T),T.unmount=function(){Ut.delete(T),Ut.size<1&&(u=We,J&&J(),J=null,l.value=We,Ft=!1,ee=!1),V()}}};function Ce(T){return T.reduce((B,D)=>B.then(()=>N(D)),Promise.resolve())}return Yn}function eg(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;ian(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>an(u,l))||s.push(l))}return[n,r,s]}const tg=(e,t)=>t.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""}),Js=(e,t)=>{const n=e.route.matched.find(s=>{var o;return((o=s.components)==null?void 0:o.default)===e.Component.type}),r=t??(n==null?void 0:n.meta.key)??(n&&tg(e.route,n));return typeof r=="function"?r(e.route):r},ng=(e,t)=>({default:()=>e?Ae(Ju,e===!0?{}:e,t):t});function xo(e){return Array.isArray(e)?e:[e]}const rg="modulepreload",sg=function(e,t){return e[0]==="."?new URL(e,t).href:e},ea={},og=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link"),i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=sg(l,r),l in ea)return;ea[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(!!r)for(let g=o.length-1;g>=0;g--){const _=o[g];if(_.href===l&&(!u||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${c}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":rg,u||(d.as="script",d.crossOrigin=""),d.href=l,a&&d.setAttribute("nonce",a),document.head.appendChild(d),u)return new Promise((g,_)=>{d.addEventListener("load",g),d.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},z=(...e)=>og(...e).catch(t=>{const n=new Event("nuxt.preloadError");throw n.payload=t,window.dispatchEvent(n),t}),ps=null,gs=null,ms=null,ys=null,_s=null,ta=[{name:"slug",path:"/:slug(.*)*",meta:{},alias:[],redirect:ps==null?void 0:ps.redirect,component:()=>z(()=>import("./CXEfJix5.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e)},{name:"videos-slug",path:"/videos/:slug(.*)*",meta:{},alias:[],redirect:gs==null?void 0:gs.redirect,component:()=>z(()=>import("./BhlzmK7H.js"),__vite__mapDeps([7,8,9,10,5,11,12,6,13]),import.meta.url).then(e=>e.default||e)},{name:"videos",path:"/videos",meta:{},alias:[],redirect:ms==null?void 0:ms.redirect,component:()=>z(()=>import("./DD8qZ3hl.js"),__vite__mapDeps([14,1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e)},{name:"writing-slug",path:"/writing/:slug(.*)*",meta:{},alias:[],redirect:ys==null?void 0:ys.redirect,component:()=>z(()=>import("./BphJWFSF.js"),__vite__mapDeps([15,11,16,10,5,13,2,3,4,1,6,17]),import.meta.url).then(e=>e.default||e)},{name:"writing",path:"/writing",meta:{},alias:[],redirect:_s==null?void 0:_s.redirect,component:()=>z(()=>import("./mEzFdTf5.js"),__vite__mapDeps([18,1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e)}],ig=(e,t,n)=>(t=t===!0?{}:t,{default:()=>{var r;return t?Ae(e,t,n):(r=n.default)==null?void 0:r.call(n)}});function na(e){const t=(e==null?void 0:e.meta.key)??e.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""});return typeof t=="function"?t(e):t}function ag(e,t){return e===t||t===We?!1:na(e)!==na(t)?!0:!e.matched.every((r,s)=>{var o,i;return r.components&&r.components.default===((i=(o=t.matched[s])==null?void 0:o.components)==null?void 0:i.default)})}const lg={scrollBehavior(e,t,n){var u;const r=de(),s=((u=Je().options)==null?void 0:u.scrollBehaviorType)??"auto";let o=n||void 0;const i=typeof e.meta.scrollToTop=="function"?e.meta.scrollToTop(e,t):e.meta.scrollToTop;if(!o&&t&&e&&i!==!1&&ag(e,t)&&(o={left:0,top:0}),e.path===t.path)return t.hash&&!e.hash?{left:0,top:0}:e.hash?{el:e.hash,top:ra(e.hash),behavior:s}:!1;const a=c=>!!(c.meta.pageTransition??zs),l=a(t)&&a(e)?"page:transition:finish":"page:finish";return new Promise(c=>{r.hooks.hookOnce(l,async()=>{await new Promise(f=>setTimeout(f,0)),e.hash&&(o={el:e.hash,top:ra(e.hash),behavior:s}),c(o)})})}};function ra(e){try{const t=document.querySelector(e);if(t)return parseFloat(getComputedStyle(t).scrollMarginTop)}catch{}return 0}const cg={hashMode:!1,scrollBehaviorType:"auto"},$e={...cg,...lg},ug=async e=>{var l;let t,n;if(!((l=e.meta)!=null&&l.validate))return;const r=de(),s=Je();if(([t,n]=Nn(()=>Promise.resolve(e.meta.validate(e))),t=await t,n(),t)===!0)return;const i=Zn({statusCode:404,statusMessage:`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}}),a=s.beforeResolve(u=>{if(a(),u===e){const c=s.afterEach(async()=>{c(),await r.runWithContext(()=>Wt(i)),window.history.pushState({},"",e.fullPath)});return!1}})},fg=async e=>{let t,n;const r=([t,n]=Nn(()=>Ro(e.path)),t=await t,n(),t);if(r.redirect)return ut(r.redirect,{acceptRelative:!0})?(window.location.href=r.redirect,!1):r.redirect},dg=[ug,fg],An={};function hg(e,t,n){const{pathname:r,search:s,hash:o}=t,i=e.indexOf("#");if(i>-1){const u=o.includes(e.slice(i))?e.slice(i).length:1;let c=o.slice(u);return c[0]!=="/"&&(c="/"+c),bi(c,"")}const a=bi(r,e),l=!n||$d(a,n,{trailingSlash:!0})?a:n;return l+(l.includes("?")?"":s)+o}const pg=ft({name:"nuxt:router",enforce:"pre",async setup(e){var x,C;let t,n,r=rt().app.baseURL;$e.hashMode&&!r.includes("#")&&(r+="#");const s=((x=$e.history)==null?void 0:x.call($e,r))??($e.hashMode?k1(r):_c(r)),o=((C=$e.routes)==null?void 0:C.call($e,ta))??ta;let i;const a=Y1({...$e,scrollBehavior:(y,m,v)=>{if(m===We){i=v;return}if($e.scrollBehavior){if(a.options.scrollBehavior=$e.scrollBehavior,"scrollRestoration"in window.history){const E=a.beforeEach(()=>{E(),window.history.scrollRestoration="manual"})}return $e.scrollBehavior(y,We,i||v)}},history:s,routes:o});"scrollRestoration"in window.history&&(window.history.scrollRestoration="auto"),e.vueApp.use(a);const l=nn(a.currentRoute.value);a.afterEach((y,m)=>{l.value=m}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>l.value});const u=hg(r,window.location,e.payload.path),c=nn(a.currentRoute.value),f=()=>{c.value=a.currentRoute.value};e.hook("page:finish",f),a.afterEach((y,m)=>{var v,E,P,H;((E=(v=y.matched[0])==null?void 0:v.components)==null?void 0:E.default)===((H=(P=m.matched[0])==null?void 0:P.components)==null?void 0:H.default)&&f()});const d={};for(const y in c.value)Object.defineProperty(d,y,{get:()=>c.value[y]});e._route=Kn(d),e._middleware=e._middleware||{global:[],named:{}};try{[t,n]=Nn(()=>a.isReady()),await t,n()}catch(y){[t,n]=Nn(()=>e.runWithContext(()=>Wt(y))),await t,n()}const g=u!==a.currentRoute.value.fullPath?a.resolve(u):a.currentRoute.value;f();const _=e.payload.state._layout;a.beforeEach(async(y,m)=>{var v;await e.callHook("page:loading:start"),y.meta=At(y.meta),e.isHydrating&&_&&!tn(y.meta.layout)&&(y.meta.layout=_),e._processingMiddleware=!0;{const E=new Set([...dg,...e._middleware.global]);for(const P of y.matched){const H=P.meta.middleware;if(H)for(const A of xo(H))E.add(A)}{const P=await e.runWithContext(()=>Ro(y.path));if(P.appMiddleware)for(const H in P.appMiddleware)P.appMiddleware[H]?E.add(H):E.delete(H)}for(const P of E){const H=typeof P=="string"?e._middleware.named[P]||await((v=An[P])==null?void 0:v.call(An).then(N=>N.default||N)):P;if(!H)throw new Error(`Unknown route middleware: '${P}'.`);const A=await e.runWithContext(()=>H(y,m));if(!e.payload.serverRendered&&e.isHydrating&&(A===!1||A instanceof Error)){const N=A||Fs({statusCode:404,statusMessage:`Page Not Found: ${u}`});return await e.runWithContext(()=>Wt(N)),!1}if(A!==!0&&(A||A===!1))return A}}}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook("page:loading:end")});const w=qr();return a.afterEach(async(y,m,v)=>{delete e._processingMiddleware,!e.isHydrating&&w.value&&await e.runWithContext(zh),v&&await e.callHook("page:loading:end"),y.matched.length===0&&await e.runWithContext(()=>Wt(Fs({statusCode:404,fatal:!1,statusMessage:`Page not found: ${y.fullPath}`,data:{path:y.fullPath}})))}),e.hooks.hookOnce("app:created",async()=>{try{"name"in g&&(g.name=void 0),await a.replace({...g,force:!0}),a.options.scrollBehavior=$e.scrollBehavior}catch(y){await e.runWithContext(()=>Wt(y))}}),{provide:{router:a}}}}),Qs=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),gg=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),ko=e=>{const t=de();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{Qs(e)}):Qs(e)},mg=ft({name:"nuxt:payload",setup(e){Je().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const r=await $i(t.path);r&&Object.assign(e.static.data,r.data)}),ko(()=>{var t;e.hooks.hook("link:prefetch",async n=>{Xn(n).protocol||await $i(n)}),((t=navigator.connection)==null?void 0:t.effectiveType)!=="slow-2g"&&setTimeout(Gr,1e3)})}}),yg=ft(e=>{let t;async function n(){const r=await Gr();t&&clearTimeout(t),t=setTimeout(n,1e3*60*60);try{const s=await $fetch(Po("builds/latest.json")+`?${Date.now()}`);s.id!==r.id&&e.hooks.callHook("app:manifest:update",s)}catch{}}ko(()=>{t=setTimeout(n,1e3*60*60)})}),_g=Q(()=>z(()=>import("./zx29ONos.js"),__vite__mapDeps([19,8]),import.meta.url).then(e=>e.default||e.default||e)),vg=Q(()=>z(()=>import("./DYhIpFu0.js"),__vite__mapDeps([20,10,5,11,12,6,13]),import.meta.url).then(e=>e.default||e.default||e)),bg=Q(()=>z(()=>import("./CnHPgHnb.js"),__vite__mapDeps([21,16,10,5,13]),import.meta.url).then(e=>e.default||e.default||e)),wg=Q(()=>z(()=>import("./D-84Lps2.js"),__vite__mapDeps([22,10,5,13]),import.meta.url).then(e=>e.default||e.default||e)),Eg=Q(()=>z(()=>import("./0WakZ16l.js"),__vite__mapDeps([23,10,5,13]),import.meta.url).then(e=>e.default||e.default||e)),Pg=Q(()=>z(()=>import("./C8T_BnKE.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Cg=Q(()=>z(()=>import("./a3JeNMBb.js"),__vite__mapDeps([24,10,5,13,25]),import.meta.url).then(e=>e.default||e.default||e)),Rg=Q(()=>z(()=>import("./B-yvyQ1i.js"),__vite__mapDeps([26,10,5,12,6,13,17,27]),import.meta.url).then(e=>e.default||e.default||e)),Tg=Q(()=>z(()=>import("./K8H0nq_a.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Sg=Q(()=>z(()=>import("./Co6DaCUo.js"),__vite__mapDeps([28,9,10,5,11,12,6,13]),import.meta.url).then(e=>e.default||e.default||e)),xg=Q(()=>z(()=>import("./C7ePx9hc.js"),__vite__mapDeps([1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e.default||e)),kg=Q(()=>z(()=>import("./DhTXWxNA.js"),__vite__mapDeps([12,6]),import.meta.url).then(e=>e.default||e.default||e)),Ag=Q(()=>z(()=>Promise.resolve().then(()=>zm),void 0,import.meta.url).then(e=>e.default||e.default||e)),Og=Q(()=>z(()=>import("./DVDnHXyh.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Lg=Q(()=>z(()=>import("./CM4QiD5h.js"),__vite__mapDeps([2,3,4,5]),import.meta.url).then(e=>e.default||e.default||e)),Ig=Q(()=>z(()=>import("./B7ph2GW4.js"),__vite__mapDeps([29,3,4,5]),import.meta.url).then(e=>e.default||e.default||e)),Hg=Q(()=>z(()=>import("./BUmnHLhL.js"),__vite__mapDeps([30,10,5]),import.meta.url).then(e=>e.default||e.default||e)),Mg=Q(()=>z(()=>import("./CEqY_cML.js"),[],import.meta.url).then(e=>e.default||e.default||e)),$g=Q(()=>z(()=>import("./DBPcRj_W.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Ng=Q(()=>z(()=>import("./zSbY1IBA.js"),__vite__mapDeps([31,30,10,5]),import.meta.url).then(e=>e.default||e.default||e)),Dg=Q(()=>z(()=>import("./B7wil4S-.js"),__vite__mapDeps([32,33,34]),import.meta.url).then(e=>e.default||e.default||e)),jg=Q(()=>z(()=>import("./BfpgT2Sr.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Bg=Q(()=>z(()=>import("./BbY90lsR.js"),__vite__mapDeps([35,33,34]),import.meta.url).then(e=>e.default||e.default||e)),Fg=Q(()=>z(()=>import("./Cp929Rer.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Ug=Q(()=>z(()=>import("./zZgutmkc.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Vg=Q(()=>z(()=>import("./C7Fz0XqL.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Kg=Q(()=>z(()=>import("./BmgllKrI.js"),[],import.meta.url).then(e=>e.default||e.default||e)),zg=Q(()=>z(()=>import("./C7Kyp-qE.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Wg=Q(()=>z(()=>import("./D_KpN4FA.js"),[],import.meta.url).then(e=>e.default||e.default||e)),qg=Q(()=>z(()=>import("./Cxnwe0dV.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Gg=Q(()=>z(()=>import("./DSnkYcuZ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Jg=Q(()=>z(()=>import("./U7Zt4TCY.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Qg=Q(()=>z(()=>import("./DgAI_Kxh.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Xg=Q(()=>z(()=>import("./tjftRvHX.js"),__vite__mapDeps([36,11]),import.meta.url).then(e=>e.default||e.default||e)),Zg=Q(()=>z(()=>import("./rxHcN81V.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Yg=Q(()=>z(()=>import("./DoGugEZW.js"),[],import.meta.url).then(e=>e.default||e.default||e)),em=Q(()=>z(()=>import("./CL5bECpF.js"),[],import.meta.url).then(e=>e.default||e.default||e)),tm=Q(()=>z(()=>import("./C3KD9uNb.js"),[],import.meta.url).then(e=>e.default||e.default||e)),nm=Q(()=>z(()=>import("./BdFen9Bg.js"),[],import.meta.url).then(e=>e.default||e.default||e)),rm=Q(()=>z(()=>import("./lF9FL2OT.js"),[],import.meta.url).then(e=>e.default||e.default||e)),sm=Q(()=>z(()=>import("./mdZ-y8w7.js"),[],import.meta.url).then(e=>e.default||e.default||e)),om=Q(()=>z(()=>import("./DjRgFLIl.js"),[],import.meta.url).then(e=>e.default||e.default||e)),im=Q(()=>z(()=>import("./FIlmglO9.js"),[],import.meta.url).then(e=>e.default||e.default||e)),am=Q(()=>z(()=>import("./D3l4VGev.js"),[],import.meta.url).then(e=>e.default||e.default||e)),lm=Q(()=>z(()=>import("./CrqaM0nI.js"),[],import.meta.url).then(e=>e.default||e.default||e)),cm=Q(()=>z(()=>import("./BB2VkLiz.js"),[],import.meta.url).then(e=>e.default||e.default||e)),um=[["TitleBlock",_g],["Articles",vg],["Hero",bg],["Media",wg],["Richtext",Eg],["SpeakerDetails",Pg],["SpeakerMedia",Cg],["Talks",Rg],["TwoColumn",Tg],["Videos",Sg],["ContentDoc",xg],["ContentList",kg],["ContentNavigation",Ag],["ContentQuery",Og],["ContentRenderer",Lg],["ContentRendererMarkdown",Ig],["MDCSlot",Hg],["DocumentDrivenEmpty",Mg],["DocumentDrivenNotFound",$g],["Markdown",Ng],["ProseCode",Dg],["ProseCodeInline",jg],["ProsePre",Bg],["ProseA",Fg],["ProseBlockquote",Ug],["ProseEm",Vg],["ProseH1",Kg],["ProseH2",zg],["ProseH3",Wg],["ProseH4",qg],["ProseH5",Gg],["ProseH6",Jg],["ProseHr",Qg],["ProseImg",Xg],["ProseLi",Zg],["ProseOl",Yg],["ProseP",em],["ProseScript",tm],["ProseStrong",nm],["ProseTable",rm],["ProseTbody",sm],["ProseTd",om],["ProseTh",im],["ProseThead",am],["ProseTr",lm],["ProseUl",cm]],fm=ft({name:"nuxt:global-components",setup(e){for(const[t,n]of um)e.vueApp.component(t,n),e.vueApp.component("Lazy"+t,n)}}),dr={},dm=ft({name:"nuxt:prefetch",setup(e){const t=Je();e.hooks.hook("app:mounted",()=>{t.beforeEach(async n=>{var s;const r=(s=n==null?void 0:n.meta)==null?void 0:s.layout;r&&typeof dr[r]=="function"&&await dr[r]()})}),e.hooks.hook("link:prefetch",n=>{if(ut(n))return;const r=t.resolve(n);if(!r)return;const s=r.meta.layout;let o=xo(r.meta.middleware);o=o.filter(i=>typeof i=="string");for(const i of o)typeof An[i]=="function"&&An[i]();s&&typeof dr[s]=="function"&&dr[s]()})}}),hm={path:"/",watch:!0,decode:e=>$n(decodeURIComponent(e)),encode:e=>encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))},pm=void 0;function _r(e,t){var l;const n={...hm,...t},r=sa(n)||{};let s;n.maxAge!==void 0?s=n.maxAge*1e3:n.expires&&(s=n.expires.getTime()-Date.now());const o=s!==void 0&&s<=0,i=Ze(o?void 0:r[e]??((l=n.default)==null?void 0:l.call(n))),a=s&&!o?ym(i,s,n.watch&&n.watch!=="shallow"):be(i);{let u=null;try{!pm&&typeof BroadcastChannel<"u"&&(u=new BroadcastChannel(`nuxt:cookies:${e}`))}catch{}const c=()=>{n.readonly||Ih(a.value,r[e])||(mm(e,a.value,n),r[e]=Ze(a.value),u==null||u.postMessage({value:n.encode(a.value)}))},f=g=>{var w;const _=g.refresh?(w=sa(n))==null?void 0:w[e]:n.decode(g.value);d=!0,r[e]=a.value=_,fn(()=>{d=!1})};let d=!1;Dr()&&vr(()=>{d=!0,c(),u==null||u.close()}),u&&(u.onmessage=({data:g})=>f(g)),n.watch?tt(a,()=>{d||c()},{deep:n.watch!=="shallow"}):c()}return a}function sa(e={}){return yh(document.cookie,e)}function gm(e,t,n={}){return t==null?Ri(e,t,{...n,maxAge:-1}):Ri(e,t,n)}function mm(e,t,n={}){document.cookie=gm(e,t,n)}const oa=2147483647;function ym(e,t,n){let r,s,o=0;const i=n?be(e):{value:e};return Dr()&&vr(()=>{s==null||s(),clearTimeout(r)}),bu((a,l)=>{n&&(s=tt(i,l));function u(){clearTimeout(r);const c=t-o,f=c{if(o+=f,o{const t=rt().public.studio||{},n=jn(),r=_r("previewToken",{sameSite:"none",secure:!0}),s=Cc("studio-client-db",()=>null);async function o(){const i=await z(()=>import("./BD-CroyX.js"),__vite__mapDeps([37,38]),import.meta.url).then(u=>u.useStudio),{mountPreviewUI:a,initiateIframeCommunication:l}=i();a(),l()}if(t.apiURL){if(Object.prototype.hasOwnProperty.call(n.query,"preview")&&!n.query.preview||!n.query.preview&&!r.value)return;n.query.preview&&(r.value=String(n.query.preview)),window.sessionStorage.setItem("previewToken",String(r.value)),window.sessionStorage.setItem("previewAPI",typeof n.query.staging<"u"?"https://dev-api.nuxt.studio":t.apiURL),e.hook("content:storage",i=>{s.value=i}),e.hook("app:mounted",async()=>{await o()})}});function bm(e={}){const t=e.path||window.location.pathname;let n={};try{n=$n(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||(n==null?void 0:n.path)!==t||(n==null?void 0:n.expires){r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const a="href"in o&&o.href[0]==="#"?n.app.baseURL+o.href:Qn(n.app.baseURL,o.fullPath);bm({path:a,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}}),Em=[Qp,Zp,pg,mg,yg,fm,dm,vm,wm],Rc=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Pm={},Cm={width:"43",height:"61",fill:"none"},Rm=Pl('',2),Tm=[Rm];function Sm(e,t){return Ie(),Rn("svg",Cm,Tm)}const xm=Rc(Pm,[["render",Sm]]);async function Tc(e,t=Je()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||(t._routePreloaded=new Set),t._routePreloaded.has(n)))return;const s=t._preloadPromises=t._preloadPromises||[];if(s.length>4)return Promise.all(s).then(()=>Tc(e,t));t._routePreloaded.add(n);const o=r.map(i=>{var a;return(a=i.components)==null?void 0:a.default}).filter(i=>typeof i=="function");for(const i of o){const a=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(a)));s.push(a)}await Promise.all(s)}const km=(...e)=>e.find(t=>t!==void 0);function Am(e){const t=e.componentName||"NuxtLink";function n(r,s){if(!r||e.trailingSlash!=="append"&&e.trailingSlash!=="remove")return r;if(typeof r=="string")return ia(r,e.trailingSlash);const o="path"in r&&r.path!==void 0?r.path:s(r).path;return{...r,name:void 0,path:ia(o,e.trailingSlash)}}return lt({name:t,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},setup(r,{slots:s}){const o=Je(),i=rt(),a=Te(()=>{const _=r.to||r.href||"";return n(_,o.resolve)}),l=Te(()=>typeof a.value=="string"&&ut(a.value,{acceptRelative:!0})),u=Te(()=>r.target&&r.target!=="_self"),c=Te(()=>r.external||u.value?!0:typeof a.value=="object"?!1:a.value===""||l.value),f=be(!1),d=be(null),g=_=>{var w;d.value=r.custom?(w=_==null?void 0:_.$el)==null?void 0:w.nextElementSibling:_==null?void 0:_.$el};if(r.prefetch!==!1&&r.noPrefetch!==!0&&r.target!=="_blank"&&!Lm()){const w=de();let x,C=null;Kr(()=>{const y=Om();ko(()=>{x=Qs(()=>{var m;(m=d==null?void 0:d.value)!=null&&m.tagName&&(C=y.observe(d.value,async()=>{C==null||C(),C=null;const v=typeof a.value=="string"?a.value:o.resolve(a.value).fullPath;await Promise.all([w.hooks.callHook("link:prefetch",v).catch(()=>{}),!c.value&&Tc(a.value,o).catch(()=>{})]),f.value=!0}))})})}),Wn(()=>{x&&gg(x),C==null||C(),C=null})}return()=>{var C,y;if(!c.value){const m={ref:g,to:a.value,activeClass:r.activeClass||e.activeClass,exactActiveClass:r.exactActiveClass||e.exactActiveClass,replace:r.replace,ariaCurrentValue:r.ariaCurrentValue,custom:r.custom};return r.custom||(f.value&&(m.class=r.prefetchedClass||e.prefetchedClass),m.rel=r.rel||void 0),Ae(Iu("RouterLink"),m,s.default)}const _=typeof a.value=="object"?((C=o.resolve(a.value))==null?void 0:C.href)??null:a.value&&!r.external&&!l.value?n(Qn(i.app.baseURL,a.value),o.resolve):a.value||null,w=r.target||null,x=km(r.noRel?"":r.rel,e.externalRelAttribute,l.value||u.value?"noopener noreferrer":"")||null;if(r.custom){if(!s.default)return null;const m=()=>Kh(_,{replace:r.replace,external:r.external});return s.default({href:_,navigate:m,get route(){if(!_)return;const v=Xn(_);return{path:v.pathname,fullPath:v.pathname,get query(){return $l(v.search)},hash:v.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:_}},rel:x,target:w,isExternal:c.value,isActive:!1,isExactActive:!1})}return Ae("a",{ref:d,href:_,rel:x,target:w},(y=s.default)==null?void 0:y.call(s))}}})}const Sc=Am(Fp);function ia(e,t){const n=t==="append"?kr:Jn;return ut(e)&&!e.startsWith("http")?e:n(e,!0)}function Om(){const e=de();if(e._observer)return e._observer;let t=null;const n=new Map,r=(o,i)=>(t||(t=new IntersectionObserver(a=>{for(const l of a){const u=n.get(l.target);(l.isIntersecting||l.intersectionRatio>0)&&u&&u()}})),n.set(o,i),t.observe(o),()=>{n.delete(o),t.unobserve(o),n.size===0&&(t.disconnect(),t=null)});return e._observer={observe:r}}function Lm(){const e=navigator.connection;return!!(e&&(e.saveData||/2g/.test(e.effectiveType)))}const Im=e=>e==="defer"||e===!1;function Hm(...e){var _;const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);let[n,r,s={}]=e;if(typeof n!="string")throw new TypeError("[nuxt] [asyncData] key must be a string.");if(typeof r!="function")throw new TypeError("[nuxt] [asyncData] handler must be a function.");const o=de(),i=r,a=()=>null,l=()=>o.isHydrating?o.payload.data[n]:o.static.data[n];s.server=s.server??!0,s.default=s.default??a,s.getCachedData=s.getCachedData??l,s.lazy=s.lazy??!1,s.immediate=s.immediate??!0,s.deep=s.deep??Up.deep,s.dedupe=s.dedupe??"cancel";const u=()=>s.getCachedData(n,o)!=null;if(!o._asyncData[n]||!s.immediate){(_=o.payload._errors)[n]??(_[n]=null);const w=s.deep?be:nn;o._asyncData[n]={data:w(s.getCachedData(n,o)??s.default()),pending:be(!u()),error:co(o.payload._errors,n),status:be("idle")}}const c={...o._asyncData[n]};c.refresh=c.execute=(w={})=>{if(o._asyncDataPromises[n]){if(Im(w.dedupe??s.dedupe))return o._asyncDataPromises[n];o._asyncDataPromises[n].cancelled=!0}if((w._initial||o.isHydrating&&w._initial!==!1)&&u())return Promise.resolve(s.getCachedData(n,o));c.pending.value=!0,c.status.value="pending";const x=new Promise((C,y)=>{try{C(i(o))}catch(m){y(m)}}).then(async C=>{if(x.cancelled)return o._asyncDataPromises[n];let y=C;s.transform&&(y=await s.transform(C)),s.pick&&(y=$m(y,s.pick)),o.payload.data[n]=y,c.data.value=y,c.error.value=null,c.status.value="success"}).catch(C=>{if(x.cancelled)return o._asyncDataPromises[n];c.error.value=Zn(C),c.data.value=ue(s.default()),c.status.value="error"}).finally(()=>{x.cancelled||(c.pending.value=!1,delete o._asyncDataPromises[n])});return o._asyncDataPromises[n]=x,o._asyncDataPromises[n]},c.clear=()=>Mm(o,n);const f=()=>c.refresh({_initial:!0}),d=s.server!==!1&&o.payload.serverRendered;{const w=dn();if(w&&!w._nuxtOnBeforeMountCbs){w._nuxtOnBeforeMountCbs=[];const y=w._nuxtOnBeforeMountCbs;el(()=>{y.forEach(m=>{m()}),y.splice(0,y.length)}),go(()=>y.splice(0,y.length))}d&&o.isHydrating&&(c.error.value||u())?(c.pending.value=!1,c.status.value=c.error.value?"error":"success"):w&&(o.payload.serverRendered&&o.isHydrating||s.lazy)&&s.immediate?w._nuxtOnBeforeMountCbs.push(f):s.immediate&&f();const x=Dr();if(s.watch){const y=tt(s.watch,()=>c.refresh());x&&vr(y)}const C=o.hook("app:data:refresh",async y=>{(!y||y.includes(n))&&await c.refresh()});x&&vr(C)}const g=Promise.resolve(o._asyncDataPromises[n]).then(()=>c);return Object.assign(g,c),g}function Mm(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=null),e._asyncData[t]&&(e._asyncData[t].data.value=void 0,e._asyncData[t].error.value=null,e._asyncData[t].pending.value=!1,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t].cancelled=!0,e._asyncDataPromises[t]=void 0)}function $m(e,t){const n={};for(const r of t)n[r]=e[r];return n}function Ao(e){return JSON.stringify(e,Nm)}function Nm(e,t){return t instanceof RegExp?`--REGEX ${t.toString()}`:t}const xc=e=>{let t=Ao(e);return t=typeof Buffer<"u"?Buffer.from(t).toString("base64"):btoa(t),t=t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),(t.match(/.{1,100}/g)||[]).join("/")},Oo=()=>({isEnabled:()=>{const r=jn().query;return Object.prototype.hasOwnProperty.call(r,"preview")&&!r.preview?!1:!!(r.preview||_r("previewToken").value||sessionStorage.getItem("previewToken"))},getPreviewToken:()=>_r("previewToken").value||sessionStorage.getItem("previewToken")||void 0,setPreviewToken:r=>{_r("previewToken").value=r,jn().query.preview=r||"",r?sessionStorage.setItem("previewToken",r):sessionStorage.removeItem("previewToken"),window.location.reload()}}),Hr=e=>Nl(e,rt().public.content.api.baseURL),Dm=()=>{throw console.warn("useContent is only accessible when you are using `documentDriven` mode."),console.warn("Learn more by visiting: https://content.nuxt.com/document-driven"),new Error("useContent is only accessible when you are using `documentDriven` mode.")},kc=()=>{const{experimental:e}=rt().public.content;return e.clientDB?!0:Oo().isEnabled()},aa=(e,t)=>t.split(".").reduce((n,r)=>n&&n[r],e),Lo=(e,t)=>Object.keys(e).filter(t).reduce((n,r)=>Object.assign(n,{[r]:e[r]}),{}),f0=e=>t=>e&&e.length?Lo(t,n=>!e.includes(n)):t,d0=e=>t=>Array.isArray(t)?t.map(n=>e(n)):e(t),Ac=e=>{const t=[],n=[];for(const r of e)["$","_"].includes(r)?t.push(r):n.push(r);return{prefixes:t,properties:n}},h0=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Ac(e);return Lo(t,s=>!r.includes(s)&&!n.includes(s[0]))},p0=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Ac(e);return Lo(t,s=>r.includes(s)||n.includes(s[0]))},g0=(e,t)=>{const n=new Intl.Collator(t.$locale,{numeric:t.$numeric,caseFirst:t.$caseFirst,sensitivity:t.$sensitivity}),r=Object.keys(t).filter(s=>!s.startsWith("$"));for(const s of r)e=e.sort((o,i)=>{const a=[aa(o,s),aa(i,s)].map(l=>{if(l!==null)return l instanceof Date?l.toISOString():l});return t[s]===-1&&a.reverse(),n.compare(a[0],a[1])});return e},m0=(e,t="Expected an array")=>{if(!Array.isArray(e))throw new TypeError(t)},ot=e=>Array.isArray(e)?e:[void 0,null].includes(e)?[]:[e],jm=["sort","where","only","without"];function Bm(e,t={}){const n={};for(const i of Object.keys(t.initialParams||{}))n[i]=jm.includes(i)?ot(t.initialParams[i]):t.initialParams[i];const r=(i,a=l=>l)=>(...l)=>(n[i]=a(...l),o),s=i=>{var a;return t.legacy?i!=null&&i.surround?i.surround:i&&(i!=null&&i.dirConfig&&(i.result={_path:(a=i.dirConfig)==null?void 0:a._path,...i.result,_dir:i.dirConfig}),i!=null&&i._path||Array.isArray(i)||!Object.prototype.hasOwnProperty.call(i,"result")?i:i==null?void 0:i.result):i},o={params:()=>({...n,...n.where?{where:[...ot(n.where)]}:{},...n.sort?{sort:[...ot(n.sort)]}:{}}),only:r("only",ot),without:r("without",ot),where:r("where",i=>[...ot(n.where),...ot(i)]),sort:r("sort",i=>[...ot(n.sort),...ot(i)]),limit:r("limit",i=>parseInt(String(i),10)),skip:r("skip",i=>parseInt(String(i),10)),find:()=>e(o).then(s),findOne:()=>e(r("first")(!0)).then(s),count:()=>e(r("count")(!0)).then(s),locale:i=>o.where({_locale:i}),withSurround:r("surround",(i,a)=>({query:i,...a})),withDirConfig:()=>r("dirConfig")(!0)};return t.legacy&&(o.findSurround=(i,a)=>o.withSurround(i,a).find().then(s)),o}const Fm=()=>async e=>{const{content:t}=rt().public,n=e.params(),r=t.experimental.stripQueryParameters?Hr(`/query/${`${Dn(n)}.${t.integrity}`}/${xc(n)}.json`):Hr(`/query/${Dn(n)}.${t.integrity}.json`);if(kc())return(await z(()=>import("./BeWLaV8q.js"),__vite__mapDeps([39,4]),import.meta.url).then(i=>i.useContentDatabase())).fetch(e);const s=await $fetch(r,{method:"GET",responseType:"json",params:t.experimental.stripQueryParameters?void 0:{_params:Ao(n),previewToken:Oo().getPreviewToken()}});if(typeof s=="string"&&s.startsWith(""))throw new Error("Not found");return s};function Um(e,...t){const{content:n}=rt().public,r=Bm(Fm(),{initialParams:typeof e!="string"?e:{},legacy:!0});let s;typeof e=="string"&&(s=Ms(Qn(e,...t)));const o=r.params;return r.params=()=>{var a,l,u;const i=o();return s&&(i.where=i.where||[],i.first&&(i.where||[]).length===0?i.where.push({_path:Jn(s)}):i.where.push({_path:new RegExp(`^${s.replace(/[-[\]{}()*+.,^$\s/]/g,"\\$&")}`)})),(a=i.sort)!=null&&a.length||(i.sort=[{_file:1,$numeric:!0}]),n.locales.length&&((u=(l=i.where)==null?void 0:l.find(f=>f._locale))!=null&&u._locale||(i.where=i.where||[],i.where.push({_locale:n.defaultLocale}))),i},r}const Vm=async e=>{const{content:t}=rt().public;typeof(e==null?void 0:e.params)!="function"&&(e=Um(e));const n=e.params(),r=t.experimental.stripQueryParameters?Hr(`/navigation/${`${Dn(n)}.${t.integrity}`}/${xc(n)}.json`):Hr(`/navigation/${Dn(n)}.${t.integrity}.json`);if(kc())return(await z(()=>import("./BeWLaV8q.js"),__vite__mapDeps([39,4]),import.meta.url).then(i=>i.generateNavigation))(n);const s=await $fetch(r,{method:"GET",responseType:"json",params:t.experimental.stripQueryParameters?void 0:{_params:Ao(n),previewToken:Oo().getPreviewToken()}});if(typeof s=="string"&&s.startsWith(""))throw new Error("Not found");return s},Km=lt({name:"ContentNavigation",props:{query:{type:Object,required:!1,default:void 0}},async setup(e){const{query:t}=wu(e),n=Te(()=>{var s;return typeof((s=t.value)==null?void 0:s.params)=="function"?t.value.params():t.value});if(!n.value&&Cc("dd-navigation").value){const{navigation:s}=Dm();return{navigation:s}}const{data:r}=await Hm(`content-navigation-${Dn(n.value)}`,()=>Vm(n.value));return{navigation:r}},render(e){const t=rf(),{navigation:n}=e,r=i=>Ae(Sc,{to:i._path},()=>i.title),s=(i,a)=>Ae("ul",a?{"data-level":a}:null,i.map(l=>l.children?Ae("li",null,[r(l),s(l.children,a+1)]):Ae("li",null,r(l)))),o=i=>s(i,0);return t!=null&&t.default?t.default({navigation:n,...this.$attrs}):o(n)}}),Oc=Km,zm=Object.freeze(Object.defineProperty({__proto__:null,default:Oc},Symbol.toStringTag,{value:"Module"})),Wm={class:"px-8 py-4 flex justify-between items-center sticky top-0 z-50 bg-[#1b1d39] lg:bg-opacity-80"},qm=Pl('Open main menu
',2),Gm=[qm],Jm={class:"flex space-x-0 lg:space-x-8 justify-end items-center lg:items-baseline flex-col lg:flex-row"},Qm=lt({__name:"globalHeader",setup(e){const t=be(!1);function n(){t.value=!t.value}return(r,s)=>{const o=xm,i=Sc,a=Oc;return Ie(),Rn("header",Wm,[ae(i,{to:"/",class:"home-button",title:"Homepage","aria-label":"Homepage",onClick:s[0]||(s[0]=l=>t.value=!1)},{default:wn(()=>[ae(o)]),_:1}),Tn("button",{class:en(["nav-toggle z-[60] absolute top-8 right-8 w-8 h-8 lg:hidden transform transition duration-500 ease-in-out",ue(t)?"open":""]),onClick:s[1]||(s[1]=l=>n())},Gm,2),Tn("nav",{class:en([{"hidden lg:block":!ue(t)},"absolute top-[93px] left-0 w-full z-50 lg:static bg-[#1b1d39] lg:bg-none"])},[ae(a,null,{default:wn(({navigation:l})=>[Tn("ul",Jm,[(Ie(!0),Rn(ke,null,tf(l,u=>(Ie(),Rn("li",{key:u._path,class:"font-bold uppercase mb-4 lg:mb-0",onClick:s[2]||(s[2]=c=>t.value=!1)},[ae(i,{to:u._path},{default:wn(()=>[_o(Wc(u.title),1)]),_:2},1032,["to"])]))),128))])]),_:1})],2)])}}}),Xm=Rc(Qm,[["__scopeId","data-v-9b1c4d91"]]),Zm=lt({props:{vnode:{type:Object,required:!0},route:{type:Object,required:!0},vnodeRef:Object,renderKey:String,trackRootNodes:Boolean},setup(e){const t=e.renderKey,n=e.route,r={};for(const s in e.route)Object.defineProperty(r,s,{get:()=>t===e.renderKey?e.route[s]:n[s]});return Yt(Wr,Kn(r)),()=>Ae(e.vnode,{ref:e.vnodeRef})}}),Ym=lt({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,expose:n}){const r=de(),s=be(),o=De(Wr,null);let i;n({pageRef:s});const a=De(Uh,null);let l;const u=r.deferHydration();if(r.isHydrating){const c=r.hooks.hookOnce("app:error",u);Je().beforeEach(c)}return e.pageKey&&tt(()=>e.pageKey,(c,f)=>{c!==f&&r.callHook("page:loading:start")}),()=>Ae(Pc,{name:e.name,route:e.route,...t},{default:c=>{const f=t0(o,c.route,c.Component),d=o&&o.matched.length===c.route.matched.length;if(!c.Component){if(l&&!d)return l;u();return}if(l&&a&&!a.isCurrent(c.route))return l;if(f&&o&&(!a||a!=null&&a.isCurrent(o)))return d?l:null;const g=Js(c,e.pageKey);!r.isHydrating&&!n0(o,c.route,c.Component)&&i===g&&r.callHook("page:loading:end"),i=g;const _=!!(e.transition??c.route.meta.pageTransition??zs),w=_&&e0([e.transition,c.route.meta.pageTransition,zs,{onAfterLeave:()=>{r.callHook("page:transition:finish",c.Component)}}].filter(Boolean)),x=e.keepalive??c.route.meta.keepalive??Bp;return l=ig(wo,_&&w,ng(x,Ae(za,{suspensible:!0,onPending:()=>r.callHook("page:start",c.Component),onResolve:()=>{fn(()=>r.callHook("page:finish",c.Component).then(()=>r.callHook("page:loading:end")).finally(u))}},{default:()=>{const C=Ae(Zm,{key:g||void 0,vnode:c.Component,route:c.route,renderKey:g||void 0,trackRootNodes:_,vnodeRef:s});return x&&(C.type.name=c.Component.type.name||c.Component.type.__name||"RouteProvider"),C}}))).default(),l}})}});function e0(e){const t=e.map(n=>({...n,onAfterLeave:n.onAfterLeave?xo(n.onAfterLeave):void 0}));return Zl(...t)}function t0(e,t,n){if(!e)return!1;const r=t.matched.findIndex(s=>{var o;return((o=s.components)==null?void 0:o.default)===(n==null?void 0:n.type)});return!r||r===-1?!1:t.matched.slice(0,r).some((s,o)=>{var i,a,l;return((i=s.components)==null?void 0:i.default)!==((l=(a=e.matched[o])==null?void 0:a.components)==null?void 0:l.default)})||n&&Js({route:t,Component:n})!==Js({route:e,Component:n})}function n0(e,t,n){return e?t.matched.findIndex(s=>{var o;return((o=s.components)==null?void 0:o.default)===(n==null?void 0:n.type)}){const r=Xm,s=Ym;return Ie(),Rn("main",r0,[ae(r),ae(s)])}}}),o0={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error;n.stack&&n.stack.split(` + */const Kt=typeof document<"u";function Yp(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const oe=Object.assign;function fs(e,t){const n={};for(const r in t){const s=t[r];n[r]=Ge(s)?s.map(e):e(s)}return n}const xn=()=>{},Ge=Array.isArray,fc=/#/g,e1=/&/g,t1=/\//g,n1=/=/g,r1=/\?/g,dc=/\+/g,s1=/%5B/g,o1=/%5D/g,hc=/%5E/g,i1=/%60/g,pc=/%7B/g,a1=/%7C/g,gc=/%7D/g,l1=/%20/g;function To(e){return encodeURI(""+e).replace(a1,"|").replace(s1,"[").replace(o1,"]")}function c1(e){return To(e).replace(pc,"{").replace(gc,"}").replace(hc,"^")}function Ws(e){return To(e).replace(dc,"%2B").replace(l1,"+").replace(fc,"%23").replace(e1,"%26").replace(i1,"`").replace(pc,"{").replace(gc,"}").replace(hc,"^")}function u1(e){return Ws(e).replace(n1,"%3D")}function f1(e){return To(e).replace(fc,"%23").replace(r1,"%3F")}function d1(e){return e==null?"":f1(e).replace(t1,"%2F")}function Bn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const h1=/\/$/,p1=e=>e.replace(h1,"");function ds(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=_1(r??t,n),{fullPath:r+(o&&"?")+o+i,path:r,query:s,hash:Bn(i)}}function g1(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Di(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function m1(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&an(t.matched[r],n.matched[s])&&mc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function an(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function mc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!y1(e[n],t[n]))return!1;return!0}function y1(e,t){return Ge(e)?ji(e,t):Ge(t)?ji(t,e):e===t}function ji(e,t){return Ge(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function _1(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}var Fn;(function(e){e.pop="pop",e.push="push"})(Fn||(Fn={}));var kn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(kn||(kn={}));function v1(e){if(!e)if(Kt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),p1(e)}const b1=/^[^#]+#/;function w1(e,t){return e.replace(b1,"#")+t}function E1(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Jr=()=>({left:window.scrollX,top:window.scrollY});function P1(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=E1(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Bi(e,t){return(history.state?history.state.position-t:-1)+e}const qs=new Map;function C1(e,t){qs.set(e,t)}function R1(e){const t=qs.get(e);return qs.delete(e),t}let T1=()=>location.protocol+"//"+location.host;function yc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),Di(l,"")}return Di(n,e)+r+s}function S1(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const g=yc(e,location),_=n.value,w=t.value;let x=0;if(d){if(n.value=g,t.value=d,i&&i===_){i=null;return}x=w?d.position-w.position:0}else r(g);s.forEach(C=>{C(n.value,_,{delta:x,type:Fn.pop,direction:x?x>0?kn.forward:kn.back:kn.unknown})})};function l(){i=n.value}function u(d){s.push(d);const g=()=>{const _=s.indexOf(d);_>-1&&s.splice(_,1)};return o.push(g),g}function c(){const{history:d}=window;d.state&&d.replaceState(oe({},d.state,{scroll:Jr()}),"")}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function Fi(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?Jr():null}}function x1(e){const{history:t,location:n}=window,r={value:yc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:T1()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(g){console.error(g),n[c?"replace":"assign"](d)}}function i(l,u){const c=oe({},t.state,Fi(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,c,!0),r.value=l}function a(l,u){const c=oe({},s.value,t.state,{forward:l,scroll:Jr()});o(c.current,c,!0);const f=oe({},Fi(r.value,l,null),{position:c.position+1},u);o(l,f,!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function _c(e){e=v1(e);const t=x1(e),n=S1(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=oe({location:"",base:e,go:r,createHref:w1.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function k1(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),_c(e)}function A1(e){return typeof e=="string"||e&&typeof e=="object"}function vc(e){return typeof e=="string"||typeof e=="symbol"}const We={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},bc=Symbol("");var Ui;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ui||(Ui={}));function ln(e,t){return oe(new Error,{type:e,[bc]:!0},t)}function st(e,t){return e instanceof Error&&bc in e&&(t==null||!!(e.type&t))}const Vi="[^/]+?",O1={sensitive:!1,strict:!1,start:!0,end:!0},L1=/[.+*?^${}()[\]/\\]/g;function I1(e,t){const n=oe({},O1,t),r=[];let s=n.start?"^":"";const o=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function M1(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const $1={type:0,value:""},N1=/[a-zA-Z0-9_]/;function D1(e){if(!e)return[[]];if(e==="/")return[[$1]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",c="";function f(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(y)}:xn}function i(c){if(vc(c)){const f=r.get(c);f&&(r.delete(c),n.splice(n.indexOf(f),1),f.children.forEach(i),f.alias.forEach(i))}else{const f=n.indexOf(c);f>-1&&(n.splice(f,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function a(){return n}function l(c){let f=0;for(;f=0&&(c.record.path!==n[f].record.path||!wc(c,n[f]));)f++;n.splice(f,0,c),c.record.name&&!Wi(c)&&r.set(c.record.name,c)}function u(c,f){let d,g={},_,w;if("name"in c&&c.name){if(d=r.get(c.name),!d)throw ln(1,{location:c});w=d.record.name,g=oe(zi(f.params,d.keys.filter(y=>!y.optional).concat(d.parent?d.parent.keys.filter(y=>y.optional):[]).map(y=>y.name)),c.params&&zi(c.params,d.keys.map(y=>y.name))),_=d.stringify(g)}else if(c.path!=null)_=c.path,d=n.find(y=>y.re.test(_)),d&&(g=d.parse(_),w=d.record.name);else{if(d=f.name?r.get(f.name):n.find(y=>y.re.test(f.path)),!d)throw ln(1,{location:c,currentLocation:f});w=d.record.name,g=oe({},f.params,c.params),_=d.stringify(g)}const x=[];let C=d;for(;C;)x.unshift(C.record),C=C.parent;return{name:w,path:_,params:g,matched:x,meta:V1(x)}}return e.forEach(c=>o(c)),{addRoute:o,resolve:u,removeRoute:i,getRoutes:a,getRecordMatcher:s}}function zi(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function F1(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:U1(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function U1(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Wi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function V1(e){return e.reduce((t,n)=>oe(t,n.meta),{})}function qi(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function wc(e,t){return t.children.some(n=>n===e||wc(e,n))}function K1(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&Ws(o)):[r&&Ws(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function z1(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Ge(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const W1=Symbol(""),Ji=Symbol(""),So=Symbol(""),Ec=Symbol(""),Gs=Symbol("");function gn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Et(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(ln(4,{from:n,to:t})):d instanceof Error?l(d):A1(d)?l(ln(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},c=o(()=>e.call(r&&r.instances[s],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function hs(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(q1(l)){const c=(l.__vccOpts||l)[t];c&&o.push(Et(c,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${i.path}"`));const f=Yp(c)?c.default:c;i.components[a]=f;const g=(f.__vccOpts||f)[t];return g&&Et(g,n,r,i,a,s)()}))}}return o}function q1(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Qi(e){const t=De(So),n=De(Ec),r=Te(()=>{const l=ue(e.to);return t.resolve(l)}),s=Te(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(an.bind(null,c));if(d>-1)return d;const g=Xi(l[u-2]);return u>1&&Xi(c)===g&&f[f.length-1].path!==g?f.findIndex(an.bind(null,l[u-2])):d}),o=Te(()=>s.value>-1&&X1(n.params,r.value.params)),i=Te(()=>s.value>-1&&s.value===n.matched.length-1&&mc(n.params,r.value.params));function a(l={}){return Q1(l)?t[ue(e.replace)?"replace":"push"](ue(e.to)).catch(xn):Promise.resolve()}return{route:r,href:Te(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}const G1=lt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Qi,setup(e,{slots:t}){const n=At(Qi(e)),{options:r}=De(So),s=Te(()=>({[Zi(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Zi(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:Ae("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),J1=G1;function Q1(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function X1(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!Ge(s)||s.length!==r.length||r.some((o,i)=>o!==s[i]))return!1}return!0}function Xi(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Zi=(e,t,n)=>e??t??n,Z1=lt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=De(Gs),s=Te(()=>e.route||r.value),o=De(Ji,0),i=Te(()=>{let u=ue(o);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=Te(()=>s.value.matched[i.value]);Yt(Ji,Te(()=>i.value+1)),Yt(W1,a),Yt(Gs,s);const l=be();return tt(()=>[l.value,a.value,e.name],([u,c,f],[d,g,_])=>{c&&(c.instances[f]=u,g&&g!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=g.leaveGuards),c.updateGuards.size||(c.updateGuards=g.updateGuards))),u&&c&&(!g||!an(c,g)||!d)&&(c.enterCallbacks[f]||[]).forEach(w=>w(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return Yi(n.default,{Component:d,route:u});const g=f.props[c],_=g?g===!0?u.params:typeof g=="function"?g(u):g:null,x=Ae(d,oe({},_,t,{onVnodeUnmounted:C=>{C.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return Yi(n.default,{Component:x,route:u})||x}}});function Yi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Pc=Z1;function Y1(e){const t=B1(e.routes,e),n=e.parseQuery||K1,r=e.stringifyQuery||Gi,s=e.history,o=gn(),i=gn(),a=gn(),l=nn(We);let u=We;Kt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=fs.bind(null,T=>""+T),f=fs.bind(null,d1),d=fs.bind(null,Bn);function g(T,B){let D,V;return vc(T)?(D=t.getRecordMatcher(T),V=B):V=T,t.addRoute(V,D)}function _(T){const B=t.getRecordMatcher(T);B&&t.removeRoute(B)}function w(){return t.getRoutes().map(T=>T.record)}function x(T){return!!t.getRecordMatcher(T)}function C(T,B){if(B=oe({},B||l.value),typeof T=="string"){const p=ds(n,T,B.path),b=t.resolve({path:p.path},B),S=s.createHref(p.fullPath);return oe(p,b,{params:d(b.params),hash:Bn(p.hash),redirectedFrom:void 0,href:S})}let D;if(T.path!=null)D=oe({},T,{path:ds(n,T.path,B.path).path});else{const p=oe({},T.params);for(const b in p)p[b]==null&&delete p[b];D=oe({},T,{params:f(p)}),B.params=f(B.params)}const V=t.resolve(D,B),se=T.hash||"";V.params=c(d(V.params));const he=g1(r,oe({},T,{hash:c1(se),path:V.path})),h=s.createHref(he);return oe({fullPath:he,hash:se,query:r===Gi?z1(T.query):T.query||{}},V,{redirectedFrom:void 0,href:h})}function y(T){return typeof T=="string"?ds(n,T,l.value.path):oe({},T)}function m(T,B){if(u!==T)return ln(8,{from:B,to:T})}function v(T){return H(T)}function E(T){return v(oe(y(T),{replace:!0}))}function P(T){const B=T.matched[T.matched.length-1];if(B&&B.redirect){const{redirect:D}=B;let V=typeof D=="function"?D(T):D;return typeof V=="string"&&(V=V.includes("?")||V.includes("#")?V=y(V):{path:V},V.params={}),oe({query:T.query,hash:T.hash,params:V.path!=null?{}:T.params},V)}}function H(T,B){const D=u=C(T),V=l.value,se=T.state,he=T.force,h=T.replace===!0,p=P(D);if(p)return H(oe(y(p),{state:typeof p=="object"?oe({},se,p.state):se,force:he,replace:h}),B||D);const b=D;b.redirectedFrom=B;let S;return!he&&m1(r,V,D)&&(S=ln(16,{to:b,from:V}),Qe(V,V,!0,!1)),(S?Promise.resolve(S):$(b,V)).catch(R=>st(R)?st(R,2)?R:dt(R):K(R,b,V)).then(R=>{if(R){if(st(R,2))return H(oe({replace:h},y(R.to),{state:typeof R.to=="object"?oe({},se,R.to.state):se,force:he}),B||b)}else R=I(b,V,!0,h,se);return X(b,V,R),R})}function A(T,B){const D=m(T,B);return D?Promise.reject(D):Promise.resolve()}function N(T){const B=Ut.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(T):T()}function $(T,B){let D;const[V,se,he]=eg(T,B);D=hs(V.reverse(),"beforeRouteLeave",T,B);for(const p of V)p.leaveGuards.forEach(b=>{D.push(Et(b,T,B))});const h=A.bind(null,T,B);return D.push(h),Ce(D).then(()=>{D=[];for(const p of o.list())D.push(Et(p,T,B));return D.push(h),Ce(D)}).then(()=>{D=hs(se,"beforeRouteUpdate",T,B);for(const p of se)p.updateGuards.forEach(b=>{D.push(Et(b,T,B))});return D.push(h),Ce(D)}).then(()=>{D=[];for(const p of he)if(p.beforeEnter)if(Ge(p.beforeEnter))for(const b of p.beforeEnter)D.push(Et(b,T,B));else D.push(Et(p.beforeEnter,T,B));return D.push(h),Ce(D)}).then(()=>(T.matched.forEach(p=>p.enterCallbacks={}),D=hs(he,"beforeRouteEnter",T,B,N),D.push(h),Ce(D))).then(()=>{D=[];for(const p of i.list())D.push(Et(p,T,B));return D.push(h),Ce(D)}).catch(p=>st(p,8)?p:Promise.reject(p))}function X(T,B,D){a.list().forEach(V=>N(()=>V(T,B,D)))}function I(T,B,D,V,se){const he=m(T,B);if(he)return he;const h=B===We,p=Kt?history.state:{};D&&(V||h?s.replace(T.fullPath,oe({scroll:h&&p&&p.scroll},se)):s.push(T.fullPath,se)),l.value=T,Qe(T,B,D,h),dt()}let J;function le(){J||(J=s.listen((T,B,D)=>{if(!Yn.listening)return;const V=C(T),se=P(V);if(se){H(oe(se,{replace:!0}),V).catch(xn);return}u=V;const he=l.value;Kt&&C1(Bi(he.fullPath,D.delta),Jr()),$(V,he).catch(h=>st(h,12)?h:st(h,2)?(H(h.to,V).then(p=>{st(p,20)&&!D.delta&&D.type===Fn.pop&&s.go(-1,!1)}).catch(xn),Promise.reject()):(D.delta&&s.go(-D.delta,!1),K(h,V,he))).then(h=>{h=h||I(V,he,!1),h&&(D.delta&&!st(h,8)?s.go(-D.delta,!1):D.type===Fn.pop&&st(h,20)&&s.go(-1,!1)),X(V,he,h)}).catch(xn)}))}let ce=gn(),U=gn(),ee;function K(T,B,D){dt(T);const V=U.list();return V.length?V.forEach(se=>se(T,B,D)):console.error(T),Promise.reject(T)}function Ke(){return ee&&l.value!==We?Promise.resolve():new Promise((T,B)=>{ce.add([T,B])})}function dt(T){return ee||(ee=!T,le(),ce.list().forEach(([B,D])=>T?D(T):B()),ce.reset()),T}function Qe(T,B,D,V){const{scrollBehavior:se}=e;if(!Kt||!se)return Promise.resolve();const he=!D&&R1(Bi(T.fullPath,0))||(V||!D)&&history.state&&history.state.scroll||null;return fn().then(()=>se(T,B,he)).then(h=>h&&P1(h)).catch(h=>K(h,T,B))}const Oe=T=>s.go(T);let Ft;const Ut=new Set,Yn={currentRoute:l,listening:!0,addRoute:g,removeRoute:_,hasRoute:x,getRoutes:w,resolve:C,options:e,push:v,replace:E,go:Oe,back:()=>Oe(-1),forward:()=>Oe(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:U.add,isReady:Ke,install(T){const B=this;T.component("RouterLink",J1),T.component("RouterView",Pc),T.config.globalProperties.$router=B,Object.defineProperty(T.config.globalProperties,"$route",{enumerable:!0,get:()=>ue(l)}),Kt&&!Ft&&l.value===We&&(Ft=!0,v(s.location).catch(se=>{}));const D={};for(const se in We)Object.defineProperty(D,se,{get:()=>l.value[se],enumerable:!0});T.provide(So,B),T.provide(Ec,Kn(D)),T.provide(Gs,l);const V=T.unmount;Ut.add(T),T.unmount=function(){Ut.delete(T),Ut.size<1&&(u=We,J&&J(),J=null,l.value=We,Ft=!1,ee=!1),V()}}};function Ce(T){return T.reduce((B,D)=>B.then(()=>N(D)),Promise.resolve())}return Yn}function eg(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;ian(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>an(u,l))||s.push(l))}return[n,r,s]}const tg=(e,t)=>t.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""}),Js=(e,t)=>{const n=e.route.matched.find(s=>{var o;return((o=s.components)==null?void 0:o.default)===e.Component.type}),r=t??(n==null?void 0:n.meta.key)??(n&&tg(e.route,n));return typeof r=="function"?r(e.route):r},ng=(e,t)=>({default:()=>e?Ae(Ju,e===!0?{}:e,t):t});function xo(e){return Array.isArray(e)?e:[e]}const rg="modulepreload",sg=function(e,t){return e[0]==="."?new URL(e,t).href:e},ea={},og=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link"),i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=sg(l,r),l in ea)return;ea[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(!!r)for(let g=o.length-1;g>=0;g--){const _=o[g];if(_.href===l&&(!u||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${c}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":rg,u||(d.as="script",d.crossOrigin=""),d.href=l,a&&d.setAttribute("nonce",a),document.head.appendChild(d),u)return new Promise((g,_)=>{d.addEventListener("load",g),d.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},z=(...e)=>og(...e).catch(t=>{const n=new Event("nuxt.preloadError");throw n.payload=t,window.dispatchEvent(n),t}),ps=null,gs=null,ms=null,ys=null,_s=null,ta=[{name:"slug",path:"/:slug(.*)*",meta:{},alias:[],redirect:ps==null?void 0:ps.redirect,component:()=>z(()=>import("./D0V36zTW.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e)},{name:"videos-slug",path:"/videos/:slug(.*)*",meta:{},alias:[],redirect:gs==null?void 0:gs.redirect,component:()=>z(()=>import("./CfHTnMbA.js"),__vite__mapDeps([7,8,9,10,5,11,12,6,13]),import.meta.url).then(e=>e.default||e)},{name:"videos",path:"/videos",meta:{},alias:[],redirect:ms==null?void 0:ms.redirect,component:()=>z(()=>import("./B38Kd99h.js"),__vite__mapDeps([14,1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e)},{name:"writing-slug",path:"/writing/:slug(.*)*",meta:{},alias:[],redirect:ys==null?void 0:ys.redirect,component:()=>z(()=>import("./C7iq-ot0.js"),__vite__mapDeps([15,11,16,10,5,13,2,3,4,1,6,17]),import.meta.url).then(e=>e.default||e)},{name:"writing",path:"/writing",meta:{},alias:[],redirect:_s==null?void 0:_s.redirect,component:()=>z(()=>import("./rnAScy2C.js"),__vite__mapDeps([18,1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e)}],ig=(e,t,n)=>(t=t===!0?{}:t,{default:()=>{var r;return t?Ae(e,t,n):(r=n.default)==null?void 0:r.call(n)}});function na(e){const t=(e==null?void 0:e.meta.key)??e.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""});return typeof t=="function"?t(e):t}function ag(e,t){return e===t||t===We?!1:na(e)!==na(t)?!0:!e.matched.every((r,s)=>{var o,i;return r.components&&r.components.default===((i=(o=t.matched[s])==null?void 0:o.components)==null?void 0:i.default)})}const lg={scrollBehavior(e,t,n){var u;const r=de(),s=((u=Je().options)==null?void 0:u.scrollBehaviorType)??"auto";let o=n||void 0;const i=typeof e.meta.scrollToTop=="function"?e.meta.scrollToTop(e,t):e.meta.scrollToTop;if(!o&&t&&e&&i!==!1&&ag(e,t)&&(o={left:0,top:0}),e.path===t.path)return t.hash&&!e.hash?{left:0,top:0}:e.hash?{el:e.hash,top:ra(e.hash),behavior:s}:!1;const a=c=>!!(c.meta.pageTransition??zs),l=a(t)&&a(e)?"page:transition:finish":"page:finish";return new Promise(c=>{r.hooks.hookOnce(l,async()=>{await new Promise(f=>setTimeout(f,0)),e.hash&&(o={el:e.hash,top:ra(e.hash),behavior:s}),c(o)})})}};function ra(e){try{const t=document.querySelector(e);if(t)return parseFloat(getComputedStyle(t).scrollMarginTop)}catch{}return 0}const cg={hashMode:!1,scrollBehaviorType:"auto"},$e={...cg,...lg},ug=async e=>{var l;let t,n;if(!((l=e.meta)!=null&&l.validate))return;const r=de(),s=Je();if(([t,n]=Nn(()=>Promise.resolve(e.meta.validate(e))),t=await t,n(),t)===!0)return;const i=Zn({statusCode:404,statusMessage:`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}}),a=s.beforeResolve(u=>{if(a(),u===e){const c=s.afterEach(async()=>{c(),await r.runWithContext(()=>Wt(i)),window.history.pushState({},"",e.fullPath)});return!1}})},fg=async e=>{let t,n;const r=([t,n]=Nn(()=>Ro(e.path)),t=await t,n(),t);if(r.redirect)return ut(r.redirect,{acceptRelative:!0})?(window.location.href=r.redirect,!1):r.redirect},dg=[ug,fg],An={};function hg(e,t,n){const{pathname:r,search:s,hash:o}=t,i=e.indexOf("#");if(i>-1){const u=o.includes(e.slice(i))?e.slice(i).length:1;let c=o.slice(u);return c[0]!=="/"&&(c="/"+c),bi(c,"")}const a=bi(r,e),l=!n||$d(a,n,{trailingSlash:!0})?a:n;return l+(l.includes("?")?"":s)+o}const pg=ft({name:"nuxt:router",enforce:"pre",async setup(e){var x,C;let t,n,r=rt().app.baseURL;$e.hashMode&&!r.includes("#")&&(r+="#");const s=((x=$e.history)==null?void 0:x.call($e,r))??($e.hashMode?k1(r):_c(r)),o=((C=$e.routes)==null?void 0:C.call($e,ta))??ta;let i;const a=Y1({...$e,scrollBehavior:(y,m,v)=>{if(m===We){i=v;return}if($e.scrollBehavior){if(a.options.scrollBehavior=$e.scrollBehavior,"scrollRestoration"in window.history){const E=a.beforeEach(()=>{E(),window.history.scrollRestoration="manual"})}return $e.scrollBehavior(y,We,i||v)}},history:s,routes:o});"scrollRestoration"in window.history&&(window.history.scrollRestoration="auto"),e.vueApp.use(a);const l=nn(a.currentRoute.value);a.afterEach((y,m)=>{l.value=m}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>l.value});const u=hg(r,window.location,e.payload.path),c=nn(a.currentRoute.value),f=()=>{c.value=a.currentRoute.value};e.hook("page:finish",f),a.afterEach((y,m)=>{var v,E,P,H;((E=(v=y.matched[0])==null?void 0:v.components)==null?void 0:E.default)===((H=(P=m.matched[0])==null?void 0:P.components)==null?void 0:H.default)&&f()});const d={};for(const y in c.value)Object.defineProperty(d,y,{get:()=>c.value[y]});e._route=Kn(d),e._middleware=e._middleware||{global:[],named:{}};try{[t,n]=Nn(()=>a.isReady()),await t,n()}catch(y){[t,n]=Nn(()=>e.runWithContext(()=>Wt(y))),await t,n()}const g=u!==a.currentRoute.value.fullPath?a.resolve(u):a.currentRoute.value;f();const _=e.payload.state._layout;a.beforeEach(async(y,m)=>{var v;await e.callHook("page:loading:start"),y.meta=At(y.meta),e.isHydrating&&_&&!tn(y.meta.layout)&&(y.meta.layout=_),e._processingMiddleware=!0;{const E=new Set([...dg,...e._middleware.global]);for(const P of y.matched){const H=P.meta.middleware;if(H)for(const A of xo(H))E.add(A)}{const P=await e.runWithContext(()=>Ro(y.path));if(P.appMiddleware)for(const H in P.appMiddleware)P.appMiddleware[H]?E.add(H):E.delete(H)}for(const P of E){const H=typeof P=="string"?e._middleware.named[P]||await((v=An[P])==null?void 0:v.call(An).then(N=>N.default||N)):P;if(!H)throw new Error(`Unknown route middleware: '${P}'.`);const A=await e.runWithContext(()=>H(y,m));if(!e.payload.serverRendered&&e.isHydrating&&(A===!1||A instanceof Error)){const N=A||Fs({statusCode:404,statusMessage:`Page Not Found: ${u}`});return await e.runWithContext(()=>Wt(N)),!1}if(A!==!0&&(A||A===!1))return A}}}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook("page:loading:end")});const w=qr();return a.afterEach(async(y,m,v)=>{delete e._processingMiddleware,!e.isHydrating&&w.value&&await e.runWithContext(zh),v&&await e.callHook("page:loading:end"),y.matched.length===0&&await e.runWithContext(()=>Wt(Fs({statusCode:404,fatal:!1,statusMessage:`Page not found: ${y.fullPath}`,data:{path:y.fullPath}})))}),e.hooks.hookOnce("app:created",async()=>{try{"name"in g&&(g.name=void 0),await a.replace({...g,force:!0}),a.options.scrollBehavior=$e.scrollBehavior}catch(y){await e.runWithContext(()=>Wt(y))}}),{provide:{router:a}}}}),Qs=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),gg=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),ko=e=>{const t=de();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{Qs(e)}):Qs(e)},mg=ft({name:"nuxt:payload",setup(e){Je().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const r=await $i(t.path);r&&Object.assign(e.static.data,r.data)}),ko(()=>{var t;e.hooks.hook("link:prefetch",async n=>{Xn(n).protocol||await $i(n)}),((t=navigator.connection)==null?void 0:t.effectiveType)!=="slow-2g"&&setTimeout(Gr,1e3)})}}),yg=ft(e=>{let t;async function n(){const r=await Gr();t&&clearTimeout(t),t=setTimeout(n,1e3*60*60);try{const s=await $fetch(Po("builds/latest.json")+`?${Date.now()}`);s.id!==r.id&&e.hooks.callHook("app:manifest:update",s)}catch{}}ko(()=>{t=setTimeout(n,1e3*60*60)})}),_g=Q(()=>z(()=>import("./dxcZF-PA.js"),__vite__mapDeps([19,8]),import.meta.url).then(e=>e.default||e.default||e)),vg=Q(()=>z(()=>import("./CTYUGvGO.js"),__vite__mapDeps([20,10,5,11,12,6,13]),import.meta.url).then(e=>e.default||e.default||e)),bg=Q(()=>z(()=>import("./CBaLZRFI.js"),__vite__mapDeps([21,16,10,5,13]),import.meta.url).then(e=>e.default||e.default||e)),wg=Q(()=>z(()=>import("./DWI8ydmZ.js"),__vite__mapDeps([22,10,5,13]),import.meta.url).then(e=>e.default||e.default||e)),Eg=Q(()=>z(()=>import("./DgOxVXtI.js"),__vite__mapDeps([23,10,5,13]),import.meta.url).then(e=>e.default||e.default||e)),Pg=Q(()=>z(()=>import("./EWeNVnVJ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Cg=Q(()=>z(()=>import("./CqwHQiUm.js"),__vite__mapDeps([24,10,5,13,25]),import.meta.url).then(e=>e.default||e.default||e)),Rg=Q(()=>z(()=>import("./BdS669jU.js"),__vite__mapDeps([26,10,5,12,6,13,17,27]),import.meta.url).then(e=>e.default||e.default||e)),Tg=Q(()=>z(()=>import("./nwxGMFUf.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Sg=Q(()=>z(()=>import("./DBOe6xVj.js"),__vite__mapDeps([28,9,10,5,11,12,6,13]),import.meta.url).then(e=>e.default||e.default||e)),xg=Q(()=>z(()=>import("./DNoJqnvj.js"),__vite__mapDeps([1,2,3,4,5,6]),import.meta.url).then(e=>e.default||e.default||e)),kg=Q(()=>z(()=>import("./CVVxf02X.js"),__vite__mapDeps([12,6]),import.meta.url).then(e=>e.default||e.default||e)),Ag=Q(()=>z(()=>Promise.resolve().then(()=>zm),void 0,import.meta.url).then(e=>e.default||e.default||e)),Og=Q(()=>z(()=>import("./Bg8nkQWz.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Lg=Q(()=>z(()=>import("./DfsoDfS3.js"),__vite__mapDeps([2,3,4,5]),import.meta.url).then(e=>e.default||e.default||e)),Ig=Q(()=>z(()=>import("./DxFydul6.js"),__vite__mapDeps([29,3,4,5]),import.meta.url).then(e=>e.default||e.default||e)),Hg=Q(()=>z(()=>import("./DPiVMe_u.js"),__vite__mapDeps([30,10,5]),import.meta.url).then(e=>e.default||e.default||e)),Mg=Q(()=>z(()=>import("./CRMRfDH6.js"),[],import.meta.url).then(e=>e.default||e.default||e)),$g=Q(()=>z(()=>import("./67ZTB1NV.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Ng=Q(()=>z(()=>import("./Czc1t-wM.js"),__vite__mapDeps([31,30,10,5]),import.meta.url).then(e=>e.default||e.default||e)),Dg=Q(()=>z(()=>import("./CyG0l8cR.js"),__vite__mapDeps([32,33,34]),import.meta.url).then(e=>e.default||e.default||e)),jg=Q(()=>z(()=>import("./Bau6F8qQ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Bg=Q(()=>z(()=>import("./DaYxZgJd.js"),__vite__mapDeps([35,33,34]),import.meta.url).then(e=>e.default||e.default||e)),Fg=Q(()=>z(()=>import("./CmPckewG.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Ug=Q(()=>z(()=>import("./BtkuLwOR.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Vg=Q(()=>z(()=>import("./Dp0izi_k.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Kg=Q(()=>z(()=>import("./DbcrnMCk.js"),[],import.meta.url).then(e=>e.default||e.default||e)),zg=Q(()=>z(()=>import("./D9lwLfCa.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Wg=Q(()=>z(()=>import("./BqgddL43.js"),[],import.meta.url).then(e=>e.default||e.default||e)),qg=Q(()=>z(()=>import("./CHSZTZL8.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Gg=Q(()=>z(()=>import("./BtPiIyIH.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Jg=Q(()=>z(()=>import("./DKOL77CZ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Qg=Q(()=>z(()=>import("./CA3tJJS7.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Xg=Q(()=>z(()=>import("./Cg5RESyK.js"),__vite__mapDeps([36,11]),import.meta.url).then(e=>e.default||e.default||e)),Zg=Q(()=>z(()=>import("./DsgdWLt5.js"),[],import.meta.url).then(e=>e.default||e.default||e)),Yg=Q(()=>z(()=>import("./B4yvrndq.js"),[],import.meta.url).then(e=>e.default||e.default||e)),em=Q(()=>z(()=>import("./CUq17OQK.js"),[],import.meta.url).then(e=>e.default||e.default||e)),tm=Q(()=>z(()=>import("./ahnsjjkC.js"),[],import.meta.url).then(e=>e.default||e.default||e)),nm=Q(()=>z(()=>import("./CTxtRCoO.js"),[],import.meta.url).then(e=>e.default||e.default||e)),rm=Q(()=>z(()=>import("./BG0PrORA.js"),[],import.meta.url).then(e=>e.default||e.default||e)),sm=Q(()=>z(()=>import("./B-_wDhEn.js"),[],import.meta.url).then(e=>e.default||e.default||e)),om=Q(()=>z(()=>import("./DUyTP6fQ.js"),[],import.meta.url).then(e=>e.default||e.default||e)),im=Q(()=>z(()=>import("./DcCIUjwe.js"),[],import.meta.url).then(e=>e.default||e.default||e)),am=Q(()=>z(()=>import("./DG9AcW2j.js"),[],import.meta.url).then(e=>e.default||e.default||e)),lm=Q(()=>z(()=>import("./cxDVXcZA.js"),[],import.meta.url).then(e=>e.default||e.default||e)),cm=Q(()=>z(()=>import("./CUHVqKjL.js"),[],import.meta.url).then(e=>e.default||e.default||e)),um=[["TitleBlock",_g],["Articles",vg],["Hero",bg],["Media",wg],["Richtext",Eg],["SpeakerDetails",Pg],["SpeakerMedia",Cg],["Talks",Rg],["TwoColumn",Tg],["Videos",Sg],["ContentDoc",xg],["ContentList",kg],["ContentNavigation",Ag],["ContentQuery",Og],["ContentRenderer",Lg],["ContentRendererMarkdown",Ig],["MDCSlot",Hg],["DocumentDrivenEmpty",Mg],["DocumentDrivenNotFound",$g],["Markdown",Ng],["ProseCode",Dg],["ProseCodeInline",jg],["ProsePre",Bg],["ProseA",Fg],["ProseBlockquote",Ug],["ProseEm",Vg],["ProseH1",Kg],["ProseH2",zg],["ProseH3",Wg],["ProseH4",qg],["ProseH5",Gg],["ProseH6",Jg],["ProseHr",Qg],["ProseImg",Xg],["ProseLi",Zg],["ProseOl",Yg],["ProseP",em],["ProseScript",tm],["ProseStrong",nm],["ProseTable",rm],["ProseTbody",sm],["ProseTd",om],["ProseTh",im],["ProseThead",am],["ProseTr",lm],["ProseUl",cm]],fm=ft({name:"nuxt:global-components",setup(e){for(const[t,n]of um)e.vueApp.component(t,n),e.vueApp.component("Lazy"+t,n)}}),dr={},dm=ft({name:"nuxt:prefetch",setup(e){const t=Je();e.hooks.hook("app:mounted",()=>{t.beforeEach(async n=>{var s;const r=(s=n==null?void 0:n.meta)==null?void 0:s.layout;r&&typeof dr[r]=="function"&&await dr[r]()})}),e.hooks.hook("link:prefetch",n=>{if(ut(n))return;const r=t.resolve(n);if(!r)return;const s=r.meta.layout;let o=xo(r.meta.middleware);o=o.filter(i=>typeof i=="string");for(const i of o)typeof An[i]=="function"&&An[i]();s&&typeof dr[s]=="function"&&dr[s]()})}}),hm={path:"/",watch:!0,decode:e=>$n(decodeURIComponent(e)),encode:e=>encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))},pm=void 0;function _r(e,t){var l;const n={...hm,...t},r=sa(n)||{};let s;n.maxAge!==void 0?s=n.maxAge*1e3:n.expires&&(s=n.expires.getTime()-Date.now());const o=s!==void 0&&s<=0,i=Ze(o?void 0:r[e]??((l=n.default)==null?void 0:l.call(n))),a=s&&!o?ym(i,s,n.watch&&n.watch!=="shallow"):be(i);{let u=null;try{!pm&&typeof BroadcastChannel<"u"&&(u=new BroadcastChannel(`nuxt:cookies:${e}`))}catch{}const c=()=>{n.readonly||Ih(a.value,r[e])||(mm(e,a.value,n),r[e]=Ze(a.value),u==null||u.postMessage({value:n.encode(a.value)}))},f=g=>{var w;const _=g.refresh?(w=sa(n))==null?void 0:w[e]:n.decode(g.value);d=!0,r[e]=a.value=_,fn(()=>{d=!1})};let d=!1;Dr()&&vr(()=>{d=!0,c(),u==null||u.close()}),u&&(u.onmessage=({data:g})=>f(g)),n.watch?tt(a,()=>{d||c()},{deep:n.watch!=="shallow"}):c()}return a}function sa(e={}){return yh(document.cookie,e)}function gm(e,t,n={}){return t==null?Ri(e,t,{...n,maxAge:-1}):Ri(e,t,n)}function mm(e,t,n={}){document.cookie=gm(e,t,n)}const oa=2147483647;function ym(e,t,n){let r,s,o=0;const i=n?be(e):{value:e};return Dr()&&vr(()=>{s==null||s(),clearTimeout(r)}),bu((a,l)=>{n&&(s=tt(i,l));function u(){clearTimeout(r);const c=t-o,f=c{if(o+=f,o{const t=rt().public.studio||{},n=jn(),r=_r("previewToken",{sameSite:"none",secure:!0}),s=Cc("studio-client-db",()=>null);async function o(){const i=await z(()=>import("./7RLhvcjy.js"),__vite__mapDeps([37,38]),import.meta.url).then(u=>u.useStudio),{mountPreviewUI:a,initiateIframeCommunication:l}=i();a(),l()}if(t.apiURL){if(Object.prototype.hasOwnProperty.call(n.query,"preview")&&!n.query.preview||!n.query.preview&&!r.value)return;n.query.preview&&(r.value=String(n.query.preview)),window.sessionStorage.setItem("previewToken",String(r.value)),window.sessionStorage.setItem("previewAPI",typeof n.query.staging<"u"?"https://dev-api.nuxt.studio":t.apiURL),e.hook("content:storage",i=>{s.value=i}),e.hook("app:mounted",async()=>{await o()})}});function bm(e={}){const t=e.path||window.location.pathname;let n={};try{n=$n(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||(n==null?void 0:n.path)!==t||(n==null?void 0:n.expires){r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const a="href"in o&&o.href[0]==="#"?n.app.baseURL+o.href:Qn(n.app.baseURL,o.fullPath);bm({path:a,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}}),Em=[Qp,Zp,pg,mg,yg,fm,dm,vm,wm],Rc=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Pm={},Cm={width:"43",height:"61",fill:"none"},Rm=Pl('',2),Tm=[Rm];function Sm(e,t){return Ie(),Rn("svg",Cm,Tm)}const xm=Rc(Pm,[["render",Sm]]);async function Tc(e,t=Je()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||(t._routePreloaded=new Set),t._routePreloaded.has(n)))return;const s=t._preloadPromises=t._preloadPromises||[];if(s.length>4)return Promise.all(s).then(()=>Tc(e,t));t._routePreloaded.add(n);const o=r.map(i=>{var a;return(a=i.components)==null?void 0:a.default}).filter(i=>typeof i=="function");for(const i of o){const a=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(a)));s.push(a)}await Promise.all(s)}const km=(...e)=>e.find(t=>t!==void 0);function Am(e){const t=e.componentName||"NuxtLink";function n(r,s){if(!r||e.trailingSlash!=="append"&&e.trailingSlash!=="remove")return r;if(typeof r=="string")return ia(r,e.trailingSlash);const o="path"in r&&r.path!==void 0?r.path:s(r).path;return{...r,name:void 0,path:ia(o,e.trailingSlash)}}return lt({name:t,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},setup(r,{slots:s}){const o=Je(),i=rt(),a=Te(()=>{const _=r.to||r.href||"";return n(_,o.resolve)}),l=Te(()=>typeof a.value=="string"&&ut(a.value,{acceptRelative:!0})),u=Te(()=>r.target&&r.target!=="_self"),c=Te(()=>r.external||u.value?!0:typeof a.value=="object"?!1:a.value===""||l.value),f=be(!1),d=be(null),g=_=>{var w;d.value=r.custom?(w=_==null?void 0:_.$el)==null?void 0:w.nextElementSibling:_==null?void 0:_.$el};if(r.prefetch!==!1&&r.noPrefetch!==!0&&r.target!=="_blank"&&!Lm()){const w=de();let x,C=null;Kr(()=>{const y=Om();ko(()=>{x=Qs(()=>{var m;(m=d==null?void 0:d.value)!=null&&m.tagName&&(C=y.observe(d.value,async()=>{C==null||C(),C=null;const v=typeof a.value=="string"?a.value:o.resolve(a.value).fullPath;await Promise.all([w.hooks.callHook("link:prefetch",v).catch(()=>{}),!c.value&&Tc(a.value,o).catch(()=>{})]),f.value=!0}))})})}),Wn(()=>{x&&gg(x),C==null||C(),C=null})}return()=>{var C,y;if(!c.value){const m={ref:g,to:a.value,activeClass:r.activeClass||e.activeClass,exactActiveClass:r.exactActiveClass||e.exactActiveClass,replace:r.replace,ariaCurrentValue:r.ariaCurrentValue,custom:r.custom};return r.custom||(f.value&&(m.class=r.prefetchedClass||e.prefetchedClass),m.rel=r.rel||void 0),Ae(Iu("RouterLink"),m,s.default)}const _=typeof a.value=="object"?((C=o.resolve(a.value))==null?void 0:C.href)??null:a.value&&!r.external&&!l.value?n(Qn(i.app.baseURL,a.value),o.resolve):a.value||null,w=r.target||null,x=km(r.noRel?"":r.rel,e.externalRelAttribute,l.value||u.value?"noopener noreferrer":"")||null;if(r.custom){if(!s.default)return null;const m=()=>Kh(_,{replace:r.replace,external:r.external});return s.default({href:_,navigate:m,get route(){if(!_)return;const v=Xn(_);return{path:v.pathname,fullPath:v.pathname,get query(){return $l(v.search)},hash:v.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:_}},rel:x,target:w,isExternal:c.value,isActive:!1,isExactActive:!1})}return Ae("a",{ref:d,href:_,rel:x,target:w},(y=s.default)==null?void 0:y.call(s))}}})}const Sc=Am(Fp);function ia(e,t){const n=t==="append"?kr:Jn;return ut(e)&&!e.startsWith("http")?e:n(e,!0)}function Om(){const e=de();if(e._observer)return e._observer;let t=null;const n=new Map,r=(o,i)=>(t||(t=new IntersectionObserver(a=>{for(const l of a){const u=n.get(l.target);(l.isIntersecting||l.intersectionRatio>0)&&u&&u()}})),n.set(o,i),t.observe(o),()=>{n.delete(o),t.unobserve(o),n.size===0&&(t.disconnect(),t=null)});return e._observer={observe:r}}function Lm(){const e=navigator.connection;return!!(e&&(e.saveData||/2g/.test(e.effectiveType)))}const Im=e=>e==="defer"||e===!1;function Hm(...e){var _;const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);let[n,r,s={}]=e;if(typeof n!="string")throw new TypeError("[nuxt] [asyncData] key must be a string.");if(typeof r!="function")throw new TypeError("[nuxt] [asyncData] handler must be a function.");const o=de(),i=r,a=()=>null,l=()=>o.isHydrating?o.payload.data[n]:o.static.data[n];s.server=s.server??!0,s.default=s.default??a,s.getCachedData=s.getCachedData??l,s.lazy=s.lazy??!1,s.immediate=s.immediate??!0,s.deep=s.deep??Up.deep,s.dedupe=s.dedupe??"cancel";const u=()=>s.getCachedData(n,o)!=null;if(!o._asyncData[n]||!s.immediate){(_=o.payload._errors)[n]??(_[n]=null);const w=s.deep?be:nn;o._asyncData[n]={data:w(s.getCachedData(n,o)??s.default()),pending:be(!u()),error:co(o.payload._errors,n),status:be("idle")}}const c={...o._asyncData[n]};c.refresh=c.execute=(w={})=>{if(o._asyncDataPromises[n]){if(Im(w.dedupe??s.dedupe))return o._asyncDataPromises[n];o._asyncDataPromises[n].cancelled=!0}if((w._initial||o.isHydrating&&w._initial!==!1)&&u())return Promise.resolve(s.getCachedData(n,o));c.pending.value=!0,c.status.value="pending";const x=new Promise((C,y)=>{try{C(i(o))}catch(m){y(m)}}).then(async C=>{if(x.cancelled)return o._asyncDataPromises[n];let y=C;s.transform&&(y=await s.transform(C)),s.pick&&(y=$m(y,s.pick)),o.payload.data[n]=y,c.data.value=y,c.error.value=null,c.status.value="success"}).catch(C=>{if(x.cancelled)return o._asyncDataPromises[n];c.error.value=Zn(C),c.data.value=ue(s.default()),c.status.value="error"}).finally(()=>{x.cancelled||(c.pending.value=!1,delete o._asyncDataPromises[n])});return o._asyncDataPromises[n]=x,o._asyncDataPromises[n]},c.clear=()=>Mm(o,n);const f=()=>c.refresh({_initial:!0}),d=s.server!==!1&&o.payload.serverRendered;{const w=dn();if(w&&!w._nuxtOnBeforeMountCbs){w._nuxtOnBeforeMountCbs=[];const y=w._nuxtOnBeforeMountCbs;el(()=>{y.forEach(m=>{m()}),y.splice(0,y.length)}),go(()=>y.splice(0,y.length))}d&&o.isHydrating&&(c.error.value||u())?(c.pending.value=!1,c.status.value=c.error.value?"error":"success"):w&&(o.payload.serverRendered&&o.isHydrating||s.lazy)&&s.immediate?w._nuxtOnBeforeMountCbs.push(f):s.immediate&&f();const x=Dr();if(s.watch){const y=tt(s.watch,()=>c.refresh());x&&vr(y)}const C=o.hook("app:data:refresh",async y=>{(!y||y.includes(n))&&await c.refresh()});x&&vr(C)}const g=Promise.resolve(o._asyncDataPromises[n]).then(()=>c);return Object.assign(g,c),g}function Mm(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=null),e._asyncData[t]&&(e._asyncData[t].data.value=void 0,e._asyncData[t].error.value=null,e._asyncData[t].pending.value=!1,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t].cancelled=!0,e._asyncDataPromises[t]=void 0)}function $m(e,t){const n={};for(const r of t)n[r]=e[r];return n}function Ao(e){return JSON.stringify(e,Nm)}function Nm(e,t){return t instanceof RegExp?`--REGEX ${t.toString()}`:t}const xc=e=>{let t=Ao(e);return t=typeof Buffer<"u"?Buffer.from(t).toString("base64"):btoa(t),t=t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),(t.match(/.{1,100}/g)||[]).join("/")},Oo=()=>({isEnabled:()=>{const r=jn().query;return Object.prototype.hasOwnProperty.call(r,"preview")&&!r.preview?!1:!!(r.preview||_r("previewToken").value||sessionStorage.getItem("previewToken"))},getPreviewToken:()=>_r("previewToken").value||sessionStorage.getItem("previewToken")||void 0,setPreviewToken:r=>{_r("previewToken").value=r,jn().query.preview=r||"",r?sessionStorage.setItem("previewToken",r):sessionStorage.removeItem("previewToken"),window.location.reload()}}),Hr=e=>Nl(e,rt().public.content.api.baseURL),Dm=()=>{throw console.warn("useContent is only accessible when you are using `documentDriven` mode."),console.warn("Learn more by visiting: https://content.nuxt.com/document-driven"),new Error("useContent is only accessible when you are using `documentDriven` mode.")},kc=()=>{const{experimental:e}=rt().public.content;return e.clientDB?!0:Oo().isEnabled()},aa=(e,t)=>t.split(".").reduce((n,r)=>n&&n[r],e),Lo=(e,t)=>Object.keys(e).filter(t).reduce((n,r)=>Object.assign(n,{[r]:e[r]}),{}),f0=e=>t=>e&&e.length?Lo(t,n=>!e.includes(n)):t,d0=e=>t=>Array.isArray(t)?t.map(n=>e(n)):e(t),Ac=e=>{const t=[],n=[];for(const r of e)["$","_"].includes(r)?t.push(r):n.push(r);return{prefixes:t,properties:n}},h0=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Ac(e);return Lo(t,s=>!r.includes(s)&&!n.includes(s[0]))},p0=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Ac(e);return Lo(t,s=>r.includes(s)||n.includes(s[0]))},g0=(e,t)=>{const n=new Intl.Collator(t.$locale,{numeric:t.$numeric,caseFirst:t.$caseFirst,sensitivity:t.$sensitivity}),r=Object.keys(t).filter(s=>!s.startsWith("$"));for(const s of r)e=e.sort((o,i)=>{const a=[aa(o,s),aa(i,s)].map(l=>{if(l!==null)return l instanceof Date?l.toISOString():l});return t[s]===-1&&a.reverse(),n.compare(a[0],a[1])});return e},m0=(e,t="Expected an array")=>{if(!Array.isArray(e))throw new TypeError(t)},ot=e=>Array.isArray(e)?e:[void 0,null].includes(e)?[]:[e],jm=["sort","where","only","without"];function Bm(e,t={}){const n={};for(const i of Object.keys(t.initialParams||{}))n[i]=jm.includes(i)?ot(t.initialParams[i]):t.initialParams[i];const r=(i,a=l=>l)=>(...l)=>(n[i]=a(...l),o),s=i=>{var a;return t.legacy?i!=null&&i.surround?i.surround:i&&(i!=null&&i.dirConfig&&(i.result={_path:(a=i.dirConfig)==null?void 0:a._path,...i.result,_dir:i.dirConfig}),i!=null&&i._path||Array.isArray(i)||!Object.prototype.hasOwnProperty.call(i,"result")?i:i==null?void 0:i.result):i},o={params:()=>({...n,...n.where?{where:[...ot(n.where)]}:{},...n.sort?{sort:[...ot(n.sort)]}:{}}),only:r("only",ot),without:r("without",ot),where:r("where",i=>[...ot(n.where),...ot(i)]),sort:r("sort",i=>[...ot(n.sort),...ot(i)]),limit:r("limit",i=>parseInt(String(i),10)),skip:r("skip",i=>parseInt(String(i),10)),find:()=>e(o).then(s),findOne:()=>e(r("first")(!0)).then(s),count:()=>e(r("count")(!0)).then(s),locale:i=>o.where({_locale:i}),withSurround:r("surround",(i,a)=>({query:i,...a})),withDirConfig:()=>r("dirConfig")(!0)};return t.legacy&&(o.findSurround=(i,a)=>o.withSurround(i,a).find().then(s)),o}const Fm=()=>async e=>{const{content:t}=rt().public,n=e.params(),r=t.experimental.stripQueryParameters?Hr(`/query/${`${Dn(n)}.${t.integrity}`}/${xc(n)}.json`):Hr(`/query/${Dn(n)}.${t.integrity}.json`);if(kc())return(await z(()=>import("./V5CGSosh.js"),__vite__mapDeps([39,4]),import.meta.url).then(i=>i.useContentDatabase())).fetch(e);const s=await $fetch(r,{method:"GET",responseType:"json",params:t.experimental.stripQueryParameters?void 0:{_params:Ao(n),previewToken:Oo().getPreviewToken()}});if(typeof s=="string"&&s.startsWith(""))throw new Error("Not found");return s};function Um(e,...t){const{content:n}=rt().public,r=Bm(Fm(),{initialParams:typeof e!="string"?e:{},legacy:!0});let s;typeof e=="string"&&(s=Ms(Qn(e,...t)));const o=r.params;return r.params=()=>{var a,l,u;const i=o();return s&&(i.where=i.where||[],i.first&&(i.where||[]).length===0?i.where.push({_path:Jn(s)}):i.where.push({_path:new RegExp(`^${s.replace(/[-[\]{}()*+.,^$\s/]/g,"\\$&")}`)})),(a=i.sort)!=null&&a.length||(i.sort=[{_file:1,$numeric:!0}]),n.locales.length&&((u=(l=i.where)==null?void 0:l.find(f=>f._locale))!=null&&u._locale||(i.where=i.where||[],i.where.push({_locale:n.defaultLocale}))),i},r}const Vm=async e=>{const{content:t}=rt().public;typeof(e==null?void 0:e.params)!="function"&&(e=Um(e));const n=e.params(),r=t.experimental.stripQueryParameters?Hr(`/navigation/${`${Dn(n)}.${t.integrity}`}/${xc(n)}.json`):Hr(`/navigation/${Dn(n)}.${t.integrity}.json`);if(kc())return(await z(()=>import("./V5CGSosh.js"),__vite__mapDeps([39,4]),import.meta.url).then(i=>i.generateNavigation))(n);const s=await $fetch(r,{method:"GET",responseType:"json",params:t.experimental.stripQueryParameters?void 0:{_params:Ao(n),previewToken:Oo().getPreviewToken()}});if(typeof s=="string"&&s.startsWith(""))throw new Error("Not found");return s},Km=lt({name:"ContentNavigation",props:{query:{type:Object,required:!1,default:void 0}},async setup(e){const{query:t}=wu(e),n=Te(()=>{var s;return typeof((s=t.value)==null?void 0:s.params)=="function"?t.value.params():t.value});if(!n.value&&Cc("dd-navigation").value){const{navigation:s}=Dm();return{navigation:s}}const{data:r}=await Hm(`content-navigation-${Dn(n.value)}`,()=>Vm(n.value));return{navigation:r}},render(e){const t=rf(),{navigation:n}=e,r=i=>Ae(Sc,{to:i._path},()=>i.title),s=(i,a)=>Ae("ul",a?{"data-level":a}:null,i.map(l=>l.children?Ae("li",null,[r(l),s(l.children,a+1)]):Ae("li",null,r(l)))),o=i=>s(i,0);return t!=null&&t.default?t.default({navigation:n,...this.$attrs}):o(n)}}),Oc=Km,zm=Object.freeze(Object.defineProperty({__proto__:null,default:Oc},Symbol.toStringTag,{value:"Module"})),Wm={class:"px-8 py-4 flex justify-between items-center sticky top-0 z-50 bg-[#1b1d39] lg:bg-opacity-80"},qm=Pl('Open main menu
',2),Gm=[qm],Jm={class:"flex space-x-0 lg:space-x-8 justify-end items-center lg:items-baseline flex-col lg:flex-row"},Qm=lt({__name:"globalHeader",setup(e){const t=be(!1);function n(){t.value=!t.value}return(r,s)=>{const o=xm,i=Sc,a=Oc;return Ie(),Rn("header",Wm,[ae(i,{to:"/",class:"home-button",title:"Homepage","aria-label":"Homepage",onClick:s[0]||(s[0]=l=>t.value=!1)},{default:wn(()=>[ae(o)]),_:1}),Tn("button",{class:en(["nav-toggle z-[60] absolute top-8 right-8 w-8 h-8 lg:hidden transform transition duration-500 ease-in-out",ue(t)?"open":""]),onClick:s[1]||(s[1]=l=>n())},Gm,2),Tn("nav",{class:en([{"hidden lg:block":!ue(t)},"absolute top-[93px] left-0 w-full z-50 lg:static bg-[#1b1d39] lg:bg-none"])},[ae(a,null,{default:wn(({navigation:l})=>[Tn("ul",Jm,[(Ie(!0),Rn(ke,null,tf(l,u=>(Ie(),Rn("li",{key:u._path,class:"font-bold uppercase mb-4 lg:mb-0",onClick:s[2]||(s[2]=c=>t.value=!1)},[ae(i,{to:u._path},{default:wn(()=>[_o(Wc(u.title),1)]),_:2},1032,["to"])]))),128))])]),_:1})],2)])}}}),Xm=Rc(Qm,[["__scopeId","data-v-9b1c4d91"]]),Zm=lt({props:{vnode:{type:Object,required:!0},route:{type:Object,required:!0},vnodeRef:Object,renderKey:String,trackRootNodes:Boolean},setup(e){const t=e.renderKey,n=e.route,r={};for(const s in e.route)Object.defineProperty(r,s,{get:()=>t===e.renderKey?e.route[s]:n[s]});return Yt(Wr,Kn(r)),()=>Ae(e.vnode,{ref:e.vnodeRef})}}),Ym=lt({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,expose:n}){const r=de(),s=be(),o=De(Wr,null);let i;n({pageRef:s});const a=De(Uh,null);let l;const u=r.deferHydration();if(r.isHydrating){const c=r.hooks.hookOnce("app:error",u);Je().beforeEach(c)}return e.pageKey&&tt(()=>e.pageKey,(c,f)=>{c!==f&&r.callHook("page:loading:start")}),()=>Ae(Pc,{name:e.name,route:e.route,...t},{default:c=>{const f=t0(o,c.route,c.Component),d=o&&o.matched.length===c.route.matched.length;if(!c.Component){if(l&&!d)return l;u();return}if(l&&a&&!a.isCurrent(c.route))return l;if(f&&o&&(!a||a!=null&&a.isCurrent(o)))return d?l:null;const g=Js(c,e.pageKey);!r.isHydrating&&!n0(o,c.route,c.Component)&&i===g&&r.callHook("page:loading:end"),i=g;const _=!!(e.transition??c.route.meta.pageTransition??zs),w=_&&e0([e.transition,c.route.meta.pageTransition,zs,{onAfterLeave:()=>{r.callHook("page:transition:finish",c.Component)}}].filter(Boolean)),x=e.keepalive??c.route.meta.keepalive??Bp;return l=ig(wo,_&&w,ng(x,Ae(za,{suspensible:!0,onPending:()=>r.callHook("page:start",c.Component),onResolve:()=>{fn(()=>r.callHook("page:finish",c.Component).then(()=>r.callHook("page:loading:end")).finally(u))}},{default:()=>{const C=Ae(Zm,{key:g||void 0,vnode:c.Component,route:c.route,renderKey:g||void 0,trackRootNodes:_,vnodeRef:s});return x&&(C.type.name=c.Component.type.name||c.Component.type.__name||"RouteProvider"),C}}))).default(),l}})}});function e0(e){const t=e.map(n=>({...n,onAfterLeave:n.onAfterLeave?xo(n.onAfterLeave):void 0}));return Zl(...t)}function t0(e,t,n){if(!e)return!1;const r=t.matched.findIndex(s=>{var o;return((o=s.components)==null?void 0:o.default)===(n==null?void 0:n.type)});return!r||r===-1?!1:t.matched.slice(0,r).some((s,o)=>{var i,a,l;return((i=s.components)==null?void 0:i.default)!==((l=(a=e.matched[o])==null?void 0:a.components)==null?void 0:l.default)})||n&&Js({route:t,Component:n})!==Js({route:e,Component:n})}function n0(e,t,n){return e?t.matched.findIndex(s=>{var o;return((o=s.components)==null?void 0:o.default)===(n==null?void 0:n.type)}){const r=Xm,s=Ym;return Ie(),Rn("main",r0,[ae(r),ae(s)])}}}),o0={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error;n.stack&&n.stack.split(` `).splice(1).map(f=>({text:f.replace("webpack:/","").replace(".vue",".js").trim(),internal:f.includes("node_modules")&&!f.includes(".cache")||f.includes("internal")||f.includes("new Promise")})).map(f=>`${f.text}`).join(` -`);const r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),a=void 0,c=s?Q(()=>z(()=>import("./B_fY9PLq.js"),__vite__mapDeps([40,41]),import.meta.url).then(f=>f.default||f)):Q(()=>z(()=>import("./CBNC_GX-.js"),__vite__mapDeps([42,43]),import.meta.url).then(f=>f.default||f));return(f,d)=>(Ie(),Pt(ue(c),Vc(El({statusCode:ue(r),statusMessage:ue(o),description:ue(i),stack:ue(a)})),null,16))}},la={__name:"nuxt-root",setup(e){const t=()=>null,n=de(),r=n.deferHydration();if(n.isHydrating){const a=n.hooks.hookOnce("app:error",r);Je().beforeEach(a)}const s=!1;Yt(Wr,jn()),n.hooks.callHookWith(a=>a.map(l=>l()),"vue:setup");const o=qr();nl((a,l,u)=>{if(n.hooks.callHook("vue:error",a,l,u).catch(c=>console.error("[nuxt] Error in `vue:error` hook",c)),Wh(a)&&(a.fatal||a.unhandled))return n.runWithContext(()=>Wt(a)),!1});const i=!1;return(a,l)=>(Ie(),Pt(za,{onResolve:ue(r)},{default:wn(()=>[ue(o)?(Ie(),Pt(ue(o0),{key:0,error:ue(o)},null,8,["error"])):ue(i)?(Ie(),Pt(ue(t),{key:1,context:ue(i)},null,8,["context"])):ue(s)?(Ie(),Pt(Hu(ue(s)),{key:2})):(Ie(),Pt(ue(s0),{key:3}))]),_:1},8,["onResolve"]))}};let ca;{let e;ca=async function(){var i,a;if(e)return e;const r=!!((i=window.__NUXT__)!=null&&i.serverRendered||((a=document.getElementById("__NUXT_DATA__"))==null?void 0:a.dataset.ssr)==="true")?cd(la):ld(la),s=dh({vueApp:r});async function o(l){await s.callHook("app:error",l),s.payload.error=s.payload.error||Zn(l)}r.config.errorHandler=o;try{await ph(s,Em)}catch(l){o(l)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(Vp),await s.hooks.callHook("app:mounted",r),await fn()}catch(l){o(l)}return r.config.errorHandler===o&&(r.config.errorHandler=void 0),r},e=ca().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{Oo as $,ld as A,Dm as B,re as C,Mp as D,Sc as E,ke as F,Pt as G,Te as H,ue as I,Hu as J,tf as K,l0 as L,tt as M,fn as N,rf as O,kr as P,Ae as Q,wu as R,Hm as S,wo as T,Dn as U,dn as V,Iu as W,rn as X,Se as Y,$n as Z,z as _,go as a,Nr as a0,ut as a1,Ms as a2,Qn as a3,Xn as a4,Zl as a5,Ed as a6,u0 as a7,aa as a8,m0 as a9,ot as aa,f0 as ab,g0 as ac,d0 as ad,h0 as ae,p0 as af,Bm as ag,Nl as ah,Ie as b,Rn as c,lt as d,Tn as e,c0 as f,ae as g,_r as h,a0 as i,_o as j,de as k,Rc as l,Xl as m,en as n,Kr as o,i0 as p,Cc as q,be as r,Um as s,Wc as t,Je as u,rt as v,wn as w,jn as x,gh as y,ac as z}; +`);const r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),a=void 0,c=s?Q(()=>z(()=>import("./Duj2v7Mb.js"),__vite__mapDeps([40,41]),import.meta.url).then(f=>f.default||f)):Q(()=>z(()=>import("./C4nES0Wi.js"),__vite__mapDeps([42,43]),import.meta.url).then(f=>f.default||f));return(f,d)=>(Ie(),Pt(ue(c),Vc(El({statusCode:ue(r),statusMessage:ue(o),description:ue(i),stack:ue(a)})),null,16))}},la={__name:"nuxt-root",setup(e){const t=()=>null,n=de(),r=n.deferHydration();if(n.isHydrating){const a=n.hooks.hookOnce("app:error",r);Je().beforeEach(a)}const s=!1;Yt(Wr,jn()),n.hooks.callHookWith(a=>a.map(l=>l()),"vue:setup");const o=qr();nl((a,l,u)=>{if(n.hooks.callHook("vue:error",a,l,u).catch(c=>console.error("[nuxt] Error in `vue:error` hook",c)),Wh(a)&&(a.fatal||a.unhandled))return n.runWithContext(()=>Wt(a)),!1});const i=!1;return(a,l)=>(Ie(),Pt(za,{onResolve:ue(r)},{default:wn(()=>[ue(o)?(Ie(),Pt(ue(o0),{key:0,error:ue(o)},null,8,["error"])):ue(i)?(Ie(),Pt(ue(t),{key:1,context:ue(i)},null,8,["context"])):ue(s)?(Ie(),Pt(Hu(ue(s)),{key:2})):(Ie(),Pt(ue(s0),{key:3}))]),_:1},8,["onResolve"]))}};let ca;{let e;ca=async function(){var i,a;if(e)return e;const r=!!((i=window.__NUXT__)!=null&&i.serverRendered||((a=document.getElementById("__NUXT_DATA__"))==null?void 0:a.dataset.ssr)==="true")?cd(la):ld(la),s=dh({vueApp:r});async function o(l){await s.callHook("app:error",l),s.payload.error=s.payload.error||Zn(l)}r.config.errorHandler=o;try{await ph(s,Em)}catch(l){o(l)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(Vp),await s.hooks.callHook("app:mounted",r),await fn()}catch(l){o(l)}return r.config.errorHandler===o&&(r.config.errorHandler=void 0),r},e=ca().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{Oo as $,ld as A,Dm as B,re as C,Mp as D,Sc as E,ke as F,Pt as G,Te as H,ue as I,Hu as J,tf as K,l0 as L,tt as M,fn as N,rf as O,kr as P,Ae as Q,wu as R,Hm as S,wo as T,Dn as U,dn as V,Iu as W,rn as X,Se as Y,$n as Z,z as _,go as a,Nr as a0,ut as a1,Ms as a2,Qn as a3,Xn as a4,Zl as a5,Ed as a6,u0 as a7,aa as a8,m0 as a9,ot as aa,f0 as ab,g0 as ac,d0 as ad,h0 as ae,p0 as af,Bm as ag,Nl as ah,Ie as b,Rn as c,lt as d,Tn as e,c0 as f,ae as g,_r as h,a0 as i,_o as j,de as k,Rc as l,Xl as m,en as n,Kr as o,i0 as p,Cc as q,be as r,Um as s,Wc as t,Je as u,rt as v,wn as w,jn as x,gh as y,ac as z}; diff --git a/_nuxt/C3KD9uNb.js b/_nuxt/ahnsjjkC.js similarity index 72% rename from _nuxt/C3KD9uNb.js rename to _nuxt/ahnsjjkC.js index 40ef6267..e2360862 100644 --- a/_nuxt/C3KD9uNb.js +++ b/_nuxt/ahnsjjkC.js @@ -1 +1 @@ -import{d as o,I as s,b as n,c as r,j as e,f as a,e as t}from"./XRF4b_vJ.js";const c={key:0},i=t("code",null,"script",-1),d=t("code",null,"ProseScript",-1),f=o({__name:"ProseScript",props:{src:{type:String,default:""}},setup(l){return(_,m)=>s(!1)?(n(),r("div",c,[e(" Rendering the "),i,e(" element is dangerous and is disabled by default. Consider implementing your own "),d,e(" element to have control over script rendering. ")])):a("",!0)}});export{f as default}; +import{d as o,I as s,b as n,c as r,j as e,f as a,e as t}from"./ZAsafoXZ.js";const c={key:0},i=t("code",null,"script",-1),d=t("code",null,"ProseScript",-1),f=o({__name:"ProseScript",props:{src:{type:String,default:""}},setup(l){return(_,m)=>s(!1)?(n(),r("div",c,[e(" Rendering the "),i,e(" element is dangerous and is disabled by default. Consider implementing your own "),d,e(" element to have control over script rendering. ")])):a("",!0)}});export{f as default}; diff --git a/_nuxt/builds/latest.json b/_nuxt/builds/latest.json index efd85658..777aebaa 100644 --- a/_nuxt/builds/latest.json +++ b/_nuxt/builds/latest.json @@ -1 +1 @@ -{"id":"bccae337-ddb9-44f0-924e-bd4ffaa83b9d","timestamp":1718484360483} \ No newline at end of file +{"id":"f8158024-6d61-4a4d-a16c-96197fdeaa6b","timestamp":1718484801915} \ No newline at end of file diff --git a/_nuxt/builds/meta/bccae337-ddb9-44f0-924e-bd4ffaa83b9d.json b/_nuxt/builds/meta/bccae337-ddb9-44f0-924e-bd4ffaa83b9d.json deleted file mode 100644 index 572a127d..00000000 --- a/_nuxt/builds/meta/bccae337-ddb9-44f0-924e-bd4ffaa83b9d.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"bccae337-ddb9-44f0-924e-bd4ffaa83b9d","timestamp":1718484360483,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":["/writing","/writing/the-content-graph-is-the-future","/writing/the-real-deal-about-content-management-buzzword","/writing/what-type-of-content-organization-do-you-need","/writing/new-job-alert","/writing/the-future-of-headless-cms-content-federation-with-graphql","/writing/this-is-headless-20","/writing/the-lost-promise-of-headless","/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","/alive-and-kicking","/writing/why-i-didnt-run-the-2016-marathon","/writing/my-fitness-story","/writing/the-2015-paris-maratho","/writing/make-the-web-greener-luxury-edition","/writing/digital-experience-platforms-the-old-versus-the-new","/writing/uniform-is-nuxt-3-read","/writing/uniform-dxcp-the-what-why-and-how","/writing/how-to-sniff-out-the-glue-monster","/writing/the-future-of-managing-projects-at-agencie","/livestreams","/writing/the-move-from-monolithic-to-composable-architectures","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform","/writing/mach-versus-monolithic-suites","/videos","/writing/the-mach-monolith","/writing/the-future-of-jamstack-is-composable","/writing/how-to-dynamically-stream-video","/speaking","/","/about","/videos/alive-and-kicking","/presskit","/videos/misc-streams","/videos/live-hygraph","/videos/mp","/videos/headless-creator","/videos/hygraph","/videos/live-uniform","/videos/uniform","/videos/tim"]} \ No newline at end of file diff --git a/_nuxt/builds/meta/f8158024-6d61-4a4d-a16c-96197fdeaa6b.json b/_nuxt/builds/meta/f8158024-6d61-4a4d-a16c-96197fdeaa6b.json new file mode 100644 index 00000000..27f7c679 --- /dev/null +++ b/_nuxt/builds/meta/f8158024-6d61-4a4d-a16c-96197fdeaa6b.json @@ -0,0 +1 @@ +{"id":"f8158024-6d61-4a4d-a16c-96197fdeaa6b","timestamp":1718484801915,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":["/writing","/alive-and-kicking","/livestreams","/videos/alive-and-kicking","/videos/misc-streams","/videos/live-hygraph","/videos","/about","/speaking","/presskit","/videos/live-uniform","/videos/mp","/videos/headless-creator","/","/videos/hygraph","/writing/the-content-graph-is-the-future","/writing/what-type-of-content-organization-do-you-need","/writing/the-real-deal-about-content-management-buzzword","/videos/uniform","/videos/tim"]} \ No newline at end of file diff --git a/_nuxt/CrqaM0nI.js b/_nuxt/cxDVXcZA.js similarity index 64% rename from _nuxt/CrqaM0nI.js rename to _nuxt/cxDVXcZA.js index f473a919..c73059f7 100644 --- a/_nuxt/CrqaM0nI.js +++ b/_nuxt/cxDVXcZA.js @@ -1 +1 @@ -import{l as r,b as t,c as o,L as s}from"./XRF4b_vJ.js";const c={};function n(e,a){return t(),o("tr",null,[s(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; +import{l as r,b as t,c as o,L as s}from"./ZAsafoXZ.js";const c={};function n(e,a){return t(),o("tr",null,[s(e.$slots,"default")])}const f=r(c,[["render",n]]);export{f as default}; diff --git a/_nuxt/dxcZF-PA.js b/_nuxt/dxcZF-PA.js new file mode 100644 index 00000000..fc95d4d0 --- /dev/null +++ b/_nuxt/dxcZF-PA.js @@ -0,0 +1 @@ +import{_ as m}from"./B68gSBWJ.js";import"./ZAsafoXZ.js";export{m as default}; diff --git a/_nuxt/mEzFdTf5.js b/_nuxt/mEzFdTf5.js deleted file mode 100644 index 8abded2a..00000000 --- a/_nuxt/mEzFdTf5.js +++ /dev/null @@ -1 +0,0 @@ -import t from"./C7ePx9hc.js";import{l as r,G as c,b as n}from"./XRF4b_vJ.js";import"./CM4QiD5h.js";import"./CRDyED6e.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";import"./DVDnHXyh.js";const e={};function m(_,i){const o=t;return n(),c(o)}const u=r(e,[["render",m]]);export{u as default}; diff --git a/_nuxt/K8H0nq_a.js b/_nuxt/nwxGMFUf.js similarity index 79% rename from _nuxt/K8H0nq_a.js rename to _nuxt/nwxGMFUf.js index 987a7774..ce799260 100644 --- a/_nuxt/K8H0nq_a.js +++ b/_nuxt/nwxGMFUf.js @@ -1 +1 @@ -import{l,b as c,c as t,e as s,L as o}from"./XRF4b_vJ.js";const d={},r={class:"w-full mb-8"},a={class:"grid grid-cols-1 md:grid-cols-2 gap-12"};function n(e,i){return c(),t("div",r,[s("div",a,[s("div",null,[o(e.$slots,"sidea")]),s("div",null,[o(e.$slots,"sideb")])])])}const f=l(d,[["render",n]]);export{f as default}; +import{l,b as c,c as t,e as s,L as o}from"./ZAsafoXZ.js";const d={},r={class:"w-full mb-8"},a={class:"grid grid-cols-1 md:grid-cols-2 gap-12"};function n(e,i){return c(),t("div",r,[s("div",a,[s("div",null,[o(e.$slots,"sidea")]),s("div",null,[o(e.$slots,"sideb")])])])}const f=l(d,[["render",n]]);export{f as default}; diff --git a/_nuxt/rnAScy2C.js b/_nuxt/rnAScy2C.js new file mode 100644 index 00000000..c1f13b29 --- /dev/null +++ b/_nuxt/rnAScy2C.js @@ -0,0 +1 @@ +import t from"./DNoJqnvj.js";import{l as r,G as c,b as n}from"./ZAsafoXZ.js";import"./DfsoDfS3.js";import"./IFCu-2Bx.js";import"./C-v3KzvZ.js";import"./Dnd51l0P.js";import"./Bg8nkQWz.js";const e={};function m(_,i){const o=t;return n(),c(o)}const u=r(e,[["render",m]]);export{u as default}; diff --git a/_nuxt/zx29ONos.js b/_nuxt/zx29ONos.js deleted file mode 100644 index 78f566cc..00000000 --- a/_nuxt/zx29ONos.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as m}from"./CnFyItyq.js";import"./XRF4b_vJ.js";export{m as default}; diff --git a/_payload.json b/_payload.json index 9a4d075c..da522db8 100644 --- a/_payload.json +++ b/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":2490},["Reactive",2],{"content-query-1DxZ1vYQk5":3,"content-navigation-8C37fagqQL":236,"content-query-S3bPa2HwJg":1352,"content-query-ivbgOiTZnp":1389,"content-query-2rPvHAixP6":2404,"content-query-V5ks1ju3kz":2456},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":6,"image":9,"head":13,"body":17,"_type":231,"_id":232,"_source":233,"_file":234,"_extension":235},"/","",false,"Tim Benniks","This is the personal website of Tim Benniks. This is where you can find my public speaking schedule and my videos.",{"src":10,"alt":7,"width":11,"height":12},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png",1280,800,{"meta":14},[15],{"name":16,"content":7},"keywords",{"type":18,"children":19,"toc":228},"root",[20,60,136,151,181,216],{"type":21,"tag":22,"props":23,"children":24},"element","hero",{},[25,35,43],{"type":21,"tag":26,"props":27,"children":28},"template",{"v-slot:title":5},[29],{"type":21,"tag":30,"props":31,"children":32},"p",{},[33],{"type":34,"value":7},"text",{"type":21,"tag":26,"props":36,"children":37},{"v-slot:description":5},[38],{"type":21,"tag":30,"props":39,"children":40},{},[41],{"type":34,"value":42},"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR",{"type":21,"tag":26,"props":44,"children":45},{"v-slot:image":5},[46],{"type":21,"tag":30,"props":47,"children":48},{},[49],{"type":21,"tag":50,"props":51,"children":59},"img",{"alt":7,"format":52,"height":53,"loading":54,"quality":55,"sizes":56,"src":57,"width":58},"webp",618,"eager","100","sm:100vw","/tim.png",1440,[],{"type":21,"tag":61,"props":62,"children":63},"richtext",{},[64],{"type":21,"tag":26,"props":65,"children":66},{"v-slot:body":5},[67],{"type":21,"tag":30,"props":68,"children":69},{},[70,72,81,83,90,92,99,101,108,110,117,118,125,127,134],{"type":34,"value":71},"Tim Benniks is Developer Relations Lead for outreach and awareness at ",{"type":21,"tag":73,"props":74,"children":78},"a",{"href":75,"rel":76,"title":75},"https://hygraph.com",[77],"nofollow",[79],{"type":34,"value":80},"Hygraph",{"type":34,"value":82},". ",{"type":21,"tag":73,"props":84,"children":87},{"href":85,"rel":86,"title":85},"https://machalliance.com",[77],[88],{"type":34,"value":89},"MACH Alliance",{"type":34,"value":91}," Tech Council member, ",{"type":21,"tag":73,"props":93,"children":96},{"href":94,"rel":95,"title":94},"https://nuxt.com",[77],[97],{"type":34,"value":98},"NuxtJS",{"type":34,"value":100}," ambassador, ",{"type":21,"tag":73,"props":102,"children":105},{"href":103,"rel":104,"title":103},"https://cloudinary.com",[77],[106],{"type":34,"value":107},"Cloudinary",{"type":34,"value":109}," Ambassador, ",{"type":21,"tag":73,"props":111,"children":114},{"href":112,"rel":113,"title":112},"https://supabase.com",[77],[115],{"type":34,"value":116},"Supabase",{"type":34,"value":109},{"type":21,"tag":73,"props":119,"children":122},{"href":120,"rel":121,"title":120},"https://algolia.com",[77],[123],{"type":34,"value":124},"Algolia",{"type":34,"value":126}," Ambassador, and ",{"type":21,"tag":73,"props":128,"children":131},{"href":129,"rel":130,"title":129},"https://youtube.com/timbenniks",[77],[132],{"type":34,"value":133},"content creator",{"type":34,"value":135},".",{"type":21,"tag":137,"props":138,"children":142},"videos",{":limit":139,":small":140,"folder":141},"3","false","live-hygraph",[143],{"type":21,"tag":26,"props":144,"children":145},{"v-slot:title":5},[146],{"type":21,"tag":30,"props":147,"children":148},{},[149],{"type":34,"value":150},"Live streams",{"type":21,"tag":22,"props":152,"children":154},{":smallertitle":153},"true",[155,163,171],{"type":21,"tag":26,"props":156,"children":157},{"v-slot:title":5},[158],{"type":21,"tag":30,"props":159,"children":160},{},[161],{"type":34,"value":162},"Alive and Kicking",{"type":21,"tag":26,"props":164,"children":165},{"v-slot:description":5},[166],{"type":21,"tag":30,"props":167,"children":168},{},[169],{"type":34,"value":170},"Vuejs Amsterdam 2024",{"type":21,"tag":26,"props":172,"children":173},{"v-slot:image":5},[174],{"type":21,"tag":30,"props":175,"children":176},{},[177],{"type":21,"tag":50,"props":178,"children":180},{"alt":7,"format":52,"height":53,"loading":54,"quality":55,"sizes":56,"src":179,"width":58},"/tim-vueams.jpg",[],{"type":21,"tag":182,"props":183,"children":184},"two-column",{},[185,200],{"type":21,"tag":26,"props":186,"children":187},{"v-slot:sidea":5},[188],{"type":21,"tag":137,"props":189,"children":191},{":limit":139,":small":153,"folder":190},"tim",[192],{"type":21,"tag":26,"props":193,"children":194},{"v-slot:title":5},[195],{"type":21,"tag":30,"props":196,"children":197},{},[198],{"type":34,"value":199},"Videos",{"type":21,"tag":26,"props":201,"children":202},{"v-slot:sideb":5},[203],{"type":21,"tag":204,"props":205,"children":207},"talks",{":limit":206,":small":153},"4",[208],{"type":21,"tag":26,"props":209,"children":210},{"v-slot:title":5},[211],{"type":21,"tag":30,"props":212,"children":213},{},[214],{"type":34,"value":215},"Talks",{"type":21,"tag":217,"props":218,"children":219},"articles",{":limit":139,":small":140},[220],{"type":21,"tag":26,"props":221,"children":222},{"v-slot:title":5},[223],{"type":21,"tag":30,"props":224,"children":225},{},[226],{"type":34,"value":227},"Articles",{"title":5,"searchDepth":229,"depth":229,"links":230},2,[],"markdown","content:1.index.md","content","1.index.md","md",[237,240,1030,1107,1343,1346,1349],{"title":238,"_path":239},"About","/about",{"title":137,"_path":241,"children":242},"/videos",[243,262,281,326,327,379,482,505,527,855],{"title":244,"_path":245,"children":246},"Alive And Kicking","/videos/alive-and-kicking",[247,250,253,256,259],{"title":248,"_path":249},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":251,"_path":252},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":254,"_path":255},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":257,"_path":258},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":260,"_path":261},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":263,"_path":264,"children":265},"Headless Creator","/videos/headless-creator",[266,269,272,275,278],{"title":267,"_path":268},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":270,"_path":271},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":273,"_path":274},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":276,"_path":277},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":279,"_path":280},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":80,"_path":282,"children":283},"/videos/hygraph",[284,287,290,293,296,299,302,305,308,311,314,317,320,323],{"title":285,"_path":286},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":288,"_path":289},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":291,"_path":292},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":294,"_path":295},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":297,"_path":298},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":300,"_path":301},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":303,"_path":304},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":306,"_path":307},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":309,"_path":310},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":312,"_path":313},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":315,"_path":316},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":318,"_path":319},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":321,"_path":322},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":324,"_path":325},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":137,"_path":241},{"title":328,"_path":329,"children":330},"Live Hygraph","/videos/live-hygraph",[331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376],{"title":332,"_path":333},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":335,"_path":336},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":338,"_path":339},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":341,"_path":342},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":344,"_path":345},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":347,"_path":348},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":350,"_path":351},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":353,"_path":354},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":356,"_path":357},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":359,"_path":360},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":362,"_path":363},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":365,"_path":366},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":368,"_path":369},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":371,"_path":372},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":374,"_path":375},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":377,"_path":378},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":380,"_path":381,"children":382},"Live Uniform","/videos/live-uniform",[383,386,389,392,395,398,401,404,407,410,413,416,419,422,425,428,431,434,437,440,443,446,449,452,455,458,461,464,467,470,473,476,479],{"title":384,"_path":385},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":387,"_path":388},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":390,"_path":391},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":393,"_path":394},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":396,"_path":397},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":399,"_path":400},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":402,"_path":403},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":405,"_path":406},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":408,"_path":409},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":411,"_path":412},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":414,"_path":415},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":417,"_path":418},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":420,"_path":421},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":423,"_path":424},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":426,"_path":427},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":429,"_path":430},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":432,"_path":433},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":435,"_path":436},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":438,"_path":439},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":441,"_path":442},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":444,"_path":445},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":447,"_path":448},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":450,"_path":451},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":453,"_path":454},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":456,"_path":457},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":459,"_path":460},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":462,"_path":463},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":465,"_path":466},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":468,"_path":469},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":471,"_path":472},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":474,"_path":475},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":477,"_path":478},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":480,"_path":481},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":483,"_path":484,"children":485},"Misc Streams","/videos/misc-streams",[486,489,492,495,497,499,502],{"title":487,"_path":488},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":490,"_path":491},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":493,"_path":494},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":477,"_path":496},"/videos/misc-streams/003-jvgiaotcerq",{"title":468,"_path":498},"/videos/misc-streams/004-ekut1koa2n8",{"title":500,"_path":501},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":503,"_path":504},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":506,"_path":507,"children":508},"Mp","/videos/mp",[509,512,515,518,521,524],{"title":510,"_path":511},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":513,"_path":514},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":516,"_path":517},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":519,"_path":520},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":522,"_path":523},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":525,"_path":526},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":528,"_path":529,"children":530},"Tim","/videos/tim",[531,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,583,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,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852],{"title":251,"_path":532},"/videos/tim/000-mvq-_s20ndk",{"title":534,"_path":535},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":537,"_path":538},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":540,"_path":541},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":543,"_path":544},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":546,"_path":547},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":549,"_path":550},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":552,"_path":553},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":555,"_path":556},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":558,"_path":559},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":561,"_path":562},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":564,"_path":565},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":567,"_path":568},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":570,"_path":571},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":573,"_path":574},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":576,"_path":577},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":579,"_path":580},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":254,"_path":582},"/videos/tim/017-m0mrligs6i0",{"title":248,"_path":584},"/videos/tim/018-hhpitreyobi",{"title":586,"_path":587},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":589,"_path":590},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":592,"_path":593},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":595,"_path":596},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":598,"_path":599},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":601,"_path":602},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":604,"_path":605},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":607,"_path":608},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":610,"_path":611},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":613,"_path":614},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":616,"_path":617},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":619,"_path":620},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":622,"_path":623},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":625,"_path":626},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":628,"_path":629},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":631,"_path":632},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":634,"_path":635},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":637,"_path":638},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":640,"_path":641},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":643,"_path":644},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":646,"_path":647},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":649,"_path":650},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":652,"_path":653},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":655,"_path":656},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":658,"_path":659},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":661,"_path":662},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":664,"_path":665},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":667,"_path":668},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":670,"_path":671},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":673,"_path":674},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":676,"_path":677},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":679,"_path":680},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":682,"_path":683},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":685,"_path":686},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":688,"_path":689},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":691,"_path":692},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":694,"_path":695},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":697,"_path":698},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":700,"_path":701},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":703,"_path":704},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":706,"_path":707},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":709,"_path":710},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":712,"_path":713},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":715,"_path":716},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":718,"_path":719},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":721,"_path":722},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":724,"_path":725},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":727,"_path":728},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":730,"_path":731},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":733,"_path":734},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":736,"_path":737},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":739,"_path":740},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":742,"_path":743},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":745,"_path":746},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":748,"_path":749},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":751,"_path":752},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":754,"_path":755},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":757,"_path":758},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":760,"_path":761},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":763,"_path":764},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":766,"_path":767},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":769,"_path":770},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":772,"_path":773},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":775,"_path":776},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":778,"_path":779},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":781,"_path":782},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":784,"_path":785},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":787,"_path":788},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":790,"_path":791},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":793,"_path":794},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":796,"_path":797},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":799,"_path":800},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":802,"_path":803},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":805,"_path":806},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":808,"_path":809},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":811,"_path":812},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":814,"_path":815},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":817,"_path":818},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":820,"_path":821},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":823,"_path":824},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":826,"_path":827},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":829,"_path":830},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":832,"_path":833},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":835,"_path":836},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":838,"_path":839},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":841,"_path":842},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":844,"_path":845},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":847,"_path":848},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":850,"_path":851},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":853,"_path":854},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":856,"_path":857,"children":858},"Uniform","/videos/uniform",[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,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027],{"title":860,"_path":861},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":863,"_path":864},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":866,"_path":867},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":869,"_path":870},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":872,"_path":873},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":875,"_path":876},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":878,"_path":879},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":881,"_path":882},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":884,"_path":885},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":887,"_path":888},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":890,"_path":891},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":893,"_path":894},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":896,"_path":897},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":899,"_path":900},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":902,"_path":903},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":905,"_path":906},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":908,"_path":909},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":911,"_path":912},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":914,"_path":915},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":917,"_path":918},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":920,"_path":921},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":923,"_path":924},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":926,"_path":927},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":929,"_path":930},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":932,"_path":933},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":935,"_path":936},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":938,"_path":939},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":941,"_path":942},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":944,"_path":945},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":947,"_path":948},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":950,"_path":951},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":953,"_path":954},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":956,"_path":957},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":959,"_path":960},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":962,"_path":963},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":965,"_path":966},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":968,"_path":969},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":971,"_path":972},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":974,"_path":975},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":977,"_path":978},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":980,"_path":981},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":983,"_path":984},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":986,"_path":987},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":989,"_path":990},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":992,"_path":993},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":995,"_path":996},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":998,"_path":999},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1001,"_path":1002},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1004,"_path":1005},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1007,"_path":1008},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1010,"_path":1011},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1013,"_path":1014},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1016,"_path":1017},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1019,"_path":1020},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1022,"_path":1023},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1025,"_path":1026},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1028,"_path":1029},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1031,"_path":1032,"children":1033},"Writing","/writing",[1034,1037,1040,1043,1046,1049,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104],{"title":1035,"_path":1036},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1038,"_path":1039},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1041,"_path":1042},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1044,"_path":1045},"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":1047,"_path":1048},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1031,"_path":1032},{"title":1051,"_path":1052},"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":1054,"_path":1055},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1057,"_path":1058},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1060,"_path":1061},"My Fitness Story","/writing/my-fitness-story",{"title":1063,"_path":1064},"New job alert!","/writing/new-job-alert",{"title":1066,"_path":1067},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1069,"_path":1070},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1072,"_path":1073},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1075,"_path":1076},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1078,"_path":1079},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1081,"_path":1082},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1084,"_path":1085},"The MACH monolith","/writing/the-mach-monolith",{"title":1087,"_path":1088},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1090,"_path":1091},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1093,"_path":1094},"This is headless 2.0","/writing/this-is-headless-20",{"title":1096,"_path":1097},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1099,"_path":1100},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1102,"_path":1103},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1105,"_path":1106},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1108,"_path":1109,"children":1110},"Speaking","/speaking",[1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342],{"title":1112,"_path":1113},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1115,"_path":1116},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1118,"_path":1119},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1121,"_path":1122},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1124,"_path":1125},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1127,"_path":1128},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1130,"_path":1131},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1133,"_path":1134},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1136,"_path":1137},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1139,"_path":1140},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1142,"_path":1143},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1145,"_path":1146},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1148,"_path":1149},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1151,"_path":1152},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1154,"_path":1155},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1157,"_path":1158},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1160,"_path":1161},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1163,"_path":1164},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1166,"_path":1167},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1169,"_path":1170},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1172,"_path":1173},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1175,"_path":1176},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1178,"_path":1179},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1181,"_path":1182},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1184,"_path":1185},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1187,"_path":1188},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1190,"_path":1191},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1193,"_path":1194},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1196,"_path":1197},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1199,"_path":1200},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1202,"_path":1203},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1205,"_path":1206},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1208,"_path":1209},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1211,"_path":1212},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1214,"_path":1215},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1217,"_path":1218},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1220,"_path":1221},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1223,"_path":1224},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1226,"_path":1227},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1229,"_path":1230},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1232,"_path":1233},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1235,"_path":1236},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1238,"_path":1239},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1241,"_path":1242},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1244,"_path":1245},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1247,"_path":1248},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1250,"_path":1251},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1253,"_path":1254},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1256,"_path":1257},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1259,"_path":1260},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1262,"_path":1263},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1265,"_path":1266},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1268,"_path":1269},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1271,"_path":1272},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1274,"_path":1275},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1277,"_path":1278},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1280,"_path":1281},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1283,"_path":1284},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1286,"_path":1287},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1289,"_path":1290},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1292,"_path":1293},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1295,"_path":1296},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1298,"_path":1299},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1301,"_path":1302},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1304,"_path":1305},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1307,"_path":1308},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1310,"_path":1311},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1313,"_path":1314},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1316,"_path":1317},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1319,"_path":1320},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1322,"_path":1323},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1325,"_path":1326},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1328,"_path":1329},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1331,"_path":1332},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1334,"_path":1335},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1337,"_path":1338},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1340,"_path":1341},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1108,"_path":1109},{"title":1344,"_path":1345},"live streams","/livestreams",{"title":1347,"_path":1348},"press kit","/presskit",{"title":1350,"_path":1351},"alive and kicking","/alive-and-kicking",[1353,1365,1377],{"_path":333,"_dir":141,"_draft":6,"_partial":6,"_locale":5,"title":332,"description":1354,"date":1355,"position":1356,"image":1357,"videoId":1358,"body":1359,"_type":231,"_id":1363,"_source":233,"_file":1364,"_extension":235},"Svelte is hot right now and we have invited Scott Spence to join Tim Benniks and show us how to use it with Headless CMS!\r\n\r\nTune in on Wednesday, at 4 PM CEST. \r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:23Z","000","https://i.ytimg.com/vi/eyDsTeDp-v4/maxresdefault.jpg","eyDsTeDp-v4",{"type":18,"children":1360,"toc":1361},[],{"title":5,"searchDepth":229,"depth":229,"links":1362},[],"content:3.videos:live-hygraph:000-eyDsTeDp-v4.md","3.videos/live-hygraph/000-eyDsTeDp-v4.md",{"_path":336,"_dir":141,"_draft":6,"_partial":6,"_locale":5,"title":335,"description":1366,"date":1367,"position":1368,"image":1369,"videoId":1370,"body":1371,"_type":231,"_id":1375,"_source":233,"_file":1376,"_extension":235},"This Thursday we'll have Colby Fayock from Cloudinary join Tim Benniks for an exclusive livestream to talk about integrating Cloudinary with Hygraph as a headless CMS.\n\nMost people think media on the web is not at all a concern, an image is an image right?\nWell, nope! It's actually incredibly hard to serve images in the right context:\n- Is a user on mobile?\n- How fast is their internet?\n- Do we lazy load?\n- Do we need different image formats for different screen sizes?\n- We do we have art direction for the images?\n- Where do we store the default source and where do we serve the derived images with transformations from?\n- Do we use a CDN?\n- What if an image has to be offline after a certain date due to contracts?\n- What about image quality?\n\nNeed I go on? I can, I have about 10 more problems to throw at you and we haven't even discussed videos yet... \n\nWant to know more? Join ColbyFayock and Tim Benniks on our livestream TODAY where we demo industry leader Cloudinary and how they work together with Hygraph.\r\n\r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:16Z","001","https://i.ytimg.com/vi/_Iah2t5g02o/maxresdefault.jpg","_Iah2t5g02o",{"type":18,"children":1372,"toc":1373},[],{"title":5,"searchDepth":229,"depth":229,"links":1374},[],"content:3.videos:live-hygraph:001-_Iah2t5g02o.md","3.videos/live-hygraph/001-_Iah2t5g02o.md",{"_path":339,"_dir":141,"_draft":6,"_partial":6,"_locale":5,"title":338,"description":1378,"date":1379,"position":1380,"image":1381,"videoId":1382,"body":1383,"_type":231,"_id":1387,"_source":233,"_file":1388,"_extension":235},"Want to see the magic of combining WordPress with Hygraph for ultimate power? \r\nWordPress expert Maciek joins Tim on the stream where they explore how to combine forces between WordPress and Hygraph.\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","2024-05-31T18:29:09Z","002","https://i.ytimg.com/vi/fy_w2youSBo/maxresdefault.jpg","fy_w2youSBo",{"type":18,"children":1384,"toc":1385},[],{"title":5,"searchDepth":229,"depth":229,"links":1386},[],"content:3.videos:live-hygraph:002-fy_w2youSBo.md","3.videos/live-hygraph/002-fy_w2youSBo.md",[1390,1629,2005],{"_path":1070,"_dir":1391,"_draft":6,"_partial":6,"_locale":5,"title":1069,"description":1392,"id":1393,"slug":1394,"date":1395,"image":1396,"canonical_url":1397,"tags":1398,"collection_id":1399,"body":1400,"_type":231,"_id":1627,"_source":233,"_file":1628,"_extension":235},"writing","Content management is as essential as it is complex, especially at scale. As brands grow, they often...",1683758,"the-content-graph-is-the-future","2023-12-05T10:40:00Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ilcbgm74yygk14s4g7.png","https://hygraph.com/blog/the-content-graph-is-the-future",[],22300,{"type":18,"children":1401,"toc":1617},[1402,1407,1414,1419,1424,1429,1446,1452,1457,1468,1474,1479,1484,1489,1494,1499,1507,1513,1518,1543,1549,1554,1560,1565,1570,1576,1581,1586,1591,1596,1601,1606,1612],{"type":21,"tag":30,"props":1403,"children":1404},{},[1405],{"type":34,"value":1406},"Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph.",{"type":21,"tag":1408,"props":1409,"children":1411},"h2",{"id":1410},"the-emergence-of-new-buzzwords-best-of-breed-and-composable",[1412],{"type":34,"value":1413},"The emergence of new buzzwords: best-of-breed and composable",{"type":21,"tag":30,"props":1415,"children":1416},{},[1417],{"type":34,"value":1418},"Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability.",{"type":21,"tag":30,"props":1420,"children":1421},{},[1422],{"type":34,"value":1423},"A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs.",{"type":21,"tag":30,"props":1425,"children":1426},{},[1427],{"type":34,"value":1428},"Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements.",{"type":21,"tag":1430,"props":1431,"children":1432},"blockquote",{},[1433],{"type":21,"tag":30,"props":1434,"children":1435},{},[1436,1438,1445],{"type":34,"value":1437},"If you want to learn more details about industry buzzwords, check out this ",{"type":21,"tag":73,"props":1439,"children":1442},{"href":1440,"rel":1441},"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords",[77],[1443],{"type":34,"value":1444},"blog post",{"type":34,"value":135},{"type":21,"tag":1408,"props":1447,"children":1449},{"id":1448},"its-not-all-sunshine-and-rainbows",[1450],{"type":34,"value":1451},"It’s not all sunshine and rainbows",{"type":21,"tag":30,"props":1453,"children":1454},{},[1455],{"type":34,"value":1456},"Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous.",{"type":21,"tag":30,"props":1458,"children":1459},{},[1460],{"type":21,"tag":50,"props":1461,"children":1467},{"alt":1462,"height":1463,"loading":1464,"provider":1465,"sizes":56,"src":1466,"width":11},"Composable challenges",720,"lazy","cloudinary","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgy63rwzc7dm5mnmk9wl.png",[],{"type":21,"tag":1408,"props":1469,"children":1471},{"id":1470},"introducing-the-content-graph",[1472],{"type":34,"value":1473},"Introducing the content graph",{"type":21,"tag":30,"props":1475,"children":1476},{},[1477],{"type":34,"value":1478},"The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub.",{"type":21,"tag":30,"props":1480,"children":1481},{},[1482],{"type":34,"value":1483},"The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources.",{"type":21,"tag":30,"props":1485,"children":1486},{},[1487],{"type":34,"value":1488},"In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything.",{"type":21,"tag":30,"props":1490,"children":1491},{},[1492],{"type":34,"value":1493},"An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible.",{"type":21,"tag":30,"props":1495,"children":1496},{},[1497],{"type":34,"value":1498},"To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities.",{"type":21,"tag":30,"props":1500,"children":1501},{},[1502],{"type":21,"tag":50,"props":1503,"children":1506},{"alt":1504,"height":1463,"loading":1464,"provider":1465,"sizes":56,"src":1505,"width":11},"The Contwnt Graph","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qngsih12lys9s6yww0j.png",[],{"type":21,"tag":1408,"props":1508,"children":1510},{"id":1509},"the-benefits",[1511],{"type":34,"value":1512},"The benefits",{"type":21,"tag":30,"props":1514,"children":1515},{},[1516],{"type":34,"value":1517},"Use these one-liners when you talk about this subject to your boss.",{"type":21,"tag":1519,"props":1520,"children":1521},"ul",{},[1522,1528,1533,1538],{"type":21,"tag":1523,"props":1524,"children":1525},"li",{},[1526],{"type":34,"value":1527},"The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas.",{"type":21,"tag":1523,"props":1529,"children":1530},{},[1531],{"type":34,"value":1532},"With the content graph, you query only what you need from any source and in the same unified way.",{"type":21,"tag":1523,"props":1534,"children":1535},{},[1536],{"type":34,"value":1537},"The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all.",{"type":21,"tag":1523,"props":1539,"children":1540},{},[1541],{"type":34,"value":1542},"The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple.",{"type":21,"tag":1408,"props":1544,"children":1546},{"id":1545},"challenges-and-considerations",[1547],{"type":34,"value":1548},"Challenges and considerations",{"type":21,"tag":30,"props":1550,"children":1551},{},[1552],{"type":34,"value":1553},"This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph.",{"type":21,"tag":1408,"props":1555,"children":1557},{"id":1556},"the-tech-behind-the-content-graph",[1558],{"type":34,"value":1559},"The tech behind the content graph",{"type":21,"tag":30,"props":1561,"children":1562},{},[1563],{"type":34,"value":1564},"You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL.",{"type":21,"tag":30,"props":1566,"children":1567},{},[1568],{"type":34,"value":1569},"An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it.",{"type":21,"tag":1408,"props":1571,"children":1573},{"id":1572},"a-real-life-use-case-for-the-content-graph",[1574],{"type":34,"value":1575},"A real-life use case for the content graph",{"type":21,"tag":30,"props":1577,"children":1578},{},[1579],{"type":34,"value":1580},"An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands.",{"type":21,"tag":30,"props":1582,"children":1583},{},[1584],{"type":34,"value":1585},"Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching.",{"type":21,"tag":30,"props":1587,"children":1588},{},[1589],{"type":34,"value":1590},"Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use.",{"type":21,"tag":30,"props":1592,"children":1593},{},[1594],{"type":34,"value":1595},"Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine.",{"type":21,"tag":30,"props":1597,"children":1598},{},[1599],{"type":34,"value":1600},"The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change.",{"type":21,"tag":30,"props":1602,"children":1603},{},[1604],{"type":34,"value":1605},"One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly.",{"type":21,"tag":1408,"props":1607,"children":1609},{"id":1608},"conclusion",[1610],{"type":34,"value":1611},"Conclusion",{"type":21,"tag":30,"props":1613,"children":1614},{},[1615],{"type":34,"value":1616},"The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures.",{"title":5,"searchDepth":229,"depth":229,"links":1618},[1619,1620,1621,1622,1623,1624,1625,1626],{"id":1410,"depth":229,"text":1413},{"id":1448,"depth":229,"text":1451},{"id":1470,"depth":229,"text":1473},{"id":1509,"depth":229,"text":1512},{"id":1545,"depth":229,"text":1548},{"id":1556,"depth":229,"text":1559},{"id":1572,"depth":229,"text":1575},{"id":1608,"depth":229,"text":1611},"content:4.writing:the-content-graph-is-the-future.md","4.writing/the-content-graph-is-the-future.md",{"_path":1103,"_dir":1391,"_draft":6,"_partial":6,"_locale":5,"title":1102,"description":1630,"id":1631,"slug":1632,"date":1633,"image":1634,"canonical_url":1635,"tags":1636,"collection_id":1399,"body":1637,"_type":231,"_id":2003,"_source":233,"_file":2004,"_extension":235},"Different ways of working require different approaches to content design. In this post, I will...",1664371,"what-type-of-content-organization-do-you-need","2023-11-12T09:03:33Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd58lvz3nrm8lre4gdtuw.png","https://hygraph.com/blog/what-type-of-content-organization-do-you-need",[],{"type":18,"children":1638,"toc":1983},[1639,1644,1649,1654,1662,1667,1673,1678,1683,1688,1693,1699,1704,1711,1716,1724,1730,1735,1742,1748,1753,1761,1767,1772,1777,1784,1790,1795,1800,1808,1814,1819,1824,1831,1837,1842,1848,1853,1862,1867,1875,1881,1886,1891,1899,1905,1917,1924,1929,1936,1942,1947,1955,1961,1966,1974,1978],{"type":21,"tag":30,"props":1640,"children":1641},{},[1642],{"type":34,"value":1643},"Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally.",{"type":21,"tag":30,"props":1645,"children":1646},{},[1647],{"type":34,"value":1648},"Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between.",{"type":21,"tag":30,"props":1650,"children":1651},{},[1652],{"type":34,"value":1653},"One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent.",{"type":21,"tag":30,"props":1655,"children":1656},{},[1657],{"type":21,"tag":50,"props":1658,"children":1661},{"alt":1659,"loading":1464,"provider":1465,"sizes":56,"src":1660,"width":11},"Centralized / Decentralized","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xioylw3zkxljytzhwtft.png",[],{"type":21,"tag":30,"props":1663,"children":1664},{},[1665],{"type":34,"value":1666},"Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly.",{"type":21,"tag":1408,"props":1668,"children":1670},{"id":1669},"how-to-organize-your-content-without-going-crazy",[1671],{"type":34,"value":1672},"How to organize your content without going crazy",{"type":21,"tag":30,"props":1674,"children":1675},{},[1676],{"type":34,"value":1677},"If your content flows between different systems, federation is one of the most effective ways to manage it.",{"type":21,"tag":30,"props":1679,"children":1680},{},[1681],{"type":34,"value":1682},"Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications.",{"type":21,"tag":30,"props":1684,"children":1685},{},[1686],{"type":34,"value":1687},"Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation.",{"type":21,"tag":30,"props":1689,"children":1690},{},[1691],{"type":34,"value":1692},"In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements.",{"type":21,"tag":1408,"props":1694,"children":1696},{"id":1695},"forms-of-federation",[1697],{"type":34,"value":1698},"Forms of federation",{"type":21,"tag":30,"props":1700,"children":1701},{},[1702],{"type":34,"value":1703},"There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns.",{"type":21,"tag":1705,"props":1706,"children":1708},"h3",{"id":1707},"data-stitching-and-custom-middleware",[1709],{"type":34,"value":1710},"Data stitching and custom middleware",{"type":21,"tag":30,"props":1712,"children":1713},{},[1714],{"type":34,"value":1715},"Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time.",{"type":21,"tag":30,"props":1717,"children":1718},{},[1719],{"type":21,"tag":50,"props":1720,"children":1723},{"alt":1721,"loading":1464,"provider":1465,"sizes":56,"src":1722,"width":11},"Data stitching","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iacwgoeaolz9znalbc56.png",[],{"type":21,"tag":1705,"props":1725,"children":1727},{"id":1726},"content-hub",[1728],{"type":34,"value":1729},"Content Hub",{"type":21,"tag":30,"props":1731,"children":1732},{},[1733],{"type":34,"value":1734},"A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication.",{"type":21,"tag":30,"props":1736,"children":1737},{},[1738],{"type":21,"tag":50,"props":1739,"children":1741},{"alt":1729,"loading":1464,"provider":1465,"sizes":56,"src":1740,"width":11},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc8fp49qbswr93cg5r62.png",[],{"type":21,"tag":1705,"props":1743,"children":1745},{"id":1744},"data-lake",[1746],{"type":34,"value":1747},"Data Lake",{"type":21,"tag":30,"props":1749,"children":1750},{},[1751],{"type":34,"value":1752},"A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand.",{"type":21,"tag":30,"props":1754,"children":1755},{},[1756],{"type":21,"tag":50,"props":1757,"children":1760},{"alt":1758,"loading":1464,"provider":1465,"sizes":56,"src":1759,"width":11},"Data lake","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u388o0c1oy5p0m31afl0.png",[],{"type":21,"tag":1705,"props":1762,"children":1764},{"id":1763},"content-federation",[1765],{"type":34,"value":1766},"Content Federation",{"type":21,"tag":30,"props":1768,"children":1769},{},[1770],{"type":34,"value":1771},"Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation.",{"type":21,"tag":30,"props":1773,"children":1774},{},[1775],{"type":34,"value":1776},"Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs.",{"type":21,"tag":30,"props":1778,"children":1779},{},[1780],{"type":21,"tag":50,"props":1781,"children":1783},{"alt":1766,"loading":1464,"provider":1465,"sizes":56,"src":1782,"width":11},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wsbl6uzmoscfxq31yrv.png",[],{"type":21,"tag":1705,"props":1785,"children":1787},{"id":1786},"dxo-digital-experience-orchestration",[1788],{"type":34,"value":1789},"DXO (digital experience orchestration)",{"type":21,"tag":30,"props":1791,"children":1792},{},[1793],{"type":34,"value":1794},"Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources.",{"type":21,"tag":30,"props":1796,"children":1797},{},[1798],{"type":34,"value":1799},"Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone.",{"type":21,"tag":30,"props":1801,"children":1802},{},[1803],{"type":21,"tag":50,"props":1804,"children":1807},{"alt":1805,"loading":1464,"provider":1465,"sizes":56,"src":1806,"width":11},"DXO","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfrsz1i6hjq68mbsmrui.png",[],{"type":21,"tag":1705,"props":1809,"children":1811},{"id":1810},"graphql-federation",[1812],{"type":34,"value":1813},"GraphQL Federation",{"type":21,"tag":30,"props":1815,"children":1816},{},[1817],{"type":34,"value":1818},"GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints.",{"type":21,"tag":30,"props":1820,"children":1821},{},[1822],{"type":34,"value":1823},"A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver.",{"type":21,"tag":30,"props":1825,"children":1826},{},[1827],{"type":21,"tag":50,"props":1828,"children":1830},{"alt":1813,"loading":1464,"provider":1465,"sizes":56,"src":1829,"width":11},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rtx6y1lqmon1nhe6c4t0.png",[],{"type":21,"tag":1408,"props":1832,"children":1834},{"id":1833},"which-federation-is-for-you",[1835],{"type":34,"value":1836},"Which federation is for you?",{"type":21,"tag":30,"props":1838,"children":1839},{},[1840],{"type":34,"value":1841},"Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions.",{"type":21,"tag":1705,"props":1843,"children":1845},{"id":1844},"what-is-your-digital-organization-direction-centralized-or-decentralized",[1846],{"type":34,"value":1847},"What is your digital organization direction: centralized or decentralized?",{"type":21,"tag":30,"props":1849,"children":1850},{},[1851],{"type":34,"value":1852},"The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top.",{"type":21,"tag":30,"props":1854,"children":1855},{},[1856],{"type":21,"tag":1857,"props":1858,"children":1859},"em",{},[1860],{"type":34,"value":1861},"Federation type to choose: Content Federation",{"type":21,"tag":30,"props":1863,"children":1864},{},[1865],{"type":34,"value":1866},"If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice.",{"type":21,"tag":30,"props":1868,"children":1869},{},[1870],{"type":21,"tag":1857,"props":1871,"children":1872},{},[1873],{"type":34,"value":1874},"Federation type to choose: Content Hub",{"type":21,"tag":1705,"props":1876,"children":1878},{"id":1877},"how-much-cleanup-does-your-data-need",[1879],{"type":34,"value":1880},"How much cleanup does your data need?",{"type":21,"tag":30,"props":1882,"children":1883},{},[1884],{"type":34,"value":1885},"Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails.",{"type":21,"tag":30,"props":1887,"children":1888},{},[1889],{"type":34,"value":1890},"If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph.",{"type":21,"tag":30,"props":1892,"children":1893},{},[1894],{"type":21,"tag":1857,"props":1895,"children":1896},{},[1897],{"type":34,"value":1898},"Federation type to choose: DXO, Content Federation",{"type":21,"tag":1705,"props":1900,"children":1902},{"id":1901},"how-autonomous-do-your-data-sources-need-to-be",[1903],{"type":34,"value":1904},"How autonomous do your data sources need to be?",{"type":21,"tag":30,"props":1906,"children":1907},{},[1908,1910,1915],{"type":34,"value":1909},"At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the ",{"type":21,"tag":1857,"props":1911,"children":1912},{},[1913],{"type":34,"value":1914},"autonomy",{"type":34,"value":1916}," to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below.",{"type":21,"tag":30,"props":1918,"children":1919},{},[1920],{"type":21,"tag":1857,"props":1921,"children":1922},{},[1923],{"type":34,"value":1861},{"type":21,"tag":30,"props":1925,"children":1926},{},[1927],{"type":34,"value":1928},"If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data.",{"type":21,"tag":30,"props":1930,"children":1931},{},[1932],{"type":21,"tag":1857,"props":1933,"children":1934},{},[1935],{"type":34,"value":1874},{"type":21,"tag":1705,"props":1937,"children":1939},{"id":1938},"are-you-dealing-with-big-data",[1940],{"type":34,"value":1941},"Are you dealing with big data?",{"type":21,"tag":30,"props":1943,"children":1944},{},[1945],{"type":34,"value":1946},"Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS.",{"type":21,"tag":30,"props":1948,"children":1949},{},[1950],{"type":21,"tag":1857,"props":1951,"children":1952},{},[1953],{"type":34,"value":1954},"Federation type to choose: Content Lake",{"type":21,"tag":1705,"props":1956,"children":1958},{"id":1957},"are-you-a-saas-with-multiple-tech-silos",[1959],{"type":34,"value":1960},"Are you a SaaS with multiple tech silos?",{"type":21,"tag":30,"props":1962,"children":1963},{},[1964],{"type":34,"value":1965},"If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL.",{"type":21,"tag":30,"props":1967,"children":1968},{},[1969],{"type":21,"tag":1857,"props":1970,"children":1971},{},[1972],{"type":34,"value":1973},"Federation type to choose: GraphQL Federation",{"type":21,"tag":1408,"props":1975,"children":1976},{"id":1608},[1977],{"type":34,"value":1611},{"type":21,"tag":30,"props":1979,"children":1980},{},[1981],{"type":34,"value":1982},"As always, the answer is: \"It depends\". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases.",{"title":5,"searchDepth":229,"depth":229,"links":1984},[1985,1986,1995,2002],{"id":1669,"depth":229,"text":1672},{"id":1695,"depth":229,"text":1698,"children":1987},[1988,1990,1991,1992,1993,1994],{"id":1707,"depth":1989,"text":1710},3,{"id":1726,"depth":1989,"text":1729},{"id":1744,"depth":1989,"text":1747},{"id":1763,"depth":1989,"text":1766},{"id":1786,"depth":1989,"text":1789},{"id":1810,"depth":1989,"text":1813},{"id":1833,"depth":229,"text":1836,"children":1996},[1997,1998,1999,2000,2001],{"id":1844,"depth":1989,"text":1847},{"id":1877,"depth":1989,"text":1880},{"id":1901,"depth":1989,"text":1904},{"id":1938,"depth":1989,"text":1941},{"id":1957,"depth":1989,"text":1960},{"id":1608,"depth":229,"text":1611},"content:4.writing:what-type-of-content-organization-do-you-need.md","4.writing/what-type-of-content-organization-do-you-need.md",{"_path":1091,"_dir":1391,"_draft":6,"_partial":6,"_locale":5,"title":1090,"description":2006,"id":2007,"slug":2008,"date":2009,"image":2010,"canonical_url":1440,"tags":2011,"collection_id":1399,"body":2016,"_type":231,"_id":2402,"_source":233,"_file":2403,"_extension":235},"Buzzwords are labels that describe tech approaches that become so commonplace over time that the...",1614626,"the-real-deal-about-content-management-buzzword","2023-09-28T14:43:37Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr5frm3ra3q3liidcpev.jpg",[2012,2013,2014,2015],"buzzwords","dxp","composable","cms",{"type":18,"children":2017,"toc":2388},[2018,2023,2028,2042,2054,2060,2072,2077,2121,2128,2133,2145,2150,2155,2162,2168,2182,2187,2194,2200,2212,2217,2225,2230,2235,2240,2248,2254,2266,2272,2277,2291,2297,2302,2307,2312,2335,2343,2348,2354,2359,2364,2372,2378,2383],{"type":21,"tag":30,"props":2019,"children":2020},{},[2021],{"type":34,"value":2022},"Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too.",{"type":21,"tag":30,"props":2024,"children":2025},{},[2026],{"type":34,"value":2027},"First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter.",{"type":21,"tag":30,"props":2029,"children":2030},{},[2031,2033,2040],{"type":34,"value":2032},"Do you like watching more than reading? Watch this ",{"type":21,"tag":73,"props":2034,"children":2037},{"href":2035,"rel":2036},"https://www.youtube.com/watch?v=EXzp3OkQTXk",[77],[2038],{"type":34,"value":2039},"YouTube video",{"type":34,"value":2041}," instead.",{"type":21,"tag":30,"props":2043,"children":2044},{},[2045,2047,2052],{"type":34,"value":2046},"{% embed ",{"type":21,"tag":73,"props":2048,"children":2050},{"href":2035,"rel":2049},[77],[2051],{"type":34,"value":2035},{"type":34,"value":2053}," %}",{"type":21,"tag":1408,"props":2055,"children":2057},{"id":2056},"mach",[2058],{"type":34,"value":2059},"MACH",{"type":21,"tag":30,"props":2061,"children":2062},{},[2063,2070],{"type":21,"tag":73,"props":2064,"children":2067},{"href":2065,"rel":2066},"https://hygraph.com/blog/mach-architecture",[77],[2068],{"type":34,"value":2069},"MACH architecture",{"type":34,"value":2071}," comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless.",{"type":21,"tag":30,"props":2073,"children":2074},{},[2075],{"type":34,"value":2076},"Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members.",{"type":21,"tag":1519,"props":2078,"children":2079},{},[2080,2091,2101,2111],{"type":21,"tag":1523,"props":2081,"children":2082},{},[2083,2089],{"type":21,"tag":2084,"props":2085,"children":2086},"strong",{},[2087],{"type":34,"value":2088},"Microservices",{"type":34,"value":2090}," are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures.",{"type":21,"tag":1523,"props":2092,"children":2093},{},[2094,2099],{"type":21,"tag":2084,"props":2095,"children":2096},{},[2097],{"type":34,"value":2098},"API-first",{"type":34,"value":2100}," means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications.",{"type":21,"tag":1523,"props":2102,"children":2103},{},[2104,2109],{"type":21,"tag":2084,"props":2105,"children":2106},{},[2107],{"type":34,"value":2108},"Cloud-native",{"type":34,"value":2110}," means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing.",{"type":21,"tag":1523,"props":2112,"children":2113},{},[2114,2119],{"type":21,"tag":2084,"props":2115,"children":2116},{},[2117],{"type":34,"value":2118},"Headless",{"type":34,"value":2120}," means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end.",{"type":21,"tag":30,"props":2122,"children":2123},{},[2124],{"type":21,"tag":50,"props":2125,"children":2127},{"alt":2056,"loading":1464,"provider":1465,"sizes":56,"src":2126,"width":11},"https://media.graphassets.com/jZfjXdJMSGTG1gLrwGQQ",[],{"type":21,"tag":1408,"props":2129,"children":2130},{"id":2014},[2131],{"type":34,"value":2132},"Composable",{"type":21,"tag":30,"props":2134,"children":2135},{},[2136,2143],{"type":21,"tag":73,"props":2137,"children":2140},{"href":2138,"rel":2139},"https://hygraph.com/blog/composable-architecture",[77],[2141],{"type":34,"value":2142},"Composable architecture",{"type":34,"value":2144}," refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems.",{"type":21,"tag":30,"props":2146,"children":2147},{},[2148],{"type":34,"value":2149},"While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first \"A\" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware.",{"type":21,"tag":30,"props":2151,"children":2152},{},[2153],{"type":34,"value":2154},"Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions.",{"type":21,"tag":30,"props":2156,"children":2157},{},[2158],{"type":21,"tag":50,"props":2159,"children":2161},{"alt":2014,"loading":1464,"provider":1465,"sizes":56,"src":2160,"width":11},"https://media.graphassets.com/D2oCAxwTpuhKfZ5xwEB0",[],{"type":21,"tag":1408,"props":2163,"children":2165},{"id":2164},"dxp-digital-experience-platform",[2166],{"type":34,"value":2167},"DXP (Digital Experience Platform)",{"type":21,"tag":30,"props":2169,"children":2170},{},[2171,2173,2180],{"type":34,"value":2172},"A ",{"type":21,"tag":73,"props":2174,"children":2177},{"href":2175,"rel":2176},"https://hygraph.com/blog/what-is-a-dxp",[77],[2178],{"type":34,"value":2179},"digital experience platform (DXP)",{"type":34,"value":2181}," is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences.",{"type":21,"tag":30,"props":2183,"children":2184},{},[2185],{"type":34,"value":2186},"Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies.",{"type":21,"tag":30,"props":2188,"children":2189},{},[2190],{"type":21,"tag":50,"props":2191,"children":2193},{"alt":2013,"loading":1464,"provider":1465,"sizes":56,"src":2192,"width":11},"https://media.graphassets.com/rIUS6taoQJ2pcvTDA2YZ",[],{"type":21,"tag":1408,"props":2195,"children":2197},{"id":2196},"dxc-digital-experience-composition",[2198],{"type":34,"value":2199},"DXC (Digital Experience Composition)",{"type":21,"tag":30,"props":2201,"children":2202},{},[2203,2210],{"type":21,"tag":73,"props":2204,"children":2207},{"href":2205,"rel":2206},"https://hygraph.com/blog/digital-experience-composition",[77],[2208],{"type":34,"value":2209},"Digital experience composition",{"type":34,"value":2211}," refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data.",{"type":21,"tag":30,"props":2213,"children":2214},{},[2215],{"type":34,"value":2216},"DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone.",{"type":21,"tag":30,"props":2218,"children":2219},{},[2220],{"type":21,"tag":50,"props":2221,"children":2224},{"alt":2222,"loading":1464,"provider":1465,"sizes":56,"src":2223,"width":11},"dxc","https://media.graphassets.com/irNrx7isRUKaZ0QoDnzQ",[],{"type":21,"tag":1408,"props":2226,"children":2227},{"id":1786},[2228],{"type":34,"value":2229},"DXO (Digital Experience Orchestration)",{"type":21,"tag":30,"props":2231,"children":2232},{},[2233],{"type":34,"value":2234},"Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience.",{"type":21,"tag":30,"props":2236,"children":2237},{},[2238],{"type":34,"value":2239},"DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user.",{"type":21,"tag":30,"props":2241,"children":2242},{},[2243],{"type":21,"tag":50,"props":2244,"children":2247},{"alt":2245,"loading":1464,"provider":1465,"sizes":56,"src":2246,"width":11},"dxo","https://media.graphassets.com/WgGDwsNLTTa4wAoL7WVd",[],{"type":21,"tag":1408,"props":2249,"children":2251},{"id":2250},"why-you-dont-have-to-care-about-the-buzzwords",[2252],{"type":34,"value":2253},"Why you don’t have to care about the buzzwords",{"type":21,"tag":30,"props":2255,"children":2256},{},[2257,2259,2264],{"type":34,"value":2258},"Ultimately, it is up to ",{"type":21,"tag":1857,"props":2260,"children":2261},{},[2262],{"type":34,"value":2263},"you",{"type":34,"value":2265}," to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before.",{"type":21,"tag":1705,"props":2267,"children":2269},{"id":2268},"company-maturity",[2270],{"type":34,"value":2271},"Company maturity",{"type":21,"tag":30,"props":2273,"children":2274},{},[2275],{"type":34,"value":2276},"As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases.",{"type":21,"tag":30,"props":2278,"children":2279},{},[2280,2282,2289],{"type":34,"value":2281},"However, as companies mature, they may struggle with the ",{"type":21,"tag":73,"props":2283,"children":2286},{"href":2284,"rel":2285},"https://hygraph.com/blog/monolithic-cms-limitations",[77],[2287],{"type":34,"value":2288},"limitations of these monoliths",{"type":34,"value":2290},". Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry.",{"type":21,"tag":1705,"props":2292,"children":2294},{"id":2293},"connecting-it-all",[2295],{"type":34,"value":2296},"Connecting it all",{"type":21,"tag":30,"props":2298,"children":2299},{},[2300],{"type":34,"value":2301},"Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use.",{"type":21,"tag":30,"props":2303,"children":2304},{},[2305],{"type":34,"value":2306},"The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture.",{"type":21,"tag":1705,"props":2308,"children":2309},{"id":1763},[2310],{"type":34,"value":2311},"Content federation",{"type":21,"tag":30,"props":2313,"children":2314},{},[2315,2317,2324,2326,2333],{"type":34,"value":2316},"To avoid a ",{"type":21,"tag":73,"props":2318,"children":2321},{"href":2319,"rel":2320},"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/",[77],[2322],{"type":34,"value":2323},"MACH monolith",{"type":34,"value":2325}," or ",{"type":21,"tag":73,"props":2327,"children":2330},{"href":2328,"rel":2329},"https://www.youtube.com/watch?v=so7-c2bOXpA",[77],[2331],{"type":34,"value":2332},"MACHlash",{"type":34,"value":2334},", you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems.",{"type":21,"tag":30,"props":2336,"children":2337},{},[2338],{"type":21,"tag":50,"props":2339,"children":2342},{"alt":2340,"loading":1464,"provider":1465,"sizes":56,"src":2341,"width":11},"content federation","https://media.graphassets.com/fbNw1hhTSHykSwk19ggJ",[],{"type":21,"tag":30,"props":2344,"children":2345},{},[2346],{"type":34,"value":2347},"Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information.",{"type":21,"tag":1705,"props":2349,"children":2351},{"id":2350},"after-content-federation-is-in-place",[2352],{"type":34,"value":2353},"After Content federation is in place",{"type":21,"tag":30,"props":2355,"children":2356},{},[2357],{"type":34,"value":2358},"Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later.",{"type":21,"tag":30,"props":2360,"children":2361},{},[2362],{"type":34,"value":2363},"If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool.",{"type":21,"tag":30,"props":2365,"children":2366},{},[2367],{"type":21,"tag":50,"props":2368,"children":2371},{"alt":2369,"loading":1464,"provider":1465,"sizes":56,"src":2370,"width":11},"after content federation","https://media.graphassets.com/4xZbpHRgTI2CzXQ88GG7",[],{"type":21,"tag":1408,"props":2373,"children":2375},{"id":2374},"concluding",[2376],{"type":34,"value":2377},"Concluding",{"type":21,"tag":30,"props":2379,"children":2380},{},[2381],{"type":34,"value":2382},"Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems.",{"type":21,"tag":30,"props":2384,"children":2385},{},[2386],{"type":34,"value":2387},"Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between.",{"title":5,"searchDepth":229,"depth":229,"links":2389},[2390,2391,2392,2393,2394,2395,2401],{"id":2056,"depth":229,"text":2059},{"id":2014,"depth":229,"text":2132},{"id":2164,"depth":229,"text":2167},{"id":2196,"depth":229,"text":2199},{"id":1786,"depth":229,"text":2229},{"id":2250,"depth":229,"text":2253,"children":2396},[2397,2398,2399,2400],{"id":2268,"depth":1989,"text":2271},{"id":2293,"depth":1989,"text":2296},{"id":1763,"depth":1989,"text":2311},{"id":2350,"depth":1989,"text":2353},{"id":2374,"depth":229,"text":2377},"content:4.writing:the-real-deal-about-content-management-buzzword.md","4.writing/the-real-deal-about-content-management-buzzword.md",[2405,2418,2430,2443],{"_path":1341,"_dir":2406,"_draft":6,"_partial":6,"_locale":5,"title":1340,"description":5,"conference":2407,"talk":162,"location":2408,"date":2409,"id":2410,"link":2411,"body":2412,"_type":231,"_id":2416,"_source":233,"_file":2417,"_extension":235},"speaking","CMSCamp Mallorca","Catalonia Majorica Palma Mallorca","2024-09-27","clqdq87gltsup0bvztwqw2f1v","https://mallorca.cmscamp.eu/",{"type":18,"children":2413,"toc":2414},[],{"title":5,"searchDepth":229,"depth":229,"links":2415},[],"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md",{"_path":1338,"_dir":2406,"_draft":6,"_partial":6,"_locale":5,"title":1337,"description":5,"conference":2419,"talk":162,"location":2420,"date":2421,"id":2422,"link":2423,"body":2424,"_type":231,"_id":2428,"_source":233,"_file":2429,"_extension":235},"ContentCon 2024","Austin, Texas","2024-06-05","clqdq6ui7ts730bvzmk1xw47t","https://www.contentstack.com/contentcon",{"type":18,"children":2425,"toc":2426},[],{"title":5,"searchDepth":229,"depth":229,"links":2427},[],"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md",{"_path":1335,"_dir":2406,"_draft":6,"_partial":6,"_locale":5,"title":1334,"description":5,"conference":2431,"talk":2432,"location":2433,"date":2434,"id":2435,"link":2436,"body":2437,"_type":231,"_id":2441,"_source":233,"_file":2442,"_extension":235},"DEVworld Conference 2024","Alive and Kicking - a vue into rock & roll","Amsterdam","2024-02-29","clkzot86xire30aujuy08465e","https://devworldconference.com/",{"type":18,"children":2438,"toc":2439},[],{"title":5,"searchDepth":229,"depth":229,"links":2440},[],"content:5.speaking:2024-02-29-clkzot86xire30aujuy08465e.md","5.speaking/2024-02-29-clkzot86xire30aujuy08465e.md",{"_path":1332,"_dir":2406,"_draft":6,"_partial":6,"_locale":5,"title":1331,"description":5,"conference":2444,"talk":2445,"location":2446,"date":2447,"id":2448,"link":2449,"body":2450,"_type":231,"_id":2454,"_source":233,"_file":2455,"_extension":235},"WeAreDevelopers World Congress","Alive and Kicking, a Vue into Rock & Roll","Berlin","2023-07-27","clifq4sto3xph0aw4letve613","https://www.wearedevelopers.com/world-congress",{"type":18,"children":2451,"toc":2452},[],{"title":5,"searchDepth":229,"depth":229,"links":2453},[],"content:5.speaking:2023-07-27-clifq4sto3xph0aw4letve613.md","5.speaking/2023-07-27-clifq4sto3xph0aw4letve613.md",[2457,2468,2479],{"_path":532,"_dir":190,"_draft":6,"_partial":6,"_locale":5,"title":251,"description":2458,"date":2459,"position":1356,"image":2460,"videoId":2461,"body":2462,"_type":231,"_id":2466,"_source":233,"_file":2467,"_extension":235},"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-10T07:13:06Z","https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","mvq-_s20NDk",{"type":18,"children":2463,"toc":2464},[],{"title":5,"searchDepth":229,"depth":229,"links":2465},[],"content:3.videos:tim:000-mvq-_s20NDk.md","3.videos/tim/000-mvq-_s20NDk.md",{"_path":535,"_dir":190,"_draft":6,"_partial":6,"_locale":5,"title":534,"description":2469,"date":2470,"position":1368,"image":2471,"videoId":2472,"body":2473,"_type":231,"_id":2477,"_source":233,"_file":2478,"_extension":235},"Jake Ward, the co-founder and CEO of Data Protocol, and I discuss the current state of developer advocacy in 2024 and share insights on how dev rel teams can measure their impact.\n\nFollow Jake here:\nhttps://twitter.com/Jacobmward\nhttps://dataprotocol.com\nhttps://www.linkedin.com/in/jacobmward/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://linkedin.com/in/timbenniks","2024-04-15T13:00:24Z","https://i.ytimg.com/vi/VEX0KtITib4/maxresdefault.jpg","VEX0KtITib4",{"type":18,"children":2474,"toc":2475},[],{"title":5,"searchDepth":229,"depth":229,"links":2476},[],"content:3.videos:tim:001-VEX0KtITib4.md","3.videos/tim/001-VEX0KtITib4.md",{"_path":538,"_dir":190,"_draft":6,"_partial":6,"_locale":5,"title":537,"description":2480,"date":2481,"position":1380,"image":2482,"videoId":2483,"body":2484,"_type":231,"_id":2488,"_source":233,"_file":2489,"_extension":235},"Developer relations is having a bit of a rough time right now and in this video I explain my vision on how to succeed in 2024. \n\nTL/DR: focus on developer success while they are on your platform. Set up KPIs that measure their success, so you can show impact on the potential revenue these developers might bring. \n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nLinkedIn: https://linkedin.com/in/timbenniks\nGithub: https://github.com/timbenniks","2024-04-05T06:50:24Z","https://i.ytimg.com/vi/196iQP-lHLw/maxresdefault.jpg","196iQP-lHLw",{"type":18,"children":2485,"toc":2486},[],{"title":5,"searchDepth":229,"depth":229,"links":2487},[],"content:3.videos:tim:002-196iQP-lHLw.md","3.videos/tim/002-196iQP-lHLw.md",1718484377981] \ No newline at end of file +[{"data":1,"prerenderedAt":2490},["Reactive",2],{"content-query-1DxZ1vYQk5":3,"content-navigation-8C37fagqQL":236,"content-query-S3bPa2HwJg":1352,"content-query-ivbgOiTZnp":1389,"content-query-2rPvHAixP6":2404,"content-query-V5ks1ju3kz":2456},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":6,"image":9,"head":13,"body":17,"_type":231,"_id":232,"_source":233,"_file":234,"_extension":235},"/","",false,"Tim Benniks","This is the personal website of Tim Benniks. This is where you can find my public speaking schedule and my videos.",{"src":10,"alt":7,"width":11,"height":12},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png",1280,800,{"meta":14},[15],{"name":16,"content":7},"keywords",{"type":18,"children":19,"toc":228},"root",[20,60,136,151,181,216],{"type":21,"tag":22,"props":23,"children":24},"element","hero",{},[25,35,43],{"type":21,"tag":26,"props":27,"children":28},"template",{"v-slot:title":5},[29],{"type":21,"tag":30,"props":31,"children":32},"p",{},[33],{"type":34,"value":7},"text",{"type":21,"tag":26,"props":36,"children":37},{"v-slot:description":5},[38],{"type":21,"tag":30,"props":39,"children":40},{},[41],{"type":34,"value":42},"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR",{"type":21,"tag":26,"props":44,"children":45},{"v-slot:image":5},[46],{"type":21,"tag":30,"props":47,"children":48},{},[49],{"type":21,"tag":50,"props":51,"children":59},"img",{"alt":7,"format":52,"height":53,"loading":54,"quality":55,"sizes":56,"src":57,"width":58},"webp",618,"eager","100","sm:100vw","/tim.png",1440,[],{"type":21,"tag":61,"props":62,"children":63},"richtext",{},[64],{"type":21,"tag":26,"props":65,"children":66},{"v-slot:body":5},[67],{"type":21,"tag":30,"props":68,"children":69},{},[70,72,81,83,90,92,99,101,108,110,117,118,125,127,134],{"type":34,"value":71},"Tim Benniks is Developer Relations Lead for outreach and awareness at ",{"type":21,"tag":73,"props":74,"children":78},"a",{"href":75,"rel":76,"title":75},"https://hygraph.com",[77],"nofollow",[79],{"type":34,"value":80},"Hygraph",{"type":34,"value":82},". ",{"type":21,"tag":73,"props":84,"children":87},{"href":85,"rel":86,"title":85},"https://machalliance.com",[77],[88],{"type":34,"value":89},"MACH Alliance",{"type":34,"value":91}," Tech Council member, ",{"type":21,"tag":73,"props":93,"children":96},{"href":94,"rel":95,"title":94},"https://nuxt.com",[77],[97],{"type":34,"value":98},"NuxtJS",{"type":34,"value":100}," ambassador, ",{"type":21,"tag":73,"props":102,"children":105},{"href":103,"rel":104,"title":103},"https://cloudinary.com",[77],[106],{"type":34,"value":107},"Cloudinary",{"type":34,"value":109}," Ambassador, ",{"type":21,"tag":73,"props":111,"children":114},{"href":112,"rel":113,"title":112},"https://supabase.com",[77],[115],{"type":34,"value":116},"Supabase",{"type":34,"value":109},{"type":21,"tag":73,"props":119,"children":122},{"href":120,"rel":121,"title":120},"https://algolia.com",[77],[123],{"type":34,"value":124},"Algolia",{"type":34,"value":126}," Ambassador, and ",{"type":21,"tag":73,"props":128,"children":131},{"href":129,"rel":130,"title":129},"https://youtube.com/timbenniks",[77],[132],{"type":34,"value":133},"content creator",{"type":34,"value":135},".",{"type":21,"tag":137,"props":138,"children":142},"videos",{":limit":139,":small":140,"folder":141},"3","false","live-hygraph",[143],{"type":21,"tag":26,"props":144,"children":145},{"v-slot:title":5},[146],{"type":21,"tag":30,"props":147,"children":148},{},[149],{"type":34,"value":150},"Live streams",{"type":21,"tag":22,"props":152,"children":154},{":smallertitle":153},"true",[155,163,171],{"type":21,"tag":26,"props":156,"children":157},{"v-slot:title":5},[158],{"type":21,"tag":30,"props":159,"children":160},{},[161],{"type":34,"value":162},"Alive and Kicking",{"type":21,"tag":26,"props":164,"children":165},{"v-slot:description":5},[166],{"type":21,"tag":30,"props":167,"children":168},{},[169],{"type":34,"value":170},"Vuejs Amsterdam 2024",{"type":21,"tag":26,"props":172,"children":173},{"v-slot:image":5},[174],{"type":21,"tag":30,"props":175,"children":176},{},[177],{"type":21,"tag":50,"props":178,"children":180},{"alt":7,"format":52,"height":53,"loading":54,"quality":55,"sizes":56,"src":179,"width":58},"/tim-vueams.jpg",[],{"type":21,"tag":182,"props":183,"children":184},"two-column",{},[185,200],{"type":21,"tag":26,"props":186,"children":187},{"v-slot:sidea":5},[188],{"type":21,"tag":137,"props":189,"children":191},{":limit":139,":small":153,"folder":190},"tim",[192],{"type":21,"tag":26,"props":193,"children":194},{"v-slot:title":5},[195],{"type":21,"tag":30,"props":196,"children":197},{},[198],{"type":34,"value":199},"Videos",{"type":21,"tag":26,"props":201,"children":202},{"v-slot:sideb":5},[203],{"type":21,"tag":204,"props":205,"children":207},"talks",{":limit":206,":small":153},"4",[208],{"type":21,"tag":26,"props":209,"children":210},{"v-slot:title":5},[211],{"type":21,"tag":30,"props":212,"children":213},{},[214],{"type":34,"value":215},"Talks",{"type":21,"tag":217,"props":218,"children":219},"articles",{":limit":139,":small":140},[220],{"type":21,"tag":26,"props":221,"children":222},{"v-slot:title":5},[223],{"type":21,"tag":30,"props":224,"children":225},{},[226],{"type":34,"value":227},"Articles",{"title":5,"searchDepth":229,"depth":229,"links":230},2,[],"markdown","content:1.index.md","content","1.index.md","md",[237,240,1030,1107,1343,1346,1349],{"title":238,"_path":239},"About Tim","/about",{"title":199,"_path":241,"children":242},"/videos",[243,262,281,326,327,379,482,505,527,855],{"title":244,"_path":245,"children":246},"Alive And Kicking","/videos/alive-and-kicking",[247,250,253,256,259],{"title":248,"_path":249},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":251,"_path":252},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":254,"_path":255},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":257,"_path":258},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":260,"_path":261},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":263,"_path":264,"children":265},"Headless Creator","/videos/headless-creator",[266,269,272,275,278],{"title":267,"_path":268},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":270,"_path":271},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":273,"_path":274},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":276,"_path":277},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":279,"_path":280},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":80,"_path":282,"children":283},"/videos/hygraph",[284,287,290,293,296,299,302,305,308,311,314,317,320,323],{"title":285,"_path":286},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":288,"_path":289},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":291,"_path":292},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":294,"_path":295},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":297,"_path":298},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":300,"_path":301},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":303,"_path":304},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":306,"_path":307},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":309,"_path":310},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":312,"_path":313},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":315,"_path":316},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":318,"_path":319},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":321,"_path":322},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":324,"_path":325},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":199,"_path":241},{"title":328,"_path":329,"children":330},"Live Hygraph","/videos/live-hygraph",[331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376],{"title":332,"_path":333},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":335,"_path":336},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":338,"_path":339},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":341,"_path":342},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":344,"_path":345},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":347,"_path":348},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":350,"_path":351},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":353,"_path":354},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":356,"_path":357},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":359,"_path":360},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":362,"_path":363},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":365,"_path":366},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":368,"_path":369},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":371,"_path":372},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":374,"_path":375},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":377,"_path":378},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":380,"_path":381,"children":382},"Live Uniform","/videos/live-uniform",[383,386,389,392,395,398,401,404,407,410,413,416,419,422,425,428,431,434,437,440,443,446,449,452,455,458,461,464,467,470,473,476,479],{"title":384,"_path":385},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":387,"_path":388},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":390,"_path":391},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":393,"_path":394},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":396,"_path":397},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":399,"_path":400},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":402,"_path":403},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":405,"_path":406},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":408,"_path":409},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":411,"_path":412},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":414,"_path":415},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":417,"_path":418},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":420,"_path":421},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":423,"_path":424},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":426,"_path":427},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":429,"_path":430},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":432,"_path":433},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":435,"_path":436},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":438,"_path":439},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":441,"_path":442},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":444,"_path":445},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":447,"_path":448},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":450,"_path":451},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":453,"_path":454},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":456,"_path":457},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":459,"_path":460},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":462,"_path":463},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":465,"_path":466},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":468,"_path":469},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":471,"_path":472},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":474,"_path":475},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":477,"_path":478},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":480,"_path":481},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":483,"_path":484,"children":485},"Misc Streams","/videos/misc-streams",[486,489,492,495,497,499,502],{"title":487,"_path":488},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":490,"_path":491},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":493,"_path":494},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":477,"_path":496},"/videos/misc-streams/003-jvgiaotcerq",{"title":468,"_path":498},"/videos/misc-streams/004-ekut1koa2n8",{"title":500,"_path":501},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":503,"_path":504},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":506,"_path":507,"children":508},"Mp","/videos/mp",[509,512,515,518,521,524],{"title":510,"_path":511},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":513,"_path":514},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":516,"_path":517},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":519,"_path":520},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":522,"_path":523},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":525,"_path":526},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":528,"_path":529,"children":530},"Tim","/videos/tim",[531,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,583,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,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852],{"title":251,"_path":532},"/videos/tim/000-mvq-_s20ndk",{"title":534,"_path":535},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":537,"_path":538},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":540,"_path":541},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":543,"_path":544},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":546,"_path":547},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":549,"_path":550},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":552,"_path":553},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":555,"_path":556},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":558,"_path":559},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":561,"_path":562},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":564,"_path":565},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":567,"_path":568},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":570,"_path":571},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":573,"_path":574},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":576,"_path":577},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":579,"_path":580},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":254,"_path":582},"/videos/tim/017-m0mrligs6i0",{"title":248,"_path":584},"/videos/tim/018-hhpitreyobi",{"title":586,"_path":587},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":589,"_path":590},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":592,"_path":593},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":595,"_path":596},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":598,"_path":599},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":601,"_path":602},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":604,"_path":605},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":607,"_path":608},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":610,"_path":611},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":613,"_path":614},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":616,"_path":617},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":619,"_path":620},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":622,"_path":623},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":625,"_path":626},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":628,"_path":629},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":631,"_path":632},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":634,"_path":635},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":637,"_path":638},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":640,"_path":641},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":643,"_path":644},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":646,"_path":647},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":649,"_path":650},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":652,"_path":653},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":655,"_path":656},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":658,"_path":659},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":661,"_path":662},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":664,"_path":665},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":667,"_path":668},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":670,"_path":671},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":673,"_path":674},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":676,"_path":677},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":679,"_path":680},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":682,"_path":683},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":685,"_path":686},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":688,"_path":689},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":691,"_path":692},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":694,"_path":695},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":697,"_path":698},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":700,"_path":701},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":703,"_path":704},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":706,"_path":707},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":709,"_path":710},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":712,"_path":713},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":715,"_path":716},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":718,"_path":719},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":721,"_path":722},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":724,"_path":725},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":727,"_path":728},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":730,"_path":731},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":733,"_path":734},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":736,"_path":737},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":739,"_path":740},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":742,"_path":743},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":745,"_path":746},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":748,"_path":749},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":751,"_path":752},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":754,"_path":755},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":757,"_path":758},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":760,"_path":761},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":763,"_path":764},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":766,"_path":767},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":769,"_path":770},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":772,"_path":773},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":775,"_path":776},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":778,"_path":779},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":781,"_path":782},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":784,"_path":785},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":787,"_path":788},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":790,"_path":791},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":793,"_path":794},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":796,"_path":797},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":799,"_path":800},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":802,"_path":803},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":805,"_path":806},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":808,"_path":809},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":811,"_path":812},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":814,"_path":815},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":817,"_path":818},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":820,"_path":821},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":823,"_path":824},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":826,"_path":827},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":829,"_path":830},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":832,"_path":833},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":835,"_path":836},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":838,"_path":839},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":841,"_path":842},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":844,"_path":845},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":847,"_path":848},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":850,"_path":851},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":853,"_path":854},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":856,"_path":857,"children":858},"Uniform","/videos/uniform",[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,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027],{"title":860,"_path":861},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":863,"_path":864},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":866,"_path":867},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":869,"_path":870},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":872,"_path":873},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":875,"_path":876},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":878,"_path":879},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":881,"_path":882},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":884,"_path":885},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":887,"_path":888},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":890,"_path":891},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":893,"_path":894},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":896,"_path":897},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":899,"_path":900},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":902,"_path":903},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":905,"_path":906},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":908,"_path":909},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":911,"_path":912},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":914,"_path":915},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":917,"_path":918},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":920,"_path":921},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":923,"_path":924},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":926,"_path":927},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":929,"_path":930},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":932,"_path":933},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":935,"_path":936},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":938,"_path":939},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":941,"_path":942},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":944,"_path":945},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":947,"_path":948},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":950,"_path":951},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":953,"_path":954},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":956,"_path":957},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":959,"_path":960},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":962,"_path":963},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":965,"_path":966},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":968,"_path":969},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":971,"_path":972},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":974,"_path":975},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":977,"_path":978},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":980,"_path":981},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":983,"_path":984},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":986,"_path":987},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":989,"_path":990},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":992,"_path":993},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":995,"_path":996},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":998,"_path":999},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1001,"_path":1002},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1004,"_path":1005},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1007,"_path":1008},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1010,"_path":1011},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1013,"_path":1014},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1016,"_path":1017},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1019,"_path":1020},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1022,"_path":1023},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1025,"_path":1026},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1028,"_path":1029},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1031,"_path":1032,"children":1033},"Writing","/writing",[1034,1037,1040,1043,1046,1049,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104],{"title":1035,"_path":1036},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1038,"_path":1039},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1041,"_path":1042},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1044,"_path":1045},"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":1047,"_path":1048},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1031,"_path":1032},{"title":1051,"_path":1052},"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":1054,"_path":1055},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1057,"_path":1058},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1060,"_path":1061},"My Fitness Story","/writing/my-fitness-story",{"title":1063,"_path":1064},"New job alert!","/writing/new-job-alert",{"title":1066,"_path":1067},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1069,"_path":1070},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1072,"_path":1073},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1075,"_path":1076},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1078,"_path":1079},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1081,"_path":1082},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1084,"_path":1085},"The MACH monolith","/writing/the-mach-monolith",{"title":1087,"_path":1088},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1090,"_path":1091},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1093,"_path":1094},"This is headless 2.0","/writing/this-is-headless-20",{"title":1096,"_path":1097},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1099,"_path":1100},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1102,"_path":1103},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1105,"_path":1106},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1108,"_path":1109,"children":1110},"Speaking","/speaking",[1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342],{"title":1112,"_path":1113},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1115,"_path":1116},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1118,"_path":1119},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1121,"_path":1122},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1124,"_path":1125},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1127,"_path":1128},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1130,"_path":1131},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1133,"_path":1134},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1136,"_path":1137},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1139,"_path":1140},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1142,"_path":1143},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1145,"_path":1146},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1148,"_path":1149},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1151,"_path":1152},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1154,"_path":1155},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1157,"_path":1158},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1160,"_path":1161},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1163,"_path":1164},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1166,"_path":1167},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1169,"_path":1170},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1172,"_path":1173},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1175,"_path":1176},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1178,"_path":1179},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1181,"_path":1182},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1184,"_path":1185},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1187,"_path":1188},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1190,"_path":1191},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1193,"_path":1194},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1196,"_path":1197},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1199,"_path":1200},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1202,"_path":1203},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1205,"_path":1206},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1208,"_path":1209},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1211,"_path":1212},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1214,"_path":1215},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1217,"_path":1218},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1220,"_path":1221},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1223,"_path":1224},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1226,"_path":1227},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1229,"_path":1230},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1232,"_path":1233},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1235,"_path":1236},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1238,"_path":1239},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1241,"_path":1242},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1244,"_path":1245},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1247,"_path":1248},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1250,"_path":1251},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1253,"_path":1254},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1256,"_path":1257},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1259,"_path":1260},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1262,"_path":1263},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1265,"_path":1266},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1268,"_path":1269},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1271,"_path":1272},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1274,"_path":1275},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1277,"_path":1278},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1280,"_path":1281},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1283,"_path":1284},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1286,"_path":1287},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1289,"_path":1290},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1292,"_path":1293},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1295,"_path":1296},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1298,"_path":1299},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1301,"_path":1302},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1304,"_path":1305},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1307,"_path":1308},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1310,"_path":1311},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1313,"_path":1314},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1316,"_path":1317},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1319,"_path":1320},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1322,"_path":1323},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1325,"_path":1326},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1328,"_path":1329},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1331,"_path":1332},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1334,"_path":1335},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1337,"_path":1338},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1340,"_path":1341},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1108,"_path":1109},{"title":1344,"_path":1345},"live streams","/livestreams",{"title":1347,"_path":1348},"Press kit","/presskit",{"title":1350,"_path":1351},"Alive and kicking","/alive-and-kicking",[1353,1365,1377],{"_path":333,"_dir":141,"_draft":6,"_partial":6,"_locale":5,"title":332,"description":1354,"date":1355,"position":1356,"image":1357,"videoId":1358,"body":1359,"_type":231,"_id":1363,"_source":233,"_file":1364,"_extension":235},"Svelte is hot right now and we have invited Scott Spence to join Tim Benniks and show us how to use it with Headless CMS!\r\n\r\nTune in on Wednesday, at 4 PM CEST. \r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:23Z","000","https://i.ytimg.com/vi/eyDsTeDp-v4/maxresdefault.jpg","eyDsTeDp-v4",{"type":18,"children":1360,"toc":1361},[],{"title":5,"searchDepth":229,"depth":229,"links":1362},[],"content:3.videos:live-hygraph:000-eyDsTeDp-v4.md","3.videos/live-hygraph/000-eyDsTeDp-v4.md",{"_path":336,"_dir":141,"_draft":6,"_partial":6,"_locale":5,"title":335,"description":1366,"date":1367,"position":1368,"image":1369,"videoId":1370,"body":1371,"_type":231,"_id":1375,"_source":233,"_file":1376,"_extension":235},"This Thursday we'll have Colby Fayock from Cloudinary join Tim Benniks for an exclusive livestream to talk about integrating Cloudinary with Hygraph as a headless CMS.\n\nMost people think media on the web is not at all a concern, an image is an image right?\nWell, nope! It's actually incredibly hard to serve images in the right context:\n- Is a user on mobile?\n- How fast is their internet?\n- Do we lazy load?\n- Do we need different image formats for different screen sizes?\n- We do we have art direction for the images?\n- Where do we store the default source and where do we serve the derived images with transformations from?\n- Do we use a CDN?\n- What if an image has to be offline after a certain date due to contracts?\n- What about image quality?\n\nNeed I go on? I can, I have about 10 more problems to throw at you and we haven't even discussed videos yet... \n\nWant to know more? Join ColbyFayock and Tim Benniks on our livestream TODAY where we demo industry leader Cloudinary and how they work together with Hygraph.\r\n\r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:16Z","001","https://i.ytimg.com/vi/_Iah2t5g02o/maxresdefault.jpg","_Iah2t5g02o",{"type":18,"children":1372,"toc":1373},[],{"title":5,"searchDepth":229,"depth":229,"links":1374},[],"content:3.videos:live-hygraph:001-_Iah2t5g02o.md","3.videos/live-hygraph/001-_Iah2t5g02o.md",{"_path":339,"_dir":141,"_draft":6,"_partial":6,"_locale":5,"title":338,"description":1378,"date":1379,"position":1380,"image":1381,"videoId":1382,"body":1383,"_type":231,"_id":1387,"_source":233,"_file":1388,"_extension":235},"Want to see the magic of combining WordPress with Hygraph for ultimate power? \r\nWordPress expert Maciek joins Tim on the stream where they explore how to combine forces between WordPress and Hygraph.\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","2024-05-31T18:29:09Z","002","https://i.ytimg.com/vi/fy_w2youSBo/maxresdefault.jpg","fy_w2youSBo",{"type":18,"children":1384,"toc":1385},[],{"title":5,"searchDepth":229,"depth":229,"links":1386},[],"content:3.videos:live-hygraph:002-fy_w2youSBo.md","3.videos/live-hygraph/002-fy_w2youSBo.md",[1390,1629,2005],{"_path":1070,"_dir":1391,"_draft":6,"_partial":6,"_locale":5,"title":1069,"description":1392,"id":1393,"slug":1394,"date":1395,"image":1396,"canonical_url":1397,"tags":1398,"collection_id":1399,"body":1400,"_type":231,"_id":1627,"_source":233,"_file":1628,"_extension":235},"writing","Content management is as essential as it is complex, especially at scale. As brands grow, they often...",1683758,"the-content-graph-is-the-future","2023-12-05T10:40:00Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ilcbgm74yygk14s4g7.png","https://hygraph.com/blog/the-content-graph-is-the-future",[],22300,{"type":18,"children":1401,"toc":1617},[1402,1407,1414,1419,1424,1429,1446,1452,1457,1468,1474,1479,1484,1489,1494,1499,1507,1513,1518,1543,1549,1554,1560,1565,1570,1576,1581,1586,1591,1596,1601,1606,1612],{"type":21,"tag":30,"props":1403,"children":1404},{},[1405],{"type":34,"value":1406},"Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph.",{"type":21,"tag":1408,"props":1409,"children":1411},"h2",{"id":1410},"the-emergence-of-new-buzzwords-best-of-breed-and-composable",[1412],{"type":34,"value":1413},"The emergence of new buzzwords: best-of-breed and composable",{"type":21,"tag":30,"props":1415,"children":1416},{},[1417],{"type":34,"value":1418},"Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability.",{"type":21,"tag":30,"props":1420,"children":1421},{},[1422],{"type":34,"value":1423},"A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs.",{"type":21,"tag":30,"props":1425,"children":1426},{},[1427],{"type":34,"value":1428},"Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements.",{"type":21,"tag":1430,"props":1431,"children":1432},"blockquote",{},[1433],{"type":21,"tag":30,"props":1434,"children":1435},{},[1436,1438,1445],{"type":34,"value":1437},"If you want to learn more details about industry buzzwords, check out this ",{"type":21,"tag":73,"props":1439,"children":1442},{"href":1440,"rel":1441},"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords",[77],[1443],{"type":34,"value":1444},"blog post",{"type":34,"value":135},{"type":21,"tag":1408,"props":1447,"children":1449},{"id":1448},"its-not-all-sunshine-and-rainbows",[1450],{"type":34,"value":1451},"It’s not all sunshine and rainbows",{"type":21,"tag":30,"props":1453,"children":1454},{},[1455],{"type":34,"value":1456},"Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous.",{"type":21,"tag":30,"props":1458,"children":1459},{},[1460],{"type":21,"tag":50,"props":1461,"children":1467},{"alt":1462,"height":1463,"loading":1464,"provider":1465,"sizes":56,"src":1466,"width":11},"Composable challenges",720,"lazy","cloudinary","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgy63rwzc7dm5mnmk9wl.png",[],{"type":21,"tag":1408,"props":1469,"children":1471},{"id":1470},"introducing-the-content-graph",[1472],{"type":34,"value":1473},"Introducing the content graph",{"type":21,"tag":30,"props":1475,"children":1476},{},[1477],{"type":34,"value":1478},"The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub.",{"type":21,"tag":30,"props":1480,"children":1481},{},[1482],{"type":34,"value":1483},"The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources.",{"type":21,"tag":30,"props":1485,"children":1486},{},[1487],{"type":34,"value":1488},"In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything.",{"type":21,"tag":30,"props":1490,"children":1491},{},[1492],{"type":34,"value":1493},"An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible.",{"type":21,"tag":30,"props":1495,"children":1496},{},[1497],{"type":34,"value":1498},"To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities.",{"type":21,"tag":30,"props":1500,"children":1501},{},[1502],{"type":21,"tag":50,"props":1503,"children":1506},{"alt":1504,"height":1463,"loading":1464,"provider":1465,"sizes":56,"src":1505,"width":11},"The Contwnt Graph","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qngsih12lys9s6yww0j.png",[],{"type":21,"tag":1408,"props":1508,"children":1510},{"id":1509},"the-benefits",[1511],{"type":34,"value":1512},"The benefits",{"type":21,"tag":30,"props":1514,"children":1515},{},[1516],{"type":34,"value":1517},"Use these one-liners when you talk about this subject to your boss.",{"type":21,"tag":1519,"props":1520,"children":1521},"ul",{},[1522,1528,1533,1538],{"type":21,"tag":1523,"props":1524,"children":1525},"li",{},[1526],{"type":34,"value":1527},"The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas.",{"type":21,"tag":1523,"props":1529,"children":1530},{},[1531],{"type":34,"value":1532},"With the content graph, you query only what you need from any source and in the same unified way.",{"type":21,"tag":1523,"props":1534,"children":1535},{},[1536],{"type":34,"value":1537},"The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all.",{"type":21,"tag":1523,"props":1539,"children":1540},{},[1541],{"type":34,"value":1542},"The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple.",{"type":21,"tag":1408,"props":1544,"children":1546},{"id":1545},"challenges-and-considerations",[1547],{"type":34,"value":1548},"Challenges and considerations",{"type":21,"tag":30,"props":1550,"children":1551},{},[1552],{"type":34,"value":1553},"This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph.",{"type":21,"tag":1408,"props":1555,"children":1557},{"id":1556},"the-tech-behind-the-content-graph",[1558],{"type":34,"value":1559},"The tech behind the content graph",{"type":21,"tag":30,"props":1561,"children":1562},{},[1563],{"type":34,"value":1564},"You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL.",{"type":21,"tag":30,"props":1566,"children":1567},{},[1568],{"type":34,"value":1569},"An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it.",{"type":21,"tag":1408,"props":1571,"children":1573},{"id":1572},"a-real-life-use-case-for-the-content-graph",[1574],{"type":34,"value":1575},"A real-life use case for the content graph",{"type":21,"tag":30,"props":1577,"children":1578},{},[1579],{"type":34,"value":1580},"An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands.",{"type":21,"tag":30,"props":1582,"children":1583},{},[1584],{"type":34,"value":1585},"Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching.",{"type":21,"tag":30,"props":1587,"children":1588},{},[1589],{"type":34,"value":1590},"Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use.",{"type":21,"tag":30,"props":1592,"children":1593},{},[1594],{"type":34,"value":1595},"Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine.",{"type":21,"tag":30,"props":1597,"children":1598},{},[1599],{"type":34,"value":1600},"The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change.",{"type":21,"tag":30,"props":1602,"children":1603},{},[1604],{"type":34,"value":1605},"One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly.",{"type":21,"tag":1408,"props":1607,"children":1609},{"id":1608},"conclusion",[1610],{"type":34,"value":1611},"Conclusion",{"type":21,"tag":30,"props":1613,"children":1614},{},[1615],{"type":34,"value":1616},"The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures.",{"title":5,"searchDepth":229,"depth":229,"links":1618},[1619,1620,1621,1622,1623,1624,1625,1626],{"id":1410,"depth":229,"text":1413},{"id":1448,"depth":229,"text":1451},{"id":1470,"depth":229,"text":1473},{"id":1509,"depth":229,"text":1512},{"id":1545,"depth":229,"text":1548},{"id":1556,"depth":229,"text":1559},{"id":1572,"depth":229,"text":1575},{"id":1608,"depth":229,"text":1611},"content:4.writing:the-content-graph-is-the-future.md","4.writing/the-content-graph-is-the-future.md",{"_path":1103,"_dir":1391,"_draft":6,"_partial":6,"_locale":5,"title":1102,"description":1630,"id":1631,"slug":1632,"date":1633,"image":1634,"canonical_url":1635,"tags":1636,"collection_id":1399,"body":1637,"_type":231,"_id":2003,"_source":233,"_file":2004,"_extension":235},"Different ways of working require different approaches to content design. In this post, I will...",1664371,"what-type-of-content-organization-do-you-need","2023-11-12T09:03:33Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd58lvz3nrm8lre4gdtuw.png","https://hygraph.com/blog/what-type-of-content-organization-do-you-need",[],{"type":18,"children":1638,"toc":1983},[1639,1644,1649,1654,1662,1667,1673,1678,1683,1688,1693,1699,1704,1711,1716,1724,1730,1735,1742,1748,1753,1761,1767,1772,1777,1784,1790,1795,1800,1808,1814,1819,1824,1831,1837,1842,1848,1853,1862,1867,1875,1881,1886,1891,1899,1905,1917,1924,1929,1936,1942,1947,1955,1961,1966,1974,1978],{"type":21,"tag":30,"props":1640,"children":1641},{},[1642],{"type":34,"value":1643},"Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally.",{"type":21,"tag":30,"props":1645,"children":1646},{},[1647],{"type":34,"value":1648},"Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between.",{"type":21,"tag":30,"props":1650,"children":1651},{},[1652],{"type":34,"value":1653},"One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent.",{"type":21,"tag":30,"props":1655,"children":1656},{},[1657],{"type":21,"tag":50,"props":1658,"children":1661},{"alt":1659,"loading":1464,"provider":1465,"sizes":56,"src":1660,"width":11},"Centralized / Decentralized","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xioylw3zkxljytzhwtft.png",[],{"type":21,"tag":30,"props":1663,"children":1664},{},[1665],{"type":34,"value":1666},"Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly.",{"type":21,"tag":1408,"props":1668,"children":1670},{"id":1669},"how-to-organize-your-content-without-going-crazy",[1671],{"type":34,"value":1672},"How to organize your content without going crazy",{"type":21,"tag":30,"props":1674,"children":1675},{},[1676],{"type":34,"value":1677},"If your content flows between different systems, federation is one of the most effective ways to manage it.",{"type":21,"tag":30,"props":1679,"children":1680},{},[1681],{"type":34,"value":1682},"Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications.",{"type":21,"tag":30,"props":1684,"children":1685},{},[1686],{"type":34,"value":1687},"Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation.",{"type":21,"tag":30,"props":1689,"children":1690},{},[1691],{"type":34,"value":1692},"In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements.",{"type":21,"tag":1408,"props":1694,"children":1696},{"id":1695},"forms-of-federation",[1697],{"type":34,"value":1698},"Forms of federation",{"type":21,"tag":30,"props":1700,"children":1701},{},[1702],{"type":34,"value":1703},"There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns.",{"type":21,"tag":1705,"props":1706,"children":1708},"h3",{"id":1707},"data-stitching-and-custom-middleware",[1709],{"type":34,"value":1710},"Data stitching and custom middleware",{"type":21,"tag":30,"props":1712,"children":1713},{},[1714],{"type":34,"value":1715},"Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time.",{"type":21,"tag":30,"props":1717,"children":1718},{},[1719],{"type":21,"tag":50,"props":1720,"children":1723},{"alt":1721,"loading":1464,"provider":1465,"sizes":56,"src":1722,"width":11},"Data stitching","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iacwgoeaolz9znalbc56.png",[],{"type":21,"tag":1705,"props":1725,"children":1727},{"id":1726},"content-hub",[1728],{"type":34,"value":1729},"Content Hub",{"type":21,"tag":30,"props":1731,"children":1732},{},[1733],{"type":34,"value":1734},"A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication.",{"type":21,"tag":30,"props":1736,"children":1737},{},[1738],{"type":21,"tag":50,"props":1739,"children":1741},{"alt":1729,"loading":1464,"provider":1465,"sizes":56,"src":1740,"width":11},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc8fp49qbswr93cg5r62.png",[],{"type":21,"tag":1705,"props":1743,"children":1745},{"id":1744},"data-lake",[1746],{"type":34,"value":1747},"Data Lake",{"type":21,"tag":30,"props":1749,"children":1750},{},[1751],{"type":34,"value":1752},"A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand.",{"type":21,"tag":30,"props":1754,"children":1755},{},[1756],{"type":21,"tag":50,"props":1757,"children":1760},{"alt":1758,"loading":1464,"provider":1465,"sizes":56,"src":1759,"width":11},"Data lake","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u388o0c1oy5p0m31afl0.png",[],{"type":21,"tag":1705,"props":1762,"children":1764},{"id":1763},"content-federation",[1765],{"type":34,"value":1766},"Content Federation",{"type":21,"tag":30,"props":1768,"children":1769},{},[1770],{"type":34,"value":1771},"Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation.",{"type":21,"tag":30,"props":1773,"children":1774},{},[1775],{"type":34,"value":1776},"Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs.",{"type":21,"tag":30,"props":1778,"children":1779},{},[1780],{"type":21,"tag":50,"props":1781,"children":1783},{"alt":1766,"loading":1464,"provider":1465,"sizes":56,"src":1782,"width":11},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wsbl6uzmoscfxq31yrv.png",[],{"type":21,"tag":1705,"props":1785,"children":1787},{"id":1786},"dxo-digital-experience-orchestration",[1788],{"type":34,"value":1789},"DXO (digital experience orchestration)",{"type":21,"tag":30,"props":1791,"children":1792},{},[1793],{"type":34,"value":1794},"Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources.",{"type":21,"tag":30,"props":1796,"children":1797},{},[1798],{"type":34,"value":1799},"Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone.",{"type":21,"tag":30,"props":1801,"children":1802},{},[1803],{"type":21,"tag":50,"props":1804,"children":1807},{"alt":1805,"loading":1464,"provider":1465,"sizes":56,"src":1806,"width":11},"DXO","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfrsz1i6hjq68mbsmrui.png",[],{"type":21,"tag":1705,"props":1809,"children":1811},{"id":1810},"graphql-federation",[1812],{"type":34,"value":1813},"GraphQL Federation",{"type":21,"tag":30,"props":1815,"children":1816},{},[1817],{"type":34,"value":1818},"GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints.",{"type":21,"tag":30,"props":1820,"children":1821},{},[1822],{"type":34,"value":1823},"A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver.",{"type":21,"tag":30,"props":1825,"children":1826},{},[1827],{"type":21,"tag":50,"props":1828,"children":1830},{"alt":1813,"loading":1464,"provider":1465,"sizes":56,"src":1829,"width":11},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rtx6y1lqmon1nhe6c4t0.png",[],{"type":21,"tag":1408,"props":1832,"children":1834},{"id":1833},"which-federation-is-for-you",[1835],{"type":34,"value":1836},"Which federation is for you?",{"type":21,"tag":30,"props":1838,"children":1839},{},[1840],{"type":34,"value":1841},"Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions.",{"type":21,"tag":1705,"props":1843,"children":1845},{"id":1844},"what-is-your-digital-organization-direction-centralized-or-decentralized",[1846],{"type":34,"value":1847},"What is your digital organization direction: centralized or decentralized?",{"type":21,"tag":30,"props":1849,"children":1850},{},[1851],{"type":34,"value":1852},"The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top.",{"type":21,"tag":30,"props":1854,"children":1855},{},[1856],{"type":21,"tag":1857,"props":1858,"children":1859},"em",{},[1860],{"type":34,"value":1861},"Federation type to choose: Content Federation",{"type":21,"tag":30,"props":1863,"children":1864},{},[1865],{"type":34,"value":1866},"If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice.",{"type":21,"tag":30,"props":1868,"children":1869},{},[1870],{"type":21,"tag":1857,"props":1871,"children":1872},{},[1873],{"type":34,"value":1874},"Federation type to choose: Content Hub",{"type":21,"tag":1705,"props":1876,"children":1878},{"id":1877},"how-much-cleanup-does-your-data-need",[1879],{"type":34,"value":1880},"How much cleanup does your data need?",{"type":21,"tag":30,"props":1882,"children":1883},{},[1884],{"type":34,"value":1885},"Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails.",{"type":21,"tag":30,"props":1887,"children":1888},{},[1889],{"type":34,"value":1890},"If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph.",{"type":21,"tag":30,"props":1892,"children":1893},{},[1894],{"type":21,"tag":1857,"props":1895,"children":1896},{},[1897],{"type":34,"value":1898},"Federation type to choose: DXO, Content Federation",{"type":21,"tag":1705,"props":1900,"children":1902},{"id":1901},"how-autonomous-do-your-data-sources-need-to-be",[1903],{"type":34,"value":1904},"How autonomous do your data sources need to be?",{"type":21,"tag":30,"props":1906,"children":1907},{},[1908,1910,1915],{"type":34,"value":1909},"At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the ",{"type":21,"tag":1857,"props":1911,"children":1912},{},[1913],{"type":34,"value":1914},"autonomy",{"type":34,"value":1916}," to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below.",{"type":21,"tag":30,"props":1918,"children":1919},{},[1920],{"type":21,"tag":1857,"props":1921,"children":1922},{},[1923],{"type":34,"value":1861},{"type":21,"tag":30,"props":1925,"children":1926},{},[1927],{"type":34,"value":1928},"If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data.",{"type":21,"tag":30,"props":1930,"children":1931},{},[1932],{"type":21,"tag":1857,"props":1933,"children":1934},{},[1935],{"type":34,"value":1874},{"type":21,"tag":1705,"props":1937,"children":1939},{"id":1938},"are-you-dealing-with-big-data",[1940],{"type":34,"value":1941},"Are you dealing with big data?",{"type":21,"tag":30,"props":1943,"children":1944},{},[1945],{"type":34,"value":1946},"Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS.",{"type":21,"tag":30,"props":1948,"children":1949},{},[1950],{"type":21,"tag":1857,"props":1951,"children":1952},{},[1953],{"type":34,"value":1954},"Federation type to choose: Content Lake",{"type":21,"tag":1705,"props":1956,"children":1958},{"id":1957},"are-you-a-saas-with-multiple-tech-silos",[1959],{"type":34,"value":1960},"Are you a SaaS with multiple tech silos?",{"type":21,"tag":30,"props":1962,"children":1963},{},[1964],{"type":34,"value":1965},"If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL.",{"type":21,"tag":30,"props":1967,"children":1968},{},[1969],{"type":21,"tag":1857,"props":1970,"children":1971},{},[1972],{"type":34,"value":1973},"Federation type to choose: GraphQL Federation",{"type":21,"tag":1408,"props":1975,"children":1976},{"id":1608},[1977],{"type":34,"value":1611},{"type":21,"tag":30,"props":1979,"children":1980},{},[1981],{"type":34,"value":1982},"As always, the answer is: \"It depends\". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases.",{"title":5,"searchDepth":229,"depth":229,"links":1984},[1985,1986,1995,2002],{"id":1669,"depth":229,"text":1672},{"id":1695,"depth":229,"text":1698,"children":1987},[1988,1990,1991,1992,1993,1994],{"id":1707,"depth":1989,"text":1710},3,{"id":1726,"depth":1989,"text":1729},{"id":1744,"depth":1989,"text":1747},{"id":1763,"depth":1989,"text":1766},{"id":1786,"depth":1989,"text":1789},{"id":1810,"depth":1989,"text":1813},{"id":1833,"depth":229,"text":1836,"children":1996},[1997,1998,1999,2000,2001],{"id":1844,"depth":1989,"text":1847},{"id":1877,"depth":1989,"text":1880},{"id":1901,"depth":1989,"text":1904},{"id":1938,"depth":1989,"text":1941},{"id":1957,"depth":1989,"text":1960},{"id":1608,"depth":229,"text":1611},"content:4.writing:what-type-of-content-organization-do-you-need.md","4.writing/what-type-of-content-organization-do-you-need.md",{"_path":1091,"_dir":1391,"_draft":6,"_partial":6,"_locale":5,"title":1090,"description":2006,"id":2007,"slug":2008,"date":2009,"image":2010,"canonical_url":1440,"tags":2011,"collection_id":1399,"body":2016,"_type":231,"_id":2402,"_source":233,"_file":2403,"_extension":235},"Buzzwords are labels that describe tech approaches that become so commonplace over time that the...",1614626,"the-real-deal-about-content-management-buzzword","2023-09-28T14:43:37Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr5frm3ra3q3liidcpev.jpg",[2012,2013,2014,2015],"buzzwords","dxp","composable","cms",{"type":18,"children":2017,"toc":2388},[2018,2023,2028,2042,2054,2060,2072,2077,2121,2128,2133,2145,2150,2155,2162,2168,2182,2187,2194,2200,2212,2217,2225,2230,2235,2240,2248,2254,2266,2272,2277,2291,2297,2302,2307,2312,2335,2343,2348,2354,2359,2364,2372,2378,2383],{"type":21,"tag":30,"props":2019,"children":2020},{},[2021],{"type":34,"value":2022},"Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too.",{"type":21,"tag":30,"props":2024,"children":2025},{},[2026],{"type":34,"value":2027},"First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter.",{"type":21,"tag":30,"props":2029,"children":2030},{},[2031,2033,2040],{"type":34,"value":2032},"Do you like watching more than reading? Watch this ",{"type":21,"tag":73,"props":2034,"children":2037},{"href":2035,"rel":2036},"https://www.youtube.com/watch?v=EXzp3OkQTXk",[77],[2038],{"type":34,"value":2039},"YouTube video",{"type":34,"value":2041}," instead.",{"type":21,"tag":30,"props":2043,"children":2044},{},[2045,2047,2052],{"type":34,"value":2046},"{% embed ",{"type":21,"tag":73,"props":2048,"children":2050},{"href":2035,"rel":2049},[77],[2051],{"type":34,"value":2035},{"type":34,"value":2053}," %}",{"type":21,"tag":1408,"props":2055,"children":2057},{"id":2056},"mach",[2058],{"type":34,"value":2059},"MACH",{"type":21,"tag":30,"props":2061,"children":2062},{},[2063,2070],{"type":21,"tag":73,"props":2064,"children":2067},{"href":2065,"rel":2066},"https://hygraph.com/blog/mach-architecture",[77],[2068],{"type":34,"value":2069},"MACH architecture",{"type":34,"value":2071}," comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless.",{"type":21,"tag":30,"props":2073,"children":2074},{},[2075],{"type":34,"value":2076},"Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members.",{"type":21,"tag":1519,"props":2078,"children":2079},{},[2080,2091,2101,2111],{"type":21,"tag":1523,"props":2081,"children":2082},{},[2083,2089],{"type":21,"tag":2084,"props":2085,"children":2086},"strong",{},[2087],{"type":34,"value":2088},"Microservices",{"type":34,"value":2090}," are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures.",{"type":21,"tag":1523,"props":2092,"children":2093},{},[2094,2099],{"type":21,"tag":2084,"props":2095,"children":2096},{},[2097],{"type":34,"value":2098},"API-first",{"type":34,"value":2100}," means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications.",{"type":21,"tag":1523,"props":2102,"children":2103},{},[2104,2109],{"type":21,"tag":2084,"props":2105,"children":2106},{},[2107],{"type":34,"value":2108},"Cloud-native",{"type":34,"value":2110}," means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing.",{"type":21,"tag":1523,"props":2112,"children":2113},{},[2114,2119],{"type":21,"tag":2084,"props":2115,"children":2116},{},[2117],{"type":34,"value":2118},"Headless",{"type":34,"value":2120}," means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end.",{"type":21,"tag":30,"props":2122,"children":2123},{},[2124],{"type":21,"tag":50,"props":2125,"children":2127},{"alt":2056,"loading":1464,"provider":1465,"sizes":56,"src":2126,"width":11},"https://media.graphassets.com/jZfjXdJMSGTG1gLrwGQQ",[],{"type":21,"tag":1408,"props":2129,"children":2130},{"id":2014},[2131],{"type":34,"value":2132},"Composable",{"type":21,"tag":30,"props":2134,"children":2135},{},[2136,2143],{"type":21,"tag":73,"props":2137,"children":2140},{"href":2138,"rel":2139},"https://hygraph.com/blog/composable-architecture",[77],[2141],{"type":34,"value":2142},"Composable architecture",{"type":34,"value":2144}," refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems.",{"type":21,"tag":30,"props":2146,"children":2147},{},[2148],{"type":34,"value":2149},"While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first \"A\" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware.",{"type":21,"tag":30,"props":2151,"children":2152},{},[2153],{"type":34,"value":2154},"Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions.",{"type":21,"tag":30,"props":2156,"children":2157},{},[2158],{"type":21,"tag":50,"props":2159,"children":2161},{"alt":2014,"loading":1464,"provider":1465,"sizes":56,"src":2160,"width":11},"https://media.graphassets.com/D2oCAxwTpuhKfZ5xwEB0",[],{"type":21,"tag":1408,"props":2163,"children":2165},{"id":2164},"dxp-digital-experience-platform",[2166],{"type":34,"value":2167},"DXP (Digital Experience Platform)",{"type":21,"tag":30,"props":2169,"children":2170},{},[2171,2173,2180],{"type":34,"value":2172},"A ",{"type":21,"tag":73,"props":2174,"children":2177},{"href":2175,"rel":2176},"https://hygraph.com/blog/what-is-a-dxp",[77],[2178],{"type":34,"value":2179},"digital experience platform (DXP)",{"type":34,"value":2181}," is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences.",{"type":21,"tag":30,"props":2183,"children":2184},{},[2185],{"type":34,"value":2186},"Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies.",{"type":21,"tag":30,"props":2188,"children":2189},{},[2190],{"type":21,"tag":50,"props":2191,"children":2193},{"alt":2013,"loading":1464,"provider":1465,"sizes":56,"src":2192,"width":11},"https://media.graphassets.com/rIUS6taoQJ2pcvTDA2YZ",[],{"type":21,"tag":1408,"props":2195,"children":2197},{"id":2196},"dxc-digital-experience-composition",[2198],{"type":34,"value":2199},"DXC (Digital Experience Composition)",{"type":21,"tag":30,"props":2201,"children":2202},{},[2203,2210],{"type":21,"tag":73,"props":2204,"children":2207},{"href":2205,"rel":2206},"https://hygraph.com/blog/digital-experience-composition",[77],[2208],{"type":34,"value":2209},"Digital experience composition",{"type":34,"value":2211}," refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data.",{"type":21,"tag":30,"props":2213,"children":2214},{},[2215],{"type":34,"value":2216},"DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone.",{"type":21,"tag":30,"props":2218,"children":2219},{},[2220],{"type":21,"tag":50,"props":2221,"children":2224},{"alt":2222,"loading":1464,"provider":1465,"sizes":56,"src":2223,"width":11},"dxc","https://media.graphassets.com/irNrx7isRUKaZ0QoDnzQ",[],{"type":21,"tag":1408,"props":2226,"children":2227},{"id":1786},[2228],{"type":34,"value":2229},"DXO (Digital Experience Orchestration)",{"type":21,"tag":30,"props":2231,"children":2232},{},[2233],{"type":34,"value":2234},"Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience.",{"type":21,"tag":30,"props":2236,"children":2237},{},[2238],{"type":34,"value":2239},"DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user.",{"type":21,"tag":30,"props":2241,"children":2242},{},[2243],{"type":21,"tag":50,"props":2244,"children":2247},{"alt":2245,"loading":1464,"provider":1465,"sizes":56,"src":2246,"width":11},"dxo","https://media.graphassets.com/WgGDwsNLTTa4wAoL7WVd",[],{"type":21,"tag":1408,"props":2249,"children":2251},{"id":2250},"why-you-dont-have-to-care-about-the-buzzwords",[2252],{"type":34,"value":2253},"Why you don’t have to care about the buzzwords",{"type":21,"tag":30,"props":2255,"children":2256},{},[2257,2259,2264],{"type":34,"value":2258},"Ultimately, it is up to ",{"type":21,"tag":1857,"props":2260,"children":2261},{},[2262],{"type":34,"value":2263},"you",{"type":34,"value":2265}," to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before.",{"type":21,"tag":1705,"props":2267,"children":2269},{"id":2268},"company-maturity",[2270],{"type":34,"value":2271},"Company maturity",{"type":21,"tag":30,"props":2273,"children":2274},{},[2275],{"type":34,"value":2276},"As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases.",{"type":21,"tag":30,"props":2278,"children":2279},{},[2280,2282,2289],{"type":34,"value":2281},"However, as companies mature, they may struggle with the ",{"type":21,"tag":73,"props":2283,"children":2286},{"href":2284,"rel":2285},"https://hygraph.com/blog/monolithic-cms-limitations",[77],[2287],{"type":34,"value":2288},"limitations of these monoliths",{"type":34,"value":2290},". Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry.",{"type":21,"tag":1705,"props":2292,"children":2294},{"id":2293},"connecting-it-all",[2295],{"type":34,"value":2296},"Connecting it all",{"type":21,"tag":30,"props":2298,"children":2299},{},[2300],{"type":34,"value":2301},"Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use.",{"type":21,"tag":30,"props":2303,"children":2304},{},[2305],{"type":34,"value":2306},"The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture.",{"type":21,"tag":1705,"props":2308,"children":2309},{"id":1763},[2310],{"type":34,"value":2311},"Content federation",{"type":21,"tag":30,"props":2313,"children":2314},{},[2315,2317,2324,2326,2333],{"type":34,"value":2316},"To avoid a ",{"type":21,"tag":73,"props":2318,"children":2321},{"href":2319,"rel":2320},"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/",[77],[2322],{"type":34,"value":2323},"MACH monolith",{"type":34,"value":2325}," or ",{"type":21,"tag":73,"props":2327,"children":2330},{"href":2328,"rel":2329},"https://www.youtube.com/watch?v=so7-c2bOXpA",[77],[2331],{"type":34,"value":2332},"MACHlash",{"type":34,"value":2334},", you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems.",{"type":21,"tag":30,"props":2336,"children":2337},{},[2338],{"type":21,"tag":50,"props":2339,"children":2342},{"alt":2340,"loading":1464,"provider":1465,"sizes":56,"src":2341,"width":11},"content federation","https://media.graphassets.com/fbNw1hhTSHykSwk19ggJ",[],{"type":21,"tag":30,"props":2344,"children":2345},{},[2346],{"type":34,"value":2347},"Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information.",{"type":21,"tag":1705,"props":2349,"children":2351},{"id":2350},"after-content-federation-is-in-place",[2352],{"type":34,"value":2353},"After Content federation is in place",{"type":21,"tag":30,"props":2355,"children":2356},{},[2357],{"type":34,"value":2358},"Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later.",{"type":21,"tag":30,"props":2360,"children":2361},{},[2362],{"type":34,"value":2363},"If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool.",{"type":21,"tag":30,"props":2365,"children":2366},{},[2367],{"type":21,"tag":50,"props":2368,"children":2371},{"alt":2369,"loading":1464,"provider":1465,"sizes":56,"src":2370,"width":11},"after content federation","https://media.graphassets.com/4xZbpHRgTI2CzXQ88GG7",[],{"type":21,"tag":1408,"props":2373,"children":2375},{"id":2374},"concluding",[2376],{"type":34,"value":2377},"Concluding",{"type":21,"tag":30,"props":2379,"children":2380},{},[2381],{"type":34,"value":2382},"Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems.",{"type":21,"tag":30,"props":2384,"children":2385},{},[2386],{"type":34,"value":2387},"Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between.",{"title":5,"searchDepth":229,"depth":229,"links":2389},[2390,2391,2392,2393,2394,2395,2401],{"id":2056,"depth":229,"text":2059},{"id":2014,"depth":229,"text":2132},{"id":2164,"depth":229,"text":2167},{"id":2196,"depth":229,"text":2199},{"id":1786,"depth":229,"text":2229},{"id":2250,"depth":229,"text":2253,"children":2396},[2397,2398,2399,2400],{"id":2268,"depth":1989,"text":2271},{"id":2293,"depth":1989,"text":2296},{"id":1763,"depth":1989,"text":2311},{"id":2350,"depth":1989,"text":2353},{"id":2374,"depth":229,"text":2377},"content:4.writing:the-real-deal-about-content-management-buzzword.md","4.writing/the-real-deal-about-content-management-buzzword.md",[2405,2418,2430,2443],{"_path":1341,"_dir":2406,"_draft":6,"_partial":6,"_locale":5,"title":1340,"description":5,"conference":2407,"talk":162,"location":2408,"date":2409,"id":2410,"link":2411,"body":2412,"_type":231,"_id":2416,"_source":233,"_file":2417,"_extension":235},"speaking","CMSCamp Mallorca","Catalonia Majorica Palma Mallorca","2024-09-27","clqdq87gltsup0bvztwqw2f1v","https://mallorca.cmscamp.eu/",{"type":18,"children":2413,"toc":2414},[],{"title":5,"searchDepth":229,"depth":229,"links":2415},[],"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md",{"_path":1338,"_dir":2406,"_draft":6,"_partial":6,"_locale":5,"title":1337,"description":5,"conference":2419,"talk":162,"location":2420,"date":2421,"id":2422,"link":2423,"body":2424,"_type":231,"_id":2428,"_source":233,"_file":2429,"_extension":235},"ContentCon 2024","Austin, Texas","2024-06-05","clqdq6ui7ts730bvzmk1xw47t","https://www.contentstack.com/contentcon",{"type":18,"children":2425,"toc":2426},[],{"title":5,"searchDepth":229,"depth":229,"links":2427},[],"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md",{"_path":1335,"_dir":2406,"_draft":6,"_partial":6,"_locale":5,"title":1334,"description":5,"conference":2431,"talk":2432,"location":2433,"date":2434,"id":2435,"link":2436,"body":2437,"_type":231,"_id":2441,"_source":233,"_file":2442,"_extension":235},"DEVworld Conference 2024","Alive and Kicking - a vue into rock & roll","Amsterdam","2024-02-29","clkzot86xire30aujuy08465e","https://devworldconference.com/",{"type":18,"children":2438,"toc":2439},[],{"title":5,"searchDepth":229,"depth":229,"links":2440},[],"content:5.speaking:2024-02-29-clkzot86xire30aujuy08465e.md","5.speaking/2024-02-29-clkzot86xire30aujuy08465e.md",{"_path":1332,"_dir":2406,"_draft":6,"_partial":6,"_locale":5,"title":1331,"description":5,"conference":2444,"talk":2445,"location":2446,"date":2447,"id":2448,"link":2449,"body":2450,"_type":231,"_id":2454,"_source":233,"_file":2455,"_extension":235},"WeAreDevelopers World Congress","Alive and Kicking, a Vue into Rock & Roll","Berlin","2023-07-27","clifq4sto3xph0aw4letve613","https://www.wearedevelopers.com/world-congress",{"type":18,"children":2451,"toc":2452},[],{"title":5,"searchDepth":229,"depth":229,"links":2453},[],"content:5.speaking:2023-07-27-clifq4sto3xph0aw4letve613.md","5.speaking/2023-07-27-clifq4sto3xph0aw4letve613.md",[2457,2468,2479],{"_path":532,"_dir":190,"_draft":6,"_partial":6,"_locale":5,"title":251,"description":2458,"date":2459,"position":1356,"image":2460,"videoId":2461,"body":2462,"_type":231,"_id":2466,"_source":233,"_file":2467,"_extension":235},"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-10T07:13:06Z","https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","mvq-_s20NDk",{"type":18,"children":2463,"toc":2464},[],{"title":5,"searchDepth":229,"depth":229,"links":2465},[],"content:3.videos:tim:000-mvq-_s20NDk.md","3.videos/tim/000-mvq-_s20NDk.md",{"_path":535,"_dir":190,"_draft":6,"_partial":6,"_locale":5,"title":534,"description":2469,"date":2470,"position":1368,"image":2471,"videoId":2472,"body":2473,"_type":231,"_id":2477,"_source":233,"_file":2478,"_extension":235},"Jake Ward, the co-founder and CEO of Data Protocol, and I discuss the current state of developer advocacy in 2024 and share insights on how dev rel teams can measure their impact.\n\nFollow Jake here:\nhttps://twitter.com/Jacobmward\nhttps://dataprotocol.com\nhttps://www.linkedin.com/in/jacobmward/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://linkedin.com/in/timbenniks","2024-04-15T13:00:24Z","https://i.ytimg.com/vi/VEX0KtITib4/maxresdefault.jpg","VEX0KtITib4",{"type":18,"children":2474,"toc":2475},[],{"title":5,"searchDepth":229,"depth":229,"links":2476},[],"content:3.videos:tim:001-VEX0KtITib4.md","3.videos/tim/001-VEX0KtITib4.md",{"_path":538,"_dir":190,"_draft":6,"_partial":6,"_locale":5,"title":537,"description":2480,"date":2481,"position":1380,"image":2482,"videoId":2483,"body":2484,"_type":231,"_id":2488,"_source":233,"_file":2489,"_extension":235},"Developer relations is having a bit of a rough time right now and in this video I explain my vision on how to succeed in 2024. \n\nTL/DR: focus on developer success while they are on your platform. Set up KPIs that measure their success, so you can show impact on the potential revenue these developers might bring. \n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nLinkedIn: https://linkedin.com/in/timbenniks\nGithub: https://github.com/timbenniks","2024-04-05T06:50:24Z","https://i.ytimg.com/vi/196iQP-lHLw/maxresdefault.jpg","196iQP-lHLw",{"type":18,"children":2485,"toc":2486},[],{"title":5,"searchDepth":229,"depth":229,"links":2487},[],"content:3.videos:tim:002-196iQP-lHLw.md","3.videos/tim/002-196iQP-lHLw.md",1718484819573] \ No newline at end of file diff --git a/about/_payload.json b/about/_payload.json index 98b29bbb..4a7e0d39 100644 --- a/about/_payload.json +++ b/about/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1450},["Reactive",2],{"content-query-RizbiHReX6":3,"content-navigation-8C37fagqQL":273,"content-query-2wZXWvVFux":1386,"content-query-SvSyOqoj0l":1423},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":268,"_id":269,"_source":270,"_file":271,"_extension":272},"/about","",false,"About","About meta",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":265},"root",[22,63,168,182,250],{"type":23,"tag":24,"props":25,"children":26},"element","hero",{},[27,38,46],{"type":23,"tag":28,"props":29,"children":30},"template",{"v-slot:title":5},[31],{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":36,"value":37},"text","About Tim",{"type":23,"tag":28,"props":39,"children":40},{"v-slot:description":5},[41],{"type":23,"tag":32,"props":42,"children":43},{},[44],{"type":36,"value":45},"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR",{"type":23,"tag":28,"props":47,"children":48},{"v-slot:image":5},[49],{"type":23,"tag":32,"props":50,"children":51},{},[52],{"type":23,"tag":53,"props":54,"children":62},"img",{"alt":12,"height":55,"loading":56,"sizes":57,"src":58,"width":59,"quality":60,"format":61},618,"eager","sm:100vw","/tim_augmented.png",1440,"100","webp",[],{"type":23,"tag":64,"props":65,"children":66},"two-column",{},[67,146],{"type":23,"tag":28,"props":68,"children":69},{"v-slot:sidea":5},[70],{"type":23,"tag":71,"props":72,"children":73},"richtext",{},[74],{"type":23,"tag":28,"props":75,"children":76},{"v-slot:body":5},[77,93,131,136,141],{"type":23,"tag":32,"props":78,"children":79},{},[80,82,91],{"type":36,"value":81},"My name is Tim Benniks. I'm a Dutchman living in France where I work remotely from a farm in the countryside. I'm the Developer Relations Lead for Outreach and Awareness at ",{"type":23,"tag":83,"props":84,"children":88},"a",{"href":85,"rel":86,"title":85},"https://hygraph.com",[87],"nofollow",[89],{"type":36,"value":90},"Hygraph",{"type":36,"value":92},".",{"type":23,"tag":32,"props":94,"children":95},{},[96,98,103,105,112,114,121,123,130],{"type":36,"value":97},"Before I joined ",{"type":23,"tag":83,"props":99,"children":101},{"href":85,"rel":100,"title":85},[87],[102],{"type":36,"value":90},{"type":36,"value":104}," I worked for ",{"type":23,"tag":83,"props":106,"children":109},{"href":107,"rel":108,"title":107},"https://uniform.dev",[87],[110],{"type":36,"value":111},"Uniform",{"type":36,"value":113}," as director of developer relations and I spend about 15 years at agencies building websites for huge brands. I was global front-end director at ",{"type":23,"tag":83,"props":115,"children":118},{"href":116,"rel":117,"title":116},"https://valtech.com",[87],[119],{"type":36,"value":120},"Valtech",{"type":36,"value":122}," Principal front-end developer at ",{"type":23,"tag":83,"props":124,"children":127},{"href":125,"rel":126,"title":125},"https://akqa.com",[87],[128],{"type":36,"value":129},"AKQA",{"type":36,"value":92},{"type":23,"tag":32,"props":132,"children":133},{},[134],{"type":36,"value":135},"In 2020 I forged a new career path for myself by re-exploring my creativity. I’ve been a lifelong musician and since we moved countries many years ago, I didn’t play much. The agency life was resting heavy on my shoulders and I missed sharing with my community and being creative.",{"type":23,"tag":32,"props":137,"children":138},{},[139],{"type":36,"value":140},"I jumped right in and decided to make a new YouTube video each week and to start speaking at conferences once a month. This creative path changed my life. I learnt a lot from the developer community and I started to make a name for myself.",{"type":23,"tag":32,"props":142,"children":143},{},[144],{"type":36,"value":145},"The outcome of a year if creative work was a job at a start up where I led developer relations. Fast forward a few years and I'm now on solid ground in the start up world continuing with roles in developer relations like the one I landed at Hygraph in 2023.",{"type":23,"tag":28,"props":147,"children":148},{"v-slot:sideb":5},[149],{"type":23,"tag":150,"props":151,"children":152},"media",{},[153],{"type":23,"tag":28,"props":154,"children":155},{"v-slot:media":5},[156],{"type":23,"tag":32,"props":157,"children":158},{},[159],{"type":23,"tag":53,"props":160,"children":167},{"alt":12,"height":161,"loading":162,"sizes":163,"src":164,"width":165,"provider":166},2103,"lazy","sm:100vw md:40vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1718362826/Tim/tim-talk.png",1920,"cloudinary",[],{"type":23,"tag":24,"props":169,"children":170},{},[171],{"type":23,"tag":28,"props":172,"children":173},{"v-slot:image":5},[174],{"type":23,"tag":32,"props":175,"children":176},{},[177],{"type":23,"tag":53,"props":178,"children":181},{"alt":12,"height":55,"loading":162,"sizes":57,"src":179,"width":59,"provider":166,"quality":60,"fit":180},"https://res.cloudinary.com/dwfcofnrd/image/upload/Tim/Tim%20On%20Stage.jpg","thumbnail",[],{"type":23,"tag":64,"props":183,"children":184},{},[185,233],{"type":23,"tag":28,"props":186,"children":187},{"v-slot:sidea":5},[188,194],{"type":23,"tag":189,"props":190,"children":193},"title-block",{"tag":191,"title":192},"h3","Content creation",[],{"type":23,"tag":71,"props":195,"children":196},{},[197],{"type":23,"tag":28,"props":198,"children":199},{"v-slot:body":5},[200,205,219],{"type":23,"tag":32,"props":201,"children":202},{},[203],{"type":36,"value":204},"I love to explore my creativity by making videos, live streams and speaking. Now that virtual conferences are a thing I have specialised in making entertaining, high production value talks that I pre-record.",{"type":23,"tag":32,"props":206,"children":207},{},[208,210,217],{"type":36,"value":209},"On my ",{"type":23,"tag":83,"props":211,"children":214},{"href":212,"rel":213,"title":212},"https://youtube.com/timbenniks",[87],[215],{"type":36,"value":216},"YouTube",{"type":36,"value":218}," channel I explore web development related topics but I also conduct interviews and I try out services with live commentary.",{"type":23,"tag":32,"props":220,"children":221},{},[222,224,231],{"type":36,"value":223},"Making all these videos is lot's of work. If you like what you see, feel free to subscribe or even ",{"type":23,"tag":83,"props":225,"children":228},{"href":226,"rel":227,"title":226},"https://buymeacoff.ee/timbenniks",[87],[229],{"type":36,"value":230},"sponsor",{"type":36,"value":232}," me.",{"type":23,"tag":28,"props":234,"children":235},{"v-slot:sideb":5},[236],{"type":23,"tag":237,"props":238,"children":241},"talks",{":limit":239,":small":240},"2","true",[242],{"type":23,"tag":28,"props":243,"children":244},{"v-slot:title":5},[245],{"type":23,"tag":32,"props":246,"children":247},{},[248],{"type":36,"value":249},"Latest talks",{"type":23,"tag":251,"props":252,"children":256},"videos",{":limit":253,":small":254,"folder":255},"3","false","hygraph",[257],{"type":23,"tag":28,"props":258,"children":259},{"v-slot:title":5},[260],{"type":23,"tag":32,"props":261,"children":262},{},[263],{"type":36,"value":264},"Latest Hygraph Videos",{"title":5,"searchDepth":266,"depth":266,"links":267},2,[],"markdown","content:2.about.md","content","2.about.md","md",[274,275,1064,1141,1377,1380,1383],{"title":7,"_path":4},{"title":251,"_path":276,"children":277},"/videos",[278,297,316,361,362,414,517,540,562,890],{"title":279,"_path":280,"children":281},"Alive And Kicking","/videos/alive-and-kicking",[282,285,288,291,294],{"title":283,"_path":284},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":286,"_path":287},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":289,"_path":290},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":292,"_path":293},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":295,"_path":296},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":298,"_path":299,"children":300},"Headless Creator","/videos/headless-creator",[301,304,307,310,313],{"title":302,"_path":303},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":305,"_path":306},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":308,"_path":309},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":311,"_path":312},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":314,"_path":315},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":90,"_path":317,"children":318},"/videos/hygraph",[319,322,325,328,331,334,337,340,343,346,349,352,355,358],{"title":320,"_path":321},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":323,"_path":324},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":326,"_path":327},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":329,"_path":330},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":332,"_path":333},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":335,"_path":336},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":338,"_path":339},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":341,"_path":342},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":344,"_path":345},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":347,"_path":348},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":350,"_path":351},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":353,"_path":354},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":356,"_path":357},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":359,"_path":360},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":251,"_path":276},{"title":363,"_path":364,"children":365},"Live Hygraph","/videos/live-hygraph",[366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411],{"title":367,"_path":368},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":370,"_path":371},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":373,"_path":374},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":376,"_path":377},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":379,"_path":380},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":382,"_path":383},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":385,"_path":386},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":388,"_path":389},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":391,"_path":392},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":394,"_path":395},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":397,"_path":398},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":400,"_path":401},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":403,"_path":404},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":406,"_path":407},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":409,"_path":410},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":412,"_path":413},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":415,"_path":416,"children":417},"Live Uniform","/videos/live-uniform",[418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508,511,514],{"title":419,"_path":420},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":422,"_path":423},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":425,"_path":426},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":428,"_path":429},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":431,"_path":432},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":434,"_path":435},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":437,"_path":438},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":440,"_path":441},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":443,"_path":444},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":446,"_path":447},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":449,"_path":450},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":452,"_path":453},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":455,"_path":456},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":458,"_path":459},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":461,"_path":462},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":464,"_path":465},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":467,"_path":468},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":470,"_path":471},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":473,"_path":474},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":476,"_path":477},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":479,"_path":480},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":482,"_path":483},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":485,"_path":486},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":488,"_path":489},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":491,"_path":492},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":494,"_path":495},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":497,"_path":498},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":500,"_path":501},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":503,"_path":504},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":506,"_path":507},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":509,"_path":510},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":512,"_path":513},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":515,"_path":516},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":518,"_path":519,"children":520},"Misc Streams","/videos/misc-streams",[521,524,527,530,532,534,537],{"title":522,"_path":523},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":525,"_path":526},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":528,"_path":529},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":512,"_path":531},"/videos/misc-streams/003-jvgiaotcerq",{"title":503,"_path":533},"/videos/misc-streams/004-ekut1koa2n8",{"title":535,"_path":536},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":538,"_path":539},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":541,"_path":542,"children":543},"Mp","/videos/mp",[544,547,550,553,556,559],{"title":545,"_path":546},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":548,"_path":549},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":551,"_path":552},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":554,"_path":555},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":557,"_path":558},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":560,"_path":561},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":563,"_path":564,"children":565},"Tim","/videos/tim",[566,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,618,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887],{"title":286,"_path":567},"/videos/tim/000-mvq-_s20ndk",{"title":569,"_path":570},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":572,"_path":573},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":575,"_path":576},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":578,"_path":579},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":581,"_path":582},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":584,"_path":585},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":587,"_path":588},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":590,"_path":591},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":593,"_path":594},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":596,"_path":597},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":599,"_path":600},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":602,"_path":603},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":605,"_path":606},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":608,"_path":609},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":611,"_path":612},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":614,"_path":615},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":289,"_path":617},"/videos/tim/017-m0mrligs6i0",{"title":283,"_path":619},"/videos/tim/018-hhpitreyobi",{"title":621,"_path":622},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":624,"_path":625},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":627,"_path":628},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":630,"_path":631},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":633,"_path":634},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":636,"_path":637},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":639,"_path":640},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":642,"_path":643},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":645,"_path":646},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":648,"_path":649},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":651,"_path":652},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":654,"_path":655},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":657,"_path":658},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":660,"_path":661},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":663,"_path":664},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":666,"_path":667},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":669,"_path":670},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":672,"_path":673},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":675,"_path":676},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":678,"_path":679},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":681,"_path":682},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":684,"_path":685},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":687,"_path":688},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":690,"_path":691},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":693,"_path":694},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":696,"_path":697},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":699,"_path":700},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":702,"_path":703},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":705,"_path":706},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":708,"_path":709},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":711,"_path":712},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":714,"_path":715},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":717,"_path":718},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":720,"_path":721},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":723,"_path":724},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":726,"_path":727},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":729,"_path":730},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":732,"_path":733},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":735,"_path":736},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":738,"_path":739},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":741,"_path":742},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":744,"_path":745},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":747,"_path":748},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":750,"_path":751},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":753,"_path":754},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":756,"_path":757},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":759,"_path":760},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":762,"_path":763},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":765,"_path":766},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":768,"_path":769},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":771,"_path":772},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":774,"_path":775},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":777,"_path":778},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":780,"_path":781},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":783,"_path":784},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":786,"_path":787},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":789,"_path":790},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":792,"_path":793},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":795,"_path":796},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":798,"_path":799},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":801,"_path":802},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":804,"_path":805},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":807,"_path":808},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":810,"_path":811},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":813,"_path":814},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":816,"_path":817},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":819,"_path":820},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":822,"_path":823},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":825,"_path":826},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":828,"_path":829},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":831,"_path":832},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":834,"_path":835},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":837,"_path":838},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":840,"_path":841},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":843,"_path":844},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":846,"_path":847},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":849,"_path":850},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":852,"_path":853},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":855,"_path":856},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":858,"_path":859},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":861,"_path":862},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":864,"_path":865},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":867,"_path":868},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":870,"_path":871},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":873,"_path":874},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":876,"_path":877},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":879,"_path":880},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":882,"_path":883},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":885,"_path":886},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":888,"_path":889},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":111,"_path":891,"children":892},"/videos/uniform",[893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061],{"title":894,"_path":895},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":897,"_path":898},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":900,"_path":901},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":903,"_path":904},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":906,"_path":907},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":909,"_path":910},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":912,"_path":913},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":915,"_path":916},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":918,"_path":919},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":921,"_path":922},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":924,"_path":925},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":927,"_path":928},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":930,"_path":931},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":933,"_path":934},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":936,"_path":937},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":939,"_path":940},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":942,"_path":943},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":945,"_path":946},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":948,"_path":949},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":951,"_path":952},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":954,"_path":955},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":957,"_path":958},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":960,"_path":961},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":963,"_path":964},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":966,"_path":967},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":969,"_path":970},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":972,"_path":973},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":975,"_path":976},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":978,"_path":979},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":981,"_path":982},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":984,"_path":985},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":987,"_path":988},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":990,"_path":991},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":993,"_path":994},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":996,"_path":997},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":999,"_path":1000},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1002,"_path":1003},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1005,"_path":1006},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1008,"_path":1009},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1011,"_path":1012},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1014,"_path":1015},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1017,"_path":1018},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1020,"_path":1021},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1023,"_path":1024},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1026,"_path":1027},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1029,"_path":1030},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1032,"_path":1033},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1035,"_path":1036},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1038,"_path":1039},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1041,"_path":1042},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1044,"_path":1045},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1047,"_path":1048},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1050,"_path":1051},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1053,"_path":1054},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1056,"_path":1057},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1059,"_path":1060},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1062,"_path":1063},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1065,"_path":1066,"children":1067},"Writing","/writing",[1068,1071,1074,1077,1080,1083,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138],{"title":1069,"_path":1070},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1072,"_path":1073},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1075,"_path":1076},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1078,"_path":1079},"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":1081,"_path":1082},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1065,"_path":1066},{"title":1085,"_path":1086},"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":1088,"_path":1089},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1091,"_path":1092},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1094,"_path":1095},"My Fitness Story","/writing/my-fitness-story",{"title":1097,"_path":1098},"New job alert!","/writing/new-job-alert",{"title":1100,"_path":1101},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1103,"_path":1104},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1106,"_path":1107},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1109,"_path":1110},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1112,"_path":1113},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1115,"_path":1116},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1118,"_path":1119},"The MACH monolith","/writing/the-mach-monolith",{"title":1121,"_path":1122},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1124,"_path":1125},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1127,"_path":1128},"This is headless 2.0","/writing/this-is-headless-20",{"title":1130,"_path":1131},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1133,"_path":1134},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1136,"_path":1137},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1139,"_path":1140},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1142,"_path":1143,"children":1144},"Speaking","/speaking",[1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283,1286,1289,1292,1295,1298,1301,1304,1307,1310,1313,1316,1319,1322,1325,1328,1331,1334,1337,1340,1343,1346,1349,1352,1355,1358,1361,1364,1367,1370,1373,1376],{"title":1146,"_path":1147},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1149,"_path":1150},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1152,"_path":1153},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1155,"_path":1156},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1158,"_path":1159},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1161,"_path":1162},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1164,"_path":1165},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1167,"_path":1168},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1170,"_path":1171},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1173,"_path":1174},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1176,"_path":1177},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1179,"_path":1180},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1182,"_path":1183},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1185,"_path":1186},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1188,"_path":1189},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1191,"_path":1192},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1194,"_path":1195},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1197,"_path":1198},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1200,"_path":1201},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1203,"_path":1204},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1206,"_path":1207},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1209,"_path":1210},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1212,"_path":1213},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1215,"_path":1216},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1218,"_path":1219},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1221,"_path":1222},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1224,"_path":1225},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1227,"_path":1228},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1230,"_path":1231},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1233,"_path":1234},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1236,"_path":1237},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1239,"_path":1240},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1242,"_path":1243},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1245,"_path":1246},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1248,"_path":1249},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1251,"_path":1252},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1254,"_path":1255},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1257,"_path":1258},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1260,"_path":1261},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1263,"_path":1264},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1266,"_path":1267},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1269,"_path":1270},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1272,"_path":1273},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1275,"_path":1276},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1278,"_path":1279},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1281,"_path":1282},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1284,"_path":1285},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1287,"_path":1288},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1290,"_path":1291},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1293,"_path":1294},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1296,"_path":1297},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1299,"_path":1300},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1302,"_path":1303},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1305,"_path":1306},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1308,"_path":1309},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1311,"_path":1312},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1314,"_path":1315},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1317,"_path":1318},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1320,"_path":1321},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1323,"_path":1324},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1326,"_path":1327},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1329,"_path":1330},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1332,"_path":1333},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1335,"_path":1336},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1338,"_path":1339},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1341,"_path":1342},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1344,"_path":1345},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1347,"_path":1348},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1350,"_path":1351},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1353,"_path":1354},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1356,"_path":1357},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1359,"_path":1360},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1362,"_path":1363},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1365,"_path":1366},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1368,"_path":1369},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1371,"_path":1372},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1374,"_path":1375},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1142,"_path":1143},{"title":1378,"_path":1379},"live streams","/livestreams",{"title":1381,"_path":1382},"press kit","/presskit",{"title":1384,"_path":1385},"alive and kicking","/alive-and-kicking",[1387,1399,1411],{"_path":321,"_dir":255,"_draft":6,"_partial":6,"_locale":5,"title":320,"description":1388,"date":1389,"position":1390,"image":1391,"videoId":1392,"body":1393,"_type":268,"_id":1397,"_source":270,"_file":1398,"_extension":272},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to NuxtJS.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nuxtjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:34Z","000","https://i.ytimg.com/vi/M8QFTViZSMw/maxresdefault.jpg","M8QFTViZSMw",{"type":20,"children":1394,"toc":1395},[],{"title":5,"searchDepth":266,"depth":266,"links":1396},[],"content:3.videos:hygraph:000-M8QFTViZSMw.md","3.videos/hygraph/000-M8QFTViZSMw.md",{"_path":324,"_dir":255,"_draft":6,"_partial":6,"_locale":5,"title":323,"description":1400,"date":1401,"position":1402,"image":1403,"videoId":1404,"body":1405,"_type":268,"_id":1409,"_source":270,"_file":1410,"_extension":272},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to Astro.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/astro\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:28Z","001","https://i.ytimg.com/vi/AAHu9X5WAjY/maxresdefault.jpg","AAHu9X5WAjY",{"type":20,"children":1406,"toc":1407},[],{"title":5,"searchDepth":266,"depth":266,"links":1408},[],"content:3.videos:hygraph:001-AAHu9X5WAjY.md","3.videos/hygraph/001-AAHu9X5WAjY.md",{"_path":327,"_dir":255,"_draft":6,"_partial":6,"_locale":5,"title":326,"description":1412,"date":1413,"position":1414,"image":1415,"videoId":1416,"body":1417,"_type":268,"_id":1421,"_source":270,"_file":1422,"_extension":272},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to #Nextjs.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nFull implementation guide: https://hygraph.com/docs/implementations/next/next\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nextjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:22Z","002","https://i.ytimg.com/vi/fkSW0BFbtdo/maxresdefault.jpg","fkSW0BFbtdo",{"type":20,"children":1418,"toc":1419},[],{"title":5,"searchDepth":266,"depth":266,"links":1420},[],"content:3.videos:hygraph:002-fkSW0BFbtdo.md","3.videos/hygraph/002-fkSW0BFbtdo.md",[1424,1438],{"_path":1375,"_dir":1425,"_draft":6,"_partial":6,"_locale":5,"title":1374,"description":5,"conference":1426,"talk":1427,"location":1428,"date":1429,"id":1430,"link":1431,"body":1432,"_type":268,"_id":1436,"_source":270,"_file":1437,"_extension":272},"speaking","CMSCamp Mallorca","Alive and Kicking","Catalonia Majorica Palma Mallorca","2024-09-27","clqdq87gltsup0bvztwqw2f1v","https://mallorca.cmscamp.eu/",{"type":20,"children":1433,"toc":1434},[],{"title":5,"searchDepth":266,"depth":266,"links":1435},[],"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md",{"_path":1372,"_dir":1425,"_draft":6,"_partial":6,"_locale":5,"title":1371,"description":5,"conference":1439,"talk":1427,"location":1440,"date":1441,"id":1442,"link":1443,"body":1444,"_type":268,"_id":1448,"_source":270,"_file":1449,"_extension":272},"ContentCon 2024","Austin, Texas","2024-06-05","clqdq6ui7ts730bvzmk1xw47t","https://www.contentstack.com/contentcon",{"type":20,"children":1445,"toc":1446},[],{"title":5,"searchDepth":266,"depth":266,"links":1447},[],"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md",1718484379134] \ No newline at end of file +[{"data":1,"prerenderedAt":1450},["Reactive",2],{"content-query-RizbiHReX6":3,"content-navigation-8C37fagqQL":272,"content-query-2wZXWvVFux":1386,"content-query-SvSyOqoj0l":1423},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":267,"_id":268,"_source":269,"_file":270,"_extension":271},"/about","",false,"About Tim","I love building fancy websites, creating content, and speaking at conferences!",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":264},"root",[22,62,167,181,249],{"type":23,"tag":24,"props":25,"children":26},"element","hero",{},[27,37,45],{"type":23,"tag":28,"props":29,"children":30},"template",{"v-slot:title":5},[31],{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":36,"value":7},"text",{"type":23,"tag":28,"props":38,"children":39},{"v-slot:description":5},[40],{"type":23,"tag":32,"props":41,"children":42},{},[43],{"type":36,"value":44},"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR",{"type":23,"tag":28,"props":46,"children":47},{"v-slot:image":5},[48],{"type":23,"tag":32,"props":49,"children":50},{},[51],{"type":23,"tag":52,"props":53,"children":61},"img",{"alt":12,"height":54,"loading":55,"sizes":56,"src":57,"width":58,"quality":59,"format":60},618,"eager","sm:100vw","/tim_augmented.png",1440,"100","webp",[],{"type":23,"tag":63,"props":64,"children":65},"two-column",{},[66,145],{"type":23,"tag":28,"props":67,"children":68},{"v-slot:sidea":5},[69],{"type":23,"tag":70,"props":71,"children":72},"richtext",{},[73],{"type":23,"tag":28,"props":74,"children":75},{"v-slot:body":5},[76,92,130,135,140],{"type":23,"tag":32,"props":77,"children":78},{},[79,81,90],{"type":36,"value":80},"My name is Tim Benniks. I'm a Dutchman living in France where I work remotely from a farm in the countryside. I'm the Developer Relations Lead for Outreach and Awareness at ",{"type":23,"tag":82,"props":83,"children":87},"a",{"href":84,"rel":85,"title":84},"https://hygraph.com",[86],"nofollow",[88],{"type":36,"value":89},"Hygraph",{"type":36,"value":91},".",{"type":23,"tag":32,"props":93,"children":94},{},[95,97,102,104,111,113,120,122,129],{"type":36,"value":96},"Before I joined ",{"type":23,"tag":82,"props":98,"children":100},{"href":84,"rel":99,"title":84},[86],[101],{"type":36,"value":89},{"type":36,"value":103}," I worked for ",{"type":23,"tag":82,"props":105,"children":108},{"href":106,"rel":107,"title":106},"https://uniform.dev",[86],[109],{"type":36,"value":110},"Uniform",{"type":36,"value":112}," as director of developer relations and I spend about 15 years at agencies building websites for huge brands. I was global front-end director at ",{"type":23,"tag":82,"props":114,"children":117},{"href":115,"rel":116,"title":115},"https://valtech.com",[86],[118],{"type":36,"value":119},"Valtech",{"type":36,"value":121}," Principal front-end developer at ",{"type":23,"tag":82,"props":123,"children":126},{"href":124,"rel":125,"title":124},"https://akqa.com",[86],[127],{"type":36,"value":128},"AKQA",{"type":36,"value":91},{"type":23,"tag":32,"props":131,"children":132},{},[133],{"type":36,"value":134},"In 2020 I forged a new career path for myself by re-exploring my creativity. I’ve been a lifelong musician and since we moved countries many years ago, I didn’t play much. The agency life was resting heavy on my shoulders and I missed sharing with my community and being creative.",{"type":23,"tag":32,"props":136,"children":137},{},[138],{"type":36,"value":139},"I jumped right in and decided to make a new YouTube video each week and to start speaking at conferences once a month. This creative path changed my life. I learnt a lot from the developer community and I started to make a name for myself.",{"type":23,"tag":32,"props":141,"children":142},{},[143],{"type":36,"value":144},"The outcome of a year if creative work was a job at a start up where I led developer relations. Fast forward a few years and I'm now on solid ground in the start up world continuing with roles in developer relations like the one I landed at Hygraph in 2023.",{"type":23,"tag":28,"props":146,"children":147},{"v-slot:sideb":5},[148],{"type":23,"tag":149,"props":150,"children":151},"media",{},[152],{"type":23,"tag":28,"props":153,"children":154},{"v-slot:media":5},[155],{"type":23,"tag":32,"props":156,"children":157},{},[158],{"type":23,"tag":52,"props":159,"children":166},{"alt":12,"height":160,"loading":161,"sizes":162,"src":163,"width":164,"provider":165},2103,"lazy","sm:100vw md:40vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1718362826/Tim/tim-talk.png",1920,"cloudinary",[],{"type":23,"tag":24,"props":168,"children":169},{},[170],{"type":23,"tag":28,"props":171,"children":172},{"v-slot:image":5},[173],{"type":23,"tag":32,"props":174,"children":175},{},[176],{"type":23,"tag":52,"props":177,"children":180},{"alt":12,"height":54,"loading":161,"sizes":56,"src":178,"width":58,"provider":165,"quality":59,"fit":179},"https://res.cloudinary.com/dwfcofnrd/image/upload/Tim/Tim%20On%20Stage.jpg","thumbnail",[],{"type":23,"tag":63,"props":182,"children":183},{},[184,232],{"type":23,"tag":28,"props":185,"children":186},{"v-slot:sidea":5},[187,193],{"type":23,"tag":188,"props":189,"children":192},"title-block",{"tag":190,"title":191},"h3","Content creation",[],{"type":23,"tag":70,"props":194,"children":195},{},[196],{"type":23,"tag":28,"props":197,"children":198},{"v-slot:body":5},[199,204,218],{"type":23,"tag":32,"props":200,"children":201},{},[202],{"type":36,"value":203},"I love to explore my creativity by making videos, live streams and speaking. Now that virtual conferences are a thing I have specialised in making entertaining, high production value talks that I pre-record.",{"type":23,"tag":32,"props":205,"children":206},{},[207,209,216],{"type":36,"value":208},"On my ",{"type":23,"tag":82,"props":210,"children":213},{"href":211,"rel":212,"title":211},"https://youtube.com/timbenniks",[86],[214],{"type":36,"value":215},"YouTube",{"type":36,"value":217}," channel I explore web development related topics but I also conduct interviews and I try out services with live commentary.",{"type":23,"tag":32,"props":219,"children":220},{},[221,223,230],{"type":36,"value":222},"Making all these videos is lot's of work. If you like what you see, feel free to subscribe or even ",{"type":23,"tag":82,"props":224,"children":227},{"href":225,"rel":226,"title":225},"https://buymeacoff.ee/timbenniks",[86],[228],{"type":36,"value":229},"sponsor",{"type":36,"value":231}," me.",{"type":23,"tag":28,"props":233,"children":234},{"v-slot:sideb":5},[235],{"type":23,"tag":236,"props":237,"children":240},"talks",{":limit":238,":small":239},"2","true",[241],{"type":23,"tag":28,"props":242,"children":243},{"v-slot:title":5},[244],{"type":23,"tag":32,"props":245,"children":246},{},[247],{"type":36,"value":248},"Latest talks",{"type":23,"tag":250,"props":251,"children":255},"videos",{":limit":252,":small":253,"folder":254},"3","false","hygraph",[256],{"type":23,"tag":28,"props":257,"children":258},{"v-slot:title":5},[259],{"type":23,"tag":32,"props":260,"children":261},{},[262],{"type":36,"value":263},"Latest Hygraph Videos",{"title":5,"searchDepth":265,"depth":265,"links":266},2,[],"markdown","content:2.about.md","content","2.about.md","md",[273,274,1064,1141,1377,1380,1383],{"title":7,"_path":4},{"title":275,"_path":276,"children":277},"Videos","/videos",[278,297,316,361,362,414,517,540,562,890],{"title":279,"_path":280,"children":281},"Alive And Kicking","/videos/alive-and-kicking",[282,285,288,291,294],{"title":283,"_path":284},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":286,"_path":287},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":289,"_path":290},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":292,"_path":293},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":295,"_path":296},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":298,"_path":299,"children":300},"Headless Creator","/videos/headless-creator",[301,304,307,310,313],{"title":302,"_path":303},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":305,"_path":306},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":308,"_path":309},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":311,"_path":312},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":314,"_path":315},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":89,"_path":317,"children":318},"/videos/hygraph",[319,322,325,328,331,334,337,340,343,346,349,352,355,358],{"title":320,"_path":321},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":323,"_path":324},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":326,"_path":327},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":329,"_path":330},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":332,"_path":333},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":335,"_path":336},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":338,"_path":339},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":341,"_path":342},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":344,"_path":345},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":347,"_path":348},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":350,"_path":351},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":353,"_path":354},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":356,"_path":357},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":359,"_path":360},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":275,"_path":276},{"title":363,"_path":364,"children":365},"Live Hygraph","/videos/live-hygraph",[366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411],{"title":367,"_path":368},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":370,"_path":371},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":373,"_path":374},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":376,"_path":377},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":379,"_path":380},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":382,"_path":383},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":385,"_path":386},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":388,"_path":389},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":391,"_path":392},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":394,"_path":395},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":397,"_path":398},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":400,"_path":401},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":403,"_path":404},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":406,"_path":407},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":409,"_path":410},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":412,"_path":413},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":415,"_path":416,"children":417},"Live Uniform","/videos/live-uniform",[418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508,511,514],{"title":419,"_path":420},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":422,"_path":423},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":425,"_path":426},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":428,"_path":429},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":431,"_path":432},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":434,"_path":435},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":437,"_path":438},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":440,"_path":441},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":443,"_path":444},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":446,"_path":447},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":449,"_path":450},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":452,"_path":453},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":455,"_path":456},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":458,"_path":459},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":461,"_path":462},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":464,"_path":465},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":467,"_path":468},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":470,"_path":471},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":473,"_path":474},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":476,"_path":477},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":479,"_path":480},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":482,"_path":483},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":485,"_path":486},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":488,"_path":489},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":491,"_path":492},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":494,"_path":495},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":497,"_path":498},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":500,"_path":501},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":503,"_path":504},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":506,"_path":507},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":509,"_path":510},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":512,"_path":513},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":515,"_path":516},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":518,"_path":519,"children":520},"Misc Streams","/videos/misc-streams",[521,524,527,530,532,534,537],{"title":522,"_path":523},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":525,"_path":526},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":528,"_path":529},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":512,"_path":531},"/videos/misc-streams/003-jvgiaotcerq",{"title":503,"_path":533},"/videos/misc-streams/004-ekut1koa2n8",{"title":535,"_path":536},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":538,"_path":539},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":541,"_path":542,"children":543},"Mp","/videos/mp",[544,547,550,553,556,559],{"title":545,"_path":546},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":548,"_path":549},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":551,"_path":552},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":554,"_path":555},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":557,"_path":558},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":560,"_path":561},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":563,"_path":564,"children":565},"Tim","/videos/tim",[566,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,618,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887],{"title":286,"_path":567},"/videos/tim/000-mvq-_s20ndk",{"title":569,"_path":570},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":572,"_path":573},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":575,"_path":576},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":578,"_path":579},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":581,"_path":582},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":584,"_path":585},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":587,"_path":588},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":590,"_path":591},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":593,"_path":594},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":596,"_path":597},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":599,"_path":600},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":602,"_path":603},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":605,"_path":606},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":608,"_path":609},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":611,"_path":612},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":614,"_path":615},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":289,"_path":617},"/videos/tim/017-m0mrligs6i0",{"title":283,"_path":619},"/videos/tim/018-hhpitreyobi",{"title":621,"_path":622},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":624,"_path":625},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":627,"_path":628},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":630,"_path":631},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":633,"_path":634},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":636,"_path":637},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":639,"_path":640},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":642,"_path":643},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":645,"_path":646},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":648,"_path":649},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":651,"_path":652},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":654,"_path":655},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":657,"_path":658},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":660,"_path":661},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":663,"_path":664},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":666,"_path":667},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":669,"_path":670},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":672,"_path":673},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":675,"_path":676},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":678,"_path":679},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":681,"_path":682},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":684,"_path":685},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":687,"_path":688},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":690,"_path":691},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":693,"_path":694},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":696,"_path":697},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":699,"_path":700},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":702,"_path":703},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":705,"_path":706},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":708,"_path":709},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":711,"_path":712},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":714,"_path":715},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":717,"_path":718},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":720,"_path":721},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":723,"_path":724},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":726,"_path":727},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":729,"_path":730},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":732,"_path":733},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":735,"_path":736},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":738,"_path":739},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":741,"_path":742},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":744,"_path":745},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":747,"_path":748},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":750,"_path":751},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":753,"_path":754},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":756,"_path":757},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":759,"_path":760},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":762,"_path":763},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":765,"_path":766},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":768,"_path":769},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":771,"_path":772},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":774,"_path":775},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":777,"_path":778},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":780,"_path":781},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":783,"_path":784},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":786,"_path":787},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":789,"_path":790},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":792,"_path":793},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":795,"_path":796},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":798,"_path":799},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":801,"_path":802},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":804,"_path":805},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":807,"_path":808},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":810,"_path":811},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":813,"_path":814},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":816,"_path":817},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":819,"_path":820},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":822,"_path":823},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":825,"_path":826},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":828,"_path":829},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":831,"_path":832},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":834,"_path":835},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":837,"_path":838},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":840,"_path":841},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":843,"_path":844},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":846,"_path":847},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":849,"_path":850},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":852,"_path":853},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":855,"_path":856},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":858,"_path":859},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":861,"_path":862},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":864,"_path":865},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":867,"_path":868},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":870,"_path":871},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":873,"_path":874},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":876,"_path":877},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":879,"_path":880},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":882,"_path":883},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":885,"_path":886},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":888,"_path":889},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":110,"_path":891,"children":892},"/videos/uniform",[893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061],{"title":894,"_path":895},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":897,"_path":898},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":900,"_path":901},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":903,"_path":904},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":906,"_path":907},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":909,"_path":910},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":912,"_path":913},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":915,"_path":916},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":918,"_path":919},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":921,"_path":922},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":924,"_path":925},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":927,"_path":928},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":930,"_path":931},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":933,"_path":934},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":936,"_path":937},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":939,"_path":940},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":942,"_path":943},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":945,"_path":946},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":948,"_path":949},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":951,"_path":952},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":954,"_path":955},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":957,"_path":958},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":960,"_path":961},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":963,"_path":964},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":966,"_path":967},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":969,"_path":970},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":972,"_path":973},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":975,"_path":976},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":978,"_path":979},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":981,"_path":982},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":984,"_path":985},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":987,"_path":988},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":990,"_path":991},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":993,"_path":994},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":996,"_path":997},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":999,"_path":1000},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1002,"_path":1003},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1005,"_path":1006},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1008,"_path":1009},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1011,"_path":1012},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1014,"_path":1015},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1017,"_path":1018},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1020,"_path":1021},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1023,"_path":1024},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1026,"_path":1027},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1029,"_path":1030},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1032,"_path":1033},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1035,"_path":1036},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1038,"_path":1039},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1041,"_path":1042},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1044,"_path":1045},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1047,"_path":1048},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1050,"_path":1051},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1053,"_path":1054},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1056,"_path":1057},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1059,"_path":1060},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1062,"_path":1063},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1065,"_path":1066,"children":1067},"Writing","/writing",[1068,1071,1074,1077,1080,1083,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138],{"title":1069,"_path":1070},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1072,"_path":1073},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1075,"_path":1076},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1078,"_path":1079},"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":1081,"_path":1082},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1065,"_path":1066},{"title":1085,"_path":1086},"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":1088,"_path":1089},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1091,"_path":1092},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1094,"_path":1095},"My Fitness Story","/writing/my-fitness-story",{"title":1097,"_path":1098},"New job alert!","/writing/new-job-alert",{"title":1100,"_path":1101},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1103,"_path":1104},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1106,"_path":1107},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1109,"_path":1110},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1112,"_path":1113},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1115,"_path":1116},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1118,"_path":1119},"The MACH monolith","/writing/the-mach-monolith",{"title":1121,"_path":1122},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1124,"_path":1125},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1127,"_path":1128},"This is headless 2.0","/writing/this-is-headless-20",{"title":1130,"_path":1131},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1133,"_path":1134},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1136,"_path":1137},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1139,"_path":1140},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1142,"_path":1143,"children":1144},"Speaking","/speaking",[1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283,1286,1289,1292,1295,1298,1301,1304,1307,1310,1313,1316,1319,1322,1325,1328,1331,1334,1337,1340,1343,1346,1349,1352,1355,1358,1361,1364,1367,1370,1373,1376],{"title":1146,"_path":1147},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1149,"_path":1150},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1152,"_path":1153},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1155,"_path":1156},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1158,"_path":1159},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1161,"_path":1162},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1164,"_path":1165},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1167,"_path":1168},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1170,"_path":1171},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1173,"_path":1174},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1176,"_path":1177},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1179,"_path":1180},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1182,"_path":1183},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1185,"_path":1186},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1188,"_path":1189},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1191,"_path":1192},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1194,"_path":1195},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1197,"_path":1198},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1200,"_path":1201},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1203,"_path":1204},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1206,"_path":1207},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1209,"_path":1210},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1212,"_path":1213},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1215,"_path":1216},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1218,"_path":1219},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1221,"_path":1222},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1224,"_path":1225},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1227,"_path":1228},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1230,"_path":1231},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1233,"_path":1234},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1236,"_path":1237},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1239,"_path":1240},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1242,"_path":1243},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1245,"_path":1246},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1248,"_path":1249},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1251,"_path":1252},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1254,"_path":1255},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1257,"_path":1258},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1260,"_path":1261},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1263,"_path":1264},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1266,"_path":1267},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1269,"_path":1270},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1272,"_path":1273},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1275,"_path":1276},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1278,"_path":1279},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1281,"_path":1282},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1284,"_path":1285},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1287,"_path":1288},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1290,"_path":1291},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1293,"_path":1294},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1296,"_path":1297},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1299,"_path":1300},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1302,"_path":1303},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1305,"_path":1306},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1308,"_path":1309},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1311,"_path":1312},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1314,"_path":1315},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1317,"_path":1318},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1320,"_path":1321},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1323,"_path":1324},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1326,"_path":1327},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1329,"_path":1330},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1332,"_path":1333},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1335,"_path":1336},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1338,"_path":1339},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1341,"_path":1342},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1344,"_path":1345},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1347,"_path":1348},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1350,"_path":1351},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1353,"_path":1354},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1356,"_path":1357},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1359,"_path":1360},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1362,"_path":1363},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1365,"_path":1366},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1368,"_path":1369},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1371,"_path":1372},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1374,"_path":1375},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1142,"_path":1143},{"title":1378,"_path":1379},"live streams","/livestreams",{"title":1381,"_path":1382},"Press kit","/presskit",{"title":1384,"_path":1385},"Alive and kicking","/alive-and-kicking",[1387,1399,1411],{"_path":321,"_dir":254,"_draft":6,"_partial":6,"_locale":5,"title":320,"description":1388,"date":1389,"position":1390,"image":1391,"videoId":1392,"body":1393,"_type":267,"_id":1397,"_source":269,"_file":1398,"_extension":271},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to NuxtJS.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nuxtjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:34Z","000","https://i.ytimg.com/vi/M8QFTViZSMw/maxresdefault.jpg","M8QFTViZSMw",{"type":20,"children":1394,"toc":1395},[],{"title":5,"searchDepth":265,"depth":265,"links":1396},[],"content:3.videos:hygraph:000-M8QFTViZSMw.md","3.videos/hygraph/000-M8QFTViZSMw.md",{"_path":324,"_dir":254,"_draft":6,"_partial":6,"_locale":5,"title":323,"description":1400,"date":1401,"position":1402,"image":1403,"videoId":1404,"body":1405,"_type":267,"_id":1409,"_source":269,"_file":1410,"_extension":271},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to Astro.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/astro\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:28Z","001","https://i.ytimg.com/vi/AAHu9X5WAjY/maxresdefault.jpg","AAHu9X5WAjY",{"type":20,"children":1406,"toc":1407},[],{"title":5,"searchDepth":265,"depth":265,"links":1408},[],"content:3.videos:hygraph:001-AAHu9X5WAjY.md","3.videos/hygraph/001-AAHu9X5WAjY.md",{"_path":327,"_dir":254,"_draft":6,"_partial":6,"_locale":5,"title":326,"description":1412,"date":1413,"position":1414,"image":1415,"videoId":1416,"body":1417,"_type":267,"_id":1421,"_source":269,"_file":1422,"_extension":271},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to #Nextjs.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nFull implementation guide: https://hygraph.com/docs/implementations/next/next\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nextjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:22Z","002","https://i.ytimg.com/vi/fkSW0BFbtdo/maxresdefault.jpg","fkSW0BFbtdo",{"type":20,"children":1418,"toc":1419},[],{"title":5,"searchDepth":265,"depth":265,"links":1420},[],"content:3.videos:hygraph:002-fkSW0BFbtdo.md","3.videos/hygraph/002-fkSW0BFbtdo.md",[1424,1438],{"_path":1375,"_dir":1425,"_draft":6,"_partial":6,"_locale":5,"title":1374,"description":5,"conference":1426,"talk":1427,"location":1428,"date":1429,"id":1430,"link":1431,"body":1432,"_type":267,"_id":1436,"_source":269,"_file":1437,"_extension":271},"speaking","CMSCamp Mallorca","Alive and Kicking","Catalonia Majorica Palma Mallorca","2024-09-27","clqdq87gltsup0bvztwqw2f1v","https://mallorca.cmscamp.eu/",{"type":20,"children":1433,"toc":1434},[],{"title":5,"searchDepth":265,"depth":265,"links":1435},[],"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md",{"_path":1372,"_dir":1425,"_draft":6,"_partial":6,"_locale":5,"title":1371,"description":5,"conference":1439,"talk":1427,"location":1440,"date":1441,"id":1442,"link":1443,"body":1444,"_type":267,"_id":1448,"_source":269,"_file":1449,"_extension":271},"ContentCon 2024","Austin, Texas","2024-06-05","clqdq6ui7ts730bvzmk1xw47t","https://www.contentstack.com/contentcon",{"type":20,"children":1445,"toc":1446},[],{"title":5,"searchDepth":265,"depth":265,"links":1447},[],"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md",1718484820654] \ No newline at end of file diff --git a/about/index.html b/about/index.html index 603e82ec..f6840542 100644 --- a/about/index.html +++ b/about/index.html @@ -1,17 +1,17 @@ -About +About Tim - - - + + + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + - - - - -
Tim Benniks

About Tim

DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR

My name is Tim Benniks. I'm a Dutchman living in France where I work remotely from a farm in the countryside. I'm the Developer Relations Lead for Outreach and Awareness at Hygraph.

Before I joined Hygraph I worked for Uniform as director of developer relations and I spend about 15 years at agencies building websites for huge brands. I was global front-end director at Valtech Principal front-end developer at AKQA.

In 2020 I forged a new career path for myself by re-exploring my creativity. I’ve been a lifelong musician and since we moved countries many years ago, I didn’t play much. The agency life was resting heavy on my shoulders and I missed sharing with my community and being creative.

I jumped right in and decided to make a new YouTube video each week and to start speaking at conferences once a month. This creative path changed my life. I learnt a lot from the developer community and I started to make a name for myself.

The outcome of a year if creative work was a job at a start up where I led developer relations. Fast forward a few years and I'm now on solid ground in the start up world continuing with roles in developer relations like the one I landed at Hygraph in 2023.

Tim Benniks

Tim Benniks

Content creation

I love to explore my creativity by making videos, live streams and speaking. Now that virtual conferences are a thing I have specialised in making entertaining, high production value talks that I pre-record.

On my YouTube channel I explore web development related topics but I also conduct interviews and I try out services with live commentary.

Making all these videos is lot's of work. If you like what you see, feel free to subscribe or even sponsor me.

- \ No newline at end of file + + + + +
Tim Benniks

About Tim

DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR

My name is Tim Benniks. I'm a Dutchman living in France where I work remotely from a farm in the countryside. I'm the Developer Relations Lead for Outreach and Awareness at Hygraph.

Before I joined Hygraph I worked for Uniform as director of developer relations and I spend about 15 years at agencies building websites for huge brands. I was global front-end director at Valtech Principal front-end developer at AKQA.

In 2020 I forged a new career path for myself by re-exploring my creativity. I’ve been a lifelong musician and since we moved countries many years ago, I didn’t play much. The agency life was resting heavy on my shoulders and I missed sharing with my community and being creative.

I jumped right in and decided to make a new YouTube video each week and to start speaking at conferences once a month. This creative path changed my life. I learnt a lot from the developer community and I started to make a name for myself.

The outcome of a year if creative work was a job at a start up where I led developer relations. Fast forward a few years and I'm now on solid ground in the start up world continuing with roles in developer relations like the one I landed at Hygraph in 2023.

Tim Benniks

Tim Benniks

Content creation

I love to explore my creativity by making videos, live streams and speaking. Now that virtual conferences are a thing I have specialised in making entertaining, high production value talks that I pre-record.

On my YouTube channel I explore web development related topics but I also conduct interviews and I try out services with live commentary.

Making all these videos is lot's of work. If you like what you see, feel free to subscribe or even sponsor me.

+ \ No newline at end of file diff --git a/alive-and-kicking/_payload.json b/alive-and-kicking/_payload.json index e04b2106..3df4486b 100644 --- a/alive-and-kicking/_payload.json +++ b/alive-and-kicking/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1365},["Reactive",2],{"content-query-Jh4Cwv9apa":3,"content-navigation-8C37fagqQL":190,"content-query-LB5sWoDPgJ":1305},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":185,"_id":186,"_source":187,"_file":188,"_extension":189},"/alive-and-kicking","",false,"alive and kicking","alive and kicking desc",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":182},"root",[22,64,70,87,101,153,166],{"type":23,"tag":24,"props":25,"children":26},"element","hero",{},[27,38,46],{"type":23,"tag":28,"props":29,"children":30},"template",{"v-slot:title":5},[31],{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":36,"value":37},"text","Alive and Kicking",{"type":23,"tag":28,"props":39,"children":40},{"v-slot:description":5},[41],{"type":23,"tag":32,"props":42,"children":43},{},[44],{"type":36,"value":45},"A GUITAR KARAOKE EXPERIENCE WITH COMPOSABLE ARCHITECTURE",{"type":23,"tag":28,"props":47,"children":48},{"v-slot:image":5},[49],{"type":23,"tag":32,"props":50,"children":51},{},[52],{"type":23,"tag":53,"props":54,"children":63},"img",{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":59,"width":60,"fit":61,"quality":62},618,"lazy","cloudinary","sm:100vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1718459447/Tim/contentcon-tim.png",1440,"cover","100",[],{"type":23,"tag":65,"props":66,"children":69},"title-block",{"tag":67,"title":68},"h3","Rock & Roll in the browser",[],{"type":23,"tag":71,"props":72,"children":73},"richtext",{},[74],{"type":23,"tag":28,"props":75,"children":76},{"v-slot:body":5},[77,82],{"type":23,"tag":32,"props":78,"children":79},{},[80],{"type":36,"value":81},"Get ready to rock out at your next tech conference! I've created an electrifying browser-based karaoke experience tailored explicitly for rock & roll guitar. Using the innovative power of Vue, Nuxt, and webmidi, everything from the backing tracks to the guitar amp presets is dynamically controlled.",{"type":23,"tag":32,"props":83,"children":84},{},[85],{"type":36,"value":86},"And the best part? You, the audience, get to participate too! By logging in with Twitter or Github, you can live-vote what songs I should play next, making this a fully interactive and unforgettable experience.",{"type":23,"tag":24,"props":88,"children":89},{},[90],{"type":23,"tag":28,"props":91,"children":92},{"v-slot:image":5},[93],{"type":23,"tag":32,"props":94,"children":95},{},[96],{"type":23,"tag":53,"props":97,"children":100},{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":98,"width":60,"fit":99,"quality":62},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948358/Alive%20and%20Kicking/104649HDV09996-Enhanced-NR.jpg","thumbnail",[],{"type":23,"tag":102,"props":103,"children":104},"two-column",{},[105,133],{"type":23,"tag":28,"props":106,"children":107},{"v-slot:sidea":5},[108,112],{"type":23,"tag":65,"props":109,"children":111},{"tag":67,"title":110},"Share your vote",[],{"type":23,"tag":71,"props":113,"children":114},{},[115],{"type":23,"tag":28,"props":116,"children":117},{"v-slot:body":5},[118,123,128],{"type":23,"tag":32,"props":119,"children":120},{},[121],{"type":36,"value":122},"You, the audience, get to participate too! By logging in with your Twitter or Github account, you can live-vote what songs I should play next during my guitar karaoke performance.",{"type":23,"tag":32,"props":124,"children":125},{},[126],{"type":36,"value":127},"But that's not all - every vote you cast will be displayed on the big screen as a bouncing ball, making you a part of the talk. You vote, I play - let's make this a night to remember!",{"type":23,"tag":32,"props":129,"children":130},{},[131],{"type":36,"value":132},"After voting for your favorite song, you can share a personalized image of the song and your profile picture on your social media accounts.",{"type":23,"tag":28,"props":134,"children":135},{"v-slot:sideb":5},[136],{"type":23,"tag":137,"props":138,"children":139},"media",{},[140],{"type":23,"tag":28,"props":141,"children":142},{"v-slot:media":5},[143],{"type":23,"tag":32,"props":144,"children":145},{},[146],{"type":23,"tag":53,"props":147,"children":152},{"alt":12,"height":148,"loading":56,"provider":57,"sizes":149,"src":150,"width":151},1080,"sm:100vw md:40vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1718461639/share_ddu23k.jpg",1920,[],{"type":23,"tag":24,"props":154,"children":155},{},[156],{"type":23,"tag":28,"props":157,"children":158},{"v-slot:image":5},[159],{"type":23,"tag":32,"props":160,"children":161},{},[162],{"type":23,"tag":53,"props":163,"children":165},{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":164,"width":60,"fit":99,"quality":62},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948347/Alive%20and%20Kicking/102217HDV09938-Enhanced-NR.jpg",[],{"type":23,"tag":167,"props":168,"children":173},"videos",{":extras":169,":limit":170,":small":171,"folder":172},"true","6","false","alive-and-kicking",[174],{"type":23,"tag":28,"props":175,"children":176},{"v-slot:title":5},[177],{"type":23,"tag":32,"props":178,"children":179},{},[180],{"type":36,"value":181},"Alive and Kicking Videos",{"title":5,"searchDepth":183,"depth":183,"links":184},2,[],"markdown","content:8.alive-and-kicking.md","content","8.alive-and-kicking.md","md",[191,194,985,1062,1298,1301,1304],{"title":192,"_path":193},"About","/about",{"title":167,"_path":195,"children":196},"/videos",[197,216,235,281,282,334,437,460,482,810],{"title":198,"_path":199,"children":200},"Alive And Kicking","/videos/alive-and-kicking",[201,204,207,210,213],{"title":202,"_path":203},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":205,"_path":206},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":208,"_path":209},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":211,"_path":212},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":214,"_path":215},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":217,"_path":218,"children":219},"Headless Creator","/videos/headless-creator",[220,223,226,229,232],{"title":221,"_path":222},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":224,"_path":225},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":227,"_path":228},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":230,"_path":231},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":233,"_path":234},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":236,"_path":237,"children":238},"Hygraph","/videos/hygraph",[239,242,245,248,251,254,257,260,263,266,269,272,275,278],{"title":240,"_path":241},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":243,"_path":244},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":246,"_path":247},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":249,"_path":250},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":252,"_path":253},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":255,"_path":256},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":258,"_path":259},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":261,"_path":262},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":264,"_path":265},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":267,"_path":268},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":270,"_path":271},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":273,"_path":274},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":276,"_path":277},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":279,"_path":280},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":167,"_path":195},{"title":283,"_path":284,"children":285},"Live Hygraph","/videos/live-hygraph",[286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331],{"title":287,"_path":288},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":290,"_path":291},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":293,"_path":294},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":296,"_path":297},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":299,"_path":300},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":302,"_path":303},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":305,"_path":306},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":308,"_path":309},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":311,"_path":312},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":314,"_path":315},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":317,"_path":318},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":320,"_path":321},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":323,"_path":324},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":326,"_path":327},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":329,"_path":330},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":332,"_path":333},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":335,"_path":336,"children":337},"Live Uniform","/videos/live-uniform",[338,341,344,347,350,353,356,359,362,365,368,371,374,377,380,383,386,389,392,395,398,401,404,407,410,413,416,419,422,425,428,431,434],{"title":339,"_path":340},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":342,"_path":343},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":345,"_path":346},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":348,"_path":349},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":351,"_path":352},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":354,"_path":355},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":357,"_path":358},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":360,"_path":361},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":363,"_path":364},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":366,"_path":367},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":369,"_path":370},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":372,"_path":373},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":375,"_path":376},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":378,"_path":379},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":381,"_path":382},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":384,"_path":385},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":387,"_path":388},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":390,"_path":391},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":393,"_path":394},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":396,"_path":397},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":399,"_path":400},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":402,"_path":403},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":405,"_path":406},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":408,"_path":409},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":411,"_path":412},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":414,"_path":415},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":417,"_path":418},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":420,"_path":421},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":423,"_path":424},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":426,"_path":427},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":429,"_path":430},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":432,"_path":433},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":435,"_path":436},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":438,"_path":439,"children":440},"Misc Streams","/videos/misc-streams",[441,444,447,450,452,454,457],{"title":442,"_path":443},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":445,"_path":446},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":448,"_path":449},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":432,"_path":451},"/videos/misc-streams/003-jvgiaotcerq",{"title":423,"_path":453},"/videos/misc-streams/004-ekut1koa2n8",{"title":455,"_path":456},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":458,"_path":459},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":461,"_path":462,"children":463},"Mp","/videos/mp",[464,467,470,473,476,479],{"title":465,"_path":466},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":468,"_path":469},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":471,"_path":472},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":474,"_path":475},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":477,"_path":478},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":480,"_path":481},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":483,"_path":484,"children":485},"Tim","/videos/tim",[486,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,538,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,780,783,786,789,792,795,798,801,804,807],{"title":205,"_path":487},"/videos/tim/000-mvq-_s20ndk",{"title":489,"_path":490},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":492,"_path":493},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":495,"_path":496},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":498,"_path":499},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":501,"_path":502},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":504,"_path":505},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":507,"_path":508},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":510,"_path":511},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":513,"_path":514},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":516,"_path":517},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":519,"_path":520},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":522,"_path":523},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":525,"_path":526},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":528,"_path":529},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":531,"_path":532},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":534,"_path":535},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":208,"_path":537},"/videos/tim/017-m0mrligs6i0",{"title":202,"_path":539},"/videos/tim/018-hhpitreyobi",{"title":541,"_path":542},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":544,"_path":545},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":547,"_path":548},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":550,"_path":551},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":553,"_path":554},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":556,"_path":557},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":559,"_path":560},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":562,"_path":563},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":565,"_path":566},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":568,"_path":569},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":571,"_path":572},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":574,"_path":575},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":577,"_path":578},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":580,"_path":581},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":583,"_path":584},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":586,"_path":587},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":589,"_path":590},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":592,"_path":593},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":595,"_path":596},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":598,"_path":599},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":601,"_path":602},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":604,"_path":605},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":607,"_path":608},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":610,"_path":611},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":613,"_path":614},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":616,"_path":617},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":619,"_path":620},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":622,"_path":623},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":625,"_path":626},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":628,"_path":629},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":631,"_path":632},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":634,"_path":635},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":637,"_path":638},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":640,"_path":641},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":643,"_path":644},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":646,"_path":647},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":649,"_path":650},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":652,"_path":653},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":655,"_path":656},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":658,"_path":659},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":661,"_path":662},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":664,"_path":665},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":667,"_path":668},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":670,"_path":671},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":673,"_path":674},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":676,"_path":677},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":679,"_path":680},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":682,"_path":683},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":685,"_path":686},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":688,"_path":689},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":691,"_path":692},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":694,"_path":695},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":697,"_path":698},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":700,"_path":701},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":703,"_path":704},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":706,"_path":707},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":709,"_path":710},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":712,"_path":713},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":715,"_path":716},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":718,"_path":719},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":721,"_path":722},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":724,"_path":725},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":727,"_path":728},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":730,"_path":731},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":733,"_path":734},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":736,"_path":737},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":739,"_path":740},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":742,"_path":743},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":745,"_path":746},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":748,"_path":749},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":751,"_path":752},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":754,"_path":755},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":757,"_path":758},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":760,"_path":761},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":763,"_path":764},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":766,"_path":767},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":769,"_path":770},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":772,"_path":773},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":775,"_path":776},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":778,"_path":779},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":781,"_path":782},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":784,"_path":785},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":787,"_path":788},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":790,"_path":791},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":793,"_path":794},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":796,"_path":797},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":799,"_path":800},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":802,"_path":803},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":805,"_path":806},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":808,"_path":809},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":811,"_path":812,"children":813},"Uniform","/videos/uniform",[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,952,955,958,961,964,967,970,973,976,979,982],{"title":815,"_path":816},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":818,"_path":819},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":821,"_path":822},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":824,"_path":825},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":827,"_path":828},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":830,"_path":831},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":833,"_path":834},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":836,"_path":837},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":839,"_path":840},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":842,"_path":843},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":845,"_path":846},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":848,"_path":849},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":851,"_path":852},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":854,"_path":855},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":857,"_path":858},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":860,"_path":861},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":863,"_path":864},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":866,"_path":867},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":869,"_path":870},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":872,"_path":873},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":875,"_path":876},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":878,"_path":879},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":881,"_path":882},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":884,"_path":885},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":887,"_path":888},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":890,"_path":891},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":893,"_path":894},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":896,"_path":897},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":899,"_path":900},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":902,"_path":903},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":905,"_path":906},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":908,"_path":909},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":911,"_path":912},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":914,"_path":915},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":917,"_path":918},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":920,"_path":921},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":923,"_path":924},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":926,"_path":927},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":929,"_path":930},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":932,"_path":933},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":935,"_path":936},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":938,"_path":939},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":941,"_path":942},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":944,"_path":945},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":947,"_path":948},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":950,"_path":951},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":953,"_path":954},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":956,"_path":957},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":959,"_path":960},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":962,"_path":963},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":965,"_path":966},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":968,"_path":969},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":971,"_path":972},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":974,"_path":975},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":977,"_path":978},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":980,"_path":981},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":983,"_path":984},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":986,"_path":987,"children":988},"Writing","/writing",[989,992,995,998,1001,1004,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059],{"title":990,"_path":991},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":993,"_path":994},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":996,"_path":997},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":999,"_path":1000},"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":1002,"_path":1003},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":986,"_path":987},{"title":1006,"_path":1007},"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":1009,"_path":1010},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1012,"_path":1013},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1015,"_path":1016},"My Fitness Story","/writing/my-fitness-story",{"title":1018,"_path":1019},"New job alert!","/writing/new-job-alert",{"title":1021,"_path":1022},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1024,"_path":1025},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1027,"_path":1028},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1030,"_path":1031},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1033,"_path":1034},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1036,"_path":1037},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1039,"_path":1040},"The MACH monolith","/writing/the-mach-monolith",{"title":1042,"_path":1043},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1045,"_path":1046},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1048,"_path":1049},"This is headless 2.0","/writing/this-is-headless-20",{"title":1051,"_path":1052},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1054,"_path":1055},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1057,"_path":1058},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1060,"_path":1061},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1063,"_path":1064,"children":1065},"Speaking","/speaking",[1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297],{"title":1067,"_path":1068},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1070,"_path":1071},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1073,"_path":1074},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1076,"_path":1077},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1079,"_path":1080},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1082,"_path":1083},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1085,"_path":1086},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1088,"_path":1089},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1091,"_path":1092},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1094,"_path":1095},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1097,"_path":1098},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1100,"_path":1101},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1103,"_path":1104},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1106,"_path":1107},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1109,"_path":1110},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1112,"_path":1113},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1115,"_path":1116},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1118,"_path":1119},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1121,"_path":1122},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1124,"_path":1125},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1127,"_path":1128},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1130,"_path":1131},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1133,"_path":1134},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1136,"_path":1137},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1139,"_path":1140},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1142,"_path":1143},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1145,"_path":1146},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1148,"_path":1149},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1151,"_path":1152},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1154,"_path":1155},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1157,"_path":1158},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1160,"_path":1161},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1163,"_path":1164},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1166,"_path":1167},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1169,"_path":1170},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1172,"_path":1173},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1175,"_path":1176},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1178,"_path":1179},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1181,"_path":1182},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1184,"_path":1185},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1187,"_path":1188},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1190,"_path":1191},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1193,"_path":1194},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1196,"_path":1197},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1199,"_path":1200},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1202,"_path":1203},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1205,"_path":1206},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1208,"_path":1209},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1211,"_path":1212},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1214,"_path":1215},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1217,"_path":1218},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1220,"_path":1221},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1223,"_path":1224},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1226,"_path":1227},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1229,"_path":1230},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1232,"_path":1233},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1235,"_path":1236},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1238,"_path":1239},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1241,"_path":1242},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1244,"_path":1245},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1247,"_path":1248},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1250,"_path":1251},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1253,"_path":1254},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1256,"_path":1257},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1259,"_path":1260},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1262,"_path":1263},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1265,"_path":1266},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1268,"_path":1269},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1271,"_path":1272},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1274,"_path":1275},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1277,"_path":1278},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1280,"_path":1281},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1283,"_path":1284},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1286,"_path":1287},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1289,"_path":1290},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1292,"_path":1293},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1295,"_path":1296},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1063,"_path":1064},{"title":1299,"_path":1300},"live streams","/livestreams",{"title":1302,"_path":1303},"press kit","/presskit",{"title":7,"_path":4},[1306,1318,1330,1342,1353],{"_path":203,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":202,"description":1307,"date":1308,"position":1309,"image":1310,"videoId":1311,"body":1312,"_type":185,"_id":1316,"_source":187,"_file":1317,"_extension":189},"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",{"type":20,"children":1313,"toc":1314},[],{"title":5,"searchDepth":183,"depth":183,"links":1315},[],"content:3.videos:alive-and-kicking:000-hhPiTREYobI.md","3.videos/alive-and-kicking/000-hhPiTREYobI.md",{"_path":206,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":205,"description":1319,"date":1320,"position":1321,"image":1322,"videoId":1323,"body":1324,"_type":185,"_id":1328,"_source":187,"_file":1329,"_extension":189},"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",{"type":20,"children":1325,"toc":1326},[],{"title":5,"searchDepth":183,"depth":183,"links":1327},[],"content:3.videos:alive-and-kicking:001-mvq-_s20NDk.md","3.videos/alive-and-kicking/001-mvq-_s20NDk.md",{"_path":209,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":208,"description":1331,"date":1332,"position":1333,"image":1334,"videoId":1335,"body":1336,"_type":185,"_id":1340,"_source":187,"_file":1341,"_extension":189},"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",{"type":20,"children":1337,"toc":1338},[],{"title":5,"searchDepth":183,"depth":183,"links":1339},[],"content:3.videos:alive-and-kicking:002-M0MrLIGs6I0.md","3.videos/alive-and-kicking/002-M0MrLIGs6I0.md",{"_path":212,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":211,"description":5,"date":1343,"position":1344,"image":1345,"videoId":1346,"body":1347,"_type":185,"_id":1351,"_source":187,"_file":1352,"_extension":189},"2024-06-15T14:39:08Z","003","https://i.ytimg.com/vi/p3pm_0p8lZ4/maxresdefault.jpg","p3pm_0p8lZ4",{"type":20,"children":1348,"toc":1349},[],{"title":5,"searchDepth":183,"depth":183,"links":1350},[],"content:3.videos:alive-and-kicking:003-p3pm_0p8lZ4.md","3.videos/alive-and-kicking/003-p3pm_0p8lZ4.md",{"_path":215,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":214,"description":1354,"date":1355,"position":1356,"image":1357,"videoId":1358,"body":1359,"_type":185,"_id":1363,"_source":187,"_file":1364,"_extension":189},"Rock & roll is alive and kicking and in this talk I will showcase that Vue is so versatile it can be used to do audio visualisations while rock guitar soars through the browser. The audience will have access to a vue application which allows them to vote for a song to be played live on stage. The screen shows all the votes and I play them as they come up. While playing music meta data is shown and an audio visualisation plays while I’m rocking on stage. The more votes a song gets, the higher it shows on the list and the more chance I’ll play it. The whole experience is created using Vue and Uniform. Next to waking the audience up with some spicy rock& roll, I will explain how the software was build and why Vue is such an important technology for composable architectures with multiple channels.\n\nhttps://www.jsworldconference.com/newsletter\n\nPowered by https://passionatepeople.io\n\n#jsworld #jsworldconference #frontendlove #frontenddeveloperlove #javascript #reactjs #angular #react #vuejs #vue #vue3 #typescript #graphql #jamstack #amsterdam #conference #svelte #sveltejs #next #nextjs #staticsite #css #html #nuxt","2023-08-12T10:06:20Z","004","https://i.ytimg.com/vi/-4m4TIJ0z20/maxresdefault.jpg","-4m4TIJ0z20",{"type":20,"children":1360,"toc":1361},[],{"title":5,"searchDepth":183,"depth":183,"links":1362},[],"content:3.videos:alive-and-kicking:004--4m4TIJ0z20.md","3.videos/alive-and-kicking/004--4m4TIJ0z20.md",1718484379169] \ No newline at end of file +[{"data":1,"prerenderedAt":1366},["Reactive",2],{"content-query-Jh4Cwv9apa":3,"content-navigation-8C37fagqQL":190,"content-query-LB5sWoDPgJ":1306},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":185,"_id":186,"_source":187,"_file":188,"_extension":189},"/alive-and-kicking","",false,"Alive and kicking","Alive and kicking, a browser based guitar karaoke with composable architecture using live voting. Built with Vue, Nuxt, Supabase and Hygraph.",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":182},"root",[22,64,70,87,101,153,166],{"type":23,"tag":24,"props":25,"children":26},"element","hero",{},[27,38,46],{"type":23,"tag":28,"props":29,"children":30},"template",{"v-slot:title":5},[31],{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":36,"value":37},"text","Alive and Kicking",{"type":23,"tag":28,"props":39,"children":40},{"v-slot:description":5},[41],{"type":23,"tag":32,"props":42,"children":43},{},[44],{"type":36,"value":45},"A GUITAR KARAOKE EXPERIENCE WITH COMPOSABLE ARCHITECTURE",{"type":23,"tag":28,"props":47,"children":48},{"v-slot:image":5},[49],{"type":23,"tag":32,"props":50,"children":51},{},[52],{"type":23,"tag":53,"props":54,"children":63},"img",{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":59,"width":60,"fit":61,"quality":62},618,"lazy","cloudinary","sm:100vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1718459447/Tim/contentcon-tim.png",1440,"cover","100",[],{"type":23,"tag":65,"props":66,"children":69},"title-block",{"tag":67,"title":68},"h3","Rock & Roll in the browser",[],{"type":23,"tag":71,"props":72,"children":73},"richtext",{},[74],{"type":23,"tag":28,"props":75,"children":76},{"v-slot:body":5},[77,82],{"type":23,"tag":32,"props":78,"children":79},{},[80],{"type":36,"value":81},"Get ready to rock out at your next tech conference! I've created an electrifying browser-based karaoke experience tailored explicitly for rock & roll guitar. Using the innovative power of Vue, Nuxt, and webmidi, everything from the backing tracks to the guitar amp presets is dynamically controlled.",{"type":23,"tag":32,"props":83,"children":84},{},[85],{"type":36,"value":86},"And the best part? You, the audience, get to participate too! By logging in with Twitter or Github, you can live-vote what songs I should play next, making this a fully interactive and unforgettable experience.",{"type":23,"tag":24,"props":88,"children":89},{},[90],{"type":23,"tag":28,"props":91,"children":92},{"v-slot:image":5},[93],{"type":23,"tag":32,"props":94,"children":95},{},[96],{"type":23,"tag":53,"props":97,"children":100},{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":98,"width":60,"fit":99,"quality":62},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948358/Alive%20and%20Kicking/104649HDV09996-Enhanced-NR.jpg","thumbnail",[],{"type":23,"tag":102,"props":103,"children":104},"two-column",{},[105,133],{"type":23,"tag":28,"props":106,"children":107},{"v-slot:sidea":5},[108,112],{"type":23,"tag":65,"props":109,"children":111},{"tag":67,"title":110},"Share your vote",[],{"type":23,"tag":71,"props":113,"children":114},{},[115],{"type":23,"tag":28,"props":116,"children":117},{"v-slot:body":5},[118,123,128],{"type":23,"tag":32,"props":119,"children":120},{},[121],{"type":36,"value":122},"You, the audience, get to participate too! By logging in with your Twitter or Github account, you can live-vote what songs I should play next during my guitar karaoke performance.",{"type":23,"tag":32,"props":124,"children":125},{},[126],{"type":36,"value":127},"But that's not all - every vote you cast will be displayed on the big screen as a bouncing ball, making you a part of the talk. You vote, I play - let's make this a night to remember!",{"type":23,"tag":32,"props":129,"children":130},{},[131],{"type":36,"value":132},"After voting for your favorite song, you can share a personalized image of the song and your profile picture on your social media accounts.",{"type":23,"tag":28,"props":134,"children":135},{"v-slot:sideb":5},[136],{"type":23,"tag":137,"props":138,"children":139},"media",{},[140],{"type":23,"tag":28,"props":141,"children":142},{"v-slot:media":5},[143],{"type":23,"tag":32,"props":144,"children":145},{},[146],{"type":23,"tag":53,"props":147,"children":152},{"alt":12,"height":148,"loading":56,"provider":57,"sizes":149,"src":150,"width":151},1080,"sm:100vw md:40vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1718461639/share_ddu23k.jpg",1920,[],{"type":23,"tag":24,"props":154,"children":155},{},[156],{"type":23,"tag":28,"props":157,"children":158},{"v-slot:image":5},[159],{"type":23,"tag":32,"props":160,"children":161},{},[162],{"type":23,"tag":53,"props":163,"children":165},{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":164,"width":60,"fit":99,"quality":62},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948347/Alive%20and%20Kicking/102217HDV09938-Enhanced-NR.jpg",[],{"type":23,"tag":167,"props":168,"children":173},"videos",{":extras":169,":limit":170,":small":171,"folder":172},"true","6","false","alive-and-kicking",[174],{"type":23,"tag":28,"props":175,"children":176},{"v-slot:title":5},[177],{"type":23,"tag":32,"props":178,"children":179},{},[180],{"type":36,"value":181},"Alive and Kicking Videos",{"title":5,"searchDepth":183,"depth":183,"links":184},2,[],"markdown","content:8.alive-and-kicking.md","content","8.alive-and-kicking.md","md",[191,194,986,1063,1299,1302,1305],{"title":192,"_path":193},"About Tim","/about",{"title":195,"_path":196,"children":197},"Videos","/videos",[198,217,236,282,283,335,438,461,483,811],{"title":199,"_path":200,"children":201},"Alive And Kicking","/videos/alive-and-kicking",[202,205,208,211,214],{"title":203,"_path":204},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":206,"_path":207},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":209,"_path":210},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":212,"_path":213},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":215,"_path":216},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":218,"_path":219,"children":220},"Headless Creator","/videos/headless-creator",[221,224,227,230,233],{"title":222,"_path":223},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":225,"_path":226},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":228,"_path":229},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":231,"_path":232},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":234,"_path":235},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":237,"_path":238,"children":239},"Hygraph","/videos/hygraph",[240,243,246,249,252,255,258,261,264,267,270,273,276,279],{"title":241,"_path":242},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":244,"_path":245},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":247,"_path":248},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":250,"_path":251},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":253,"_path":254},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":256,"_path":257},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":259,"_path":260},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":262,"_path":263},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":265,"_path":266},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":268,"_path":269},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":271,"_path":272},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":274,"_path":275},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":277,"_path":278},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":280,"_path":281},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":195,"_path":196},{"title":284,"_path":285,"children":286},"Live Hygraph","/videos/live-hygraph",[287,290,293,296,299,302,305,308,311,314,317,320,323,326,329,332],{"title":288,"_path":289},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":291,"_path":292},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":294,"_path":295},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":297,"_path":298},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":300,"_path":301},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":303,"_path":304},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":306,"_path":307},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":309,"_path":310},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":312,"_path":313},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":315,"_path":316},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":318,"_path":319},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":321,"_path":322},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":324,"_path":325},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":327,"_path":328},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":330,"_path":331},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":333,"_path":334},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":336,"_path":337,"children":338},"Live Uniform","/videos/live-uniform",[339,342,345,348,351,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435],{"title":340,"_path":341},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":343,"_path":344},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":346,"_path":347},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":349,"_path":350},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":352,"_path":353},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":355,"_path":356},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":358,"_path":359},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":361,"_path":362},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":364,"_path":365},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":367,"_path":368},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":370,"_path":371},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":373,"_path":374},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":376,"_path":377},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":379,"_path":380},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":382,"_path":383},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":385,"_path":386},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":388,"_path":389},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":391,"_path":392},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":394,"_path":395},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":397,"_path":398},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":400,"_path":401},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":403,"_path":404},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":406,"_path":407},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":409,"_path":410},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":412,"_path":413},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":415,"_path":416},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":418,"_path":419},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":421,"_path":422},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":424,"_path":425},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":427,"_path":428},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":430,"_path":431},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":433,"_path":434},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":436,"_path":437},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":439,"_path":440,"children":441},"Misc Streams","/videos/misc-streams",[442,445,448,451,453,455,458],{"title":443,"_path":444},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":446,"_path":447},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":449,"_path":450},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":433,"_path":452},"/videos/misc-streams/003-jvgiaotcerq",{"title":424,"_path":454},"/videos/misc-streams/004-ekut1koa2n8",{"title":456,"_path":457},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":459,"_path":460},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":462,"_path":463,"children":464},"Mp","/videos/mp",[465,468,471,474,477,480],{"title":466,"_path":467},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":469,"_path":470},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":472,"_path":473},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":475,"_path":476},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":478,"_path":479},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":481,"_path":482},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":484,"_path":485,"children":486},"Tim","/videos/tim",[487,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,537,539,541,544,547,550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796,799,802,805,808],{"title":206,"_path":488},"/videos/tim/000-mvq-_s20ndk",{"title":490,"_path":491},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":493,"_path":494},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":496,"_path":497},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":499,"_path":500},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":502,"_path":503},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":505,"_path":506},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":508,"_path":509},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":511,"_path":512},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":514,"_path":515},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":517,"_path":518},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":520,"_path":521},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":523,"_path":524},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":526,"_path":527},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":529,"_path":530},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":532,"_path":533},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":535,"_path":536},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":209,"_path":538},"/videos/tim/017-m0mrligs6i0",{"title":203,"_path":540},"/videos/tim/018-hhpitreyobi",{"title":542,"_path":543},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":545,"_path":546},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":548,"_path":549},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":551,"_path":552},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":554,"_path":555},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":557,"_path":558},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":560,"_path":561},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":563,"_path":564},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":566,"_path":567},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":569,"_path":570},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":572,"_path":573},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":575,"_path":576},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":578,"_path":579},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":581,"_path":582},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":584,"_path":585},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":587,"_path":588},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":590,"_path":591},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":593,"_path":594},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":596,"_path":597},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":599,"_path":600},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":602,"_path":603},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":605,"_path":606},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":608,"_path":609},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":611,"_path":612},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":614,"_path":615},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":617,"_path":618},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":620,"_path":621},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":623,"_path":624},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":626,"_path":627},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":629,"_path":630},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":632,"_path":633},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":635,"_path":636},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":638,"_path":639},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":641,"_path":642},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":644,"_path":645},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":647,"_path":648},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":650,"_path":651},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":653,"_path":654},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":656,"_path":657},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":659,"_path":660},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":662,"_path":663},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":665,"_path":666},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":668,"_path":669},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":671,"_path":672},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":674,"_path":675},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":677,"_path":678},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":680,"_path":681},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":683,"_path":684},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":686,"_path":687},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":689,"_path":690},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":692,"_path":693},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":695,"_path":696},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":698,"_path":699},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":701,"_path":702},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":704,"_path":705},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":707,"_path":708},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":710,"_path":711},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":713,"_path":714},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":716,"_path":717},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":719,"_path":720},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":722,"_path":723},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":725,"_path":726},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":728,"_path":729},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":731,"_path":732},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":734,"_path":735},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":737,"_path":738},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":740,"_path":741},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":743,"_path":744},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":746,"_path":747},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":749,"_path":750},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":752,"_path":753},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":755,"_path":756},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":758,"_path":759},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":761,"_path":762},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":764,"_path":765},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":767,"_path":768},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":770,"_path":771},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":773,"_path":774},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":776,"_path":777},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":779,"_path":780},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":782,"_path":783},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":785,"_path":786},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":788,"_path":789},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":791,"_path":792},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":794,"_path":795},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":797,"_path":798},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":800,"_path":801},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":803,"_path":804},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":806,"_path":807},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":809,"_path":810},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":812,"_path":813,"children":814},"Uniform","/videos/uniform",[815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983],{"title":816,"_path":817},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":819,"_path":820},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":822,"_path":823},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":825,"_path":826},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":828,"_path":829},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":831,"_path":832},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":834,"_path":835},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":837,"_path":838},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":840,"_path":841},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":843,"_path":844},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":846,"_path":847},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":849,"_path":850},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":852,"_path":853},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":855,"_path":856},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":858,"_path":859},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":861,"_path":862},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":864,"_path":865},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":867,"_path":868},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":870,"_path":871},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":873,"_path":874},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":876,"_path":877},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":879,"_path":880},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":882,"_path":883},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":885,"_path":886},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":888,"_path":889},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":891,"_path":892},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":894,"_path":895},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":897,"_path":898},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":900,"_path":901},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":903,"_path":904},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":906,"_path":907},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":909,"_path":910},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":912,"_path":913},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":915,"_path":916},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":918,"_path":919},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":921,"_path":922},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":924,"_path":925},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":927,"_path":928},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":930,"_path":931},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":933,"_path":934},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":936,"_path":937},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":939,"_path":940},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":942,"_path":943},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":945,"_path":946},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":948,"_path":949},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":951,"_path":952},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":954,"_path":955},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":957,"_path":958},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":960,"_path":961},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":963,"_path":964},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":966,"_path":967},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":969,"_path":970},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":972,"_path":973},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":975,"_path":976},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":978,"_path":979},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":981,"_path":982},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":984,"_path":985},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":987,"_path":988,"children":989},"Writing","/writing",[990,993,996,999,1002,1005,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060],{"title":991,"_path":992},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":994,"_path":995},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":997,"_path":998},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1000,"_path":1001},"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":1003,"_path":1004},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":987,"_path":988},{"title":1007,"_path":1008},"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":1010,"_path":1011},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1013,"_path":1014},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1016,"_path":1017},"My Fitness Story","/writing/my-fitness-story",{"title":1019,"_path":1020},"New job alert!","/writing/new-job-alert",{"title":1022,"_path":1023},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1025,"_path":1026},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1028,"_path":1029},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1031,"_path":1032},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1034,"_path":1035},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1037,"_path":1038},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1040,"_path":1041},"The MACH monolith","/writing/the-mach-monolith",{"title":1043,"_path":1044},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1046,"_path":1047},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1049,"_path":1050},"This is headless 2.0","/writing/this-is-headless-20",{"title":1052,"_path":1053},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1055,"_path":1056},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1058,"_path":1059},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1061,"_path":1062},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1064,"_path":1065,"children":1066},"Speaking","/speaking",[1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283,1286,1289,1292,1295,1298],{"title":1068,"_path":1069},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1071,"_path":1072},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1074,"_path":1075},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1077,"_path":1078},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1080,"_path":1081},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1083,"_path":1084},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1086,"_path":1087},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1089,"_path":1090},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1092,"_path":1093},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1095,"_path":1096},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1098,"_path":1099},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1101,"_path":1102},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1104,"_path":1105},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1107,"_path":1108},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1110,"_path":1111},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1113,"_path":1114},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1116,"_path":1117},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1119,"_path":1120},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1122,"_path":1123},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1125,"_path":1126},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1128,"_path":1129},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1131,"_path":1132},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1134,"_path":1135},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1137,"_path":1138},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1140,"_path":1141},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1143,"_path":1144},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1146,"_path":1147},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1149,"_path":1150},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1152,"_path":1153},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1155,"_path":1156},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1158,"_path":1159},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1161,"_path":1162},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1164,"_path":1165},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1167,"_path":1168},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1170,"_path":1171},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1173,"_path":1174},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1176,"_path":1177},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1179,"_path":1180},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1182,"_path":1183},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1185,"_path":1186},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1188,"_path":1189},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1191,"_path":1192},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1194,"_path":1195},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1197,"_path":1198},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1200,"_path":1201},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1203,"_path":1204},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1206,"_path":1207},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1209,"_path":1210},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1212,"_path":1213},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1215,"_path":1216},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1218,"_path":1219},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1221,"_path":1222},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1224,"_path":1225},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1227,"_path":1228},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1230,"_path":1231},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1233,"_path":1234},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1236,"_path":1237},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1239,"_path":1240},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1242,"_path":1243},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1245,"_path":1246},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1248,"_path":1249},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1251,"_path":1252},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1254,"_path":1255},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1257,"_path":1258},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1260,"_path":1261},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1263,"_path":1264},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1266,"_path":1267},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1269,"_path":1270},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1272,"_path":1273},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1275,"_path":1276},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1278,"_path":1279},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1281,"_path":1282},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1284,"_path":1285},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1287,"_path":1288},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1290,"_path":1291},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1293,"_path":1294},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1296,"_path":1297},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1064,"_path":1065},{"title":1300,"_path":1301},"live streams","/livestreams",{"title":1303,"_path":1304},"Press kit","/presskit",{"title":7,"_path":4},[1307,1319,1331,1343,1354],{"_path":204,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":203,"description":1308,"date":1309,"position":1310,"image":1311,"videoId":1312,"body":1313,"_type":185,"_id":1317,"_source":187,"_file":1318,"_extension":189},"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",{"type":20,"children":1314,"toc":1315},[],{"title":5,"searchDepth":183,"depth":183,"links":1316},[],"content:3.videos:alive-and-kicking:000-hhPiTREYobI.md","3.videos/alive-and-kicking/000-hhPiTREYobI.md",{"_path":207,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":206,"description":1320,"date":1321,"position":1322,"image":1323,"videoId":1324,"body":1325,"_type":185,"_id":1329,"_source":187,"_file":1330,"_extension":189},"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",{"type":20,"children":1326,"toc":1327},[],{"title":5,"searchDepth":183,"depth":183,"links":1328},[],"content:3.videos:alive-and-kicking:001-mvq-_s20NDk.md","3.videos/alive-and-kicking/001-mvq-_s20NDk.md",{"_path":210,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":209,"description":1332,"date":1333,"position":1334,"image":1335,"videoId":1336,"body":1337,"_type":185,"_id":1341,"_source":187,"_file":1342,"_extension":189},"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",{"type":20,"children":1338,"toc":1339},[],{"title":5,"searchDepth":183,"depth":183,"links":1340},[],"content:3.videos:alive-and-kicking:002-M0MrLIGs6I0.md","3.videos/alive-and-kicking/002-M0MrLIGs6I0.md",{"_path":213,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":212,"description":5,"date":1344,"position":1345,"image":1346,"videoId":1347,"body":1348,"_type":185,"_id":1352,"_source":187,"_file":1353,"_extension":189},"2024-06-15T14:39:08Z","003","https://i.ytimg.com/vi/p3pm_0p8lZ4/maxresdefault.jpg","p3pm_0p8lZ4",{"type":20,"children":1349,"toc":1350},[],{"title":5,"searchDepth":183,"depth":183,"links":1351},[],"content:3.videos:alive-and-kicking:003-p3pm_0p8lZ4.md","3.videos/alive-and-kicking/003-p3pm_0p8lZ4.md",{"_path":216,"_dir":172,"_draft":6,"_partial":6,"_locale":5,"title":215,"description":1355,"date":1356,"position":1357,"image":1358,"videoId":1359,"body":1360,"_type":185,"_id":1364,"_source":187,"_file":1365,"_extension":189},"Rock & roll is alive and kicking and in this talk I will showcase that Vue is so versatile it can be used to do audio visualisations while rock guitar soars through the browser. The audience will have access to a vue application which allows them to vote for a song to be played live on stage. The screen shows all the votes and I play them as they come up. While playing music meta data is shown and an audio visualisation plays while I’m rocking on stage. The more votes a song gets, the higher it shows on the list and the more chance I’ll play it. The whole experience is created using Vue and Uniform. Next to waking the audience up with some spicy rock& roll, I will explain how the software was build and why Vue is such an important technology for composable architectures with multiple channels.\n\nhttps://www.jsworldconference.com/newsletter\n\nPowered by https://passionatepeople.io\n\n#jsworld #jsworldconference #frontendlove #frontenddeveloperlove #javascript #reactjs #angular #react #vuejs #vue #vue3 #typescript #graphql #jamstack #amsterdam #conference #svelte #sveltejs #next #nextjs #staticsite #css #html #nuxt","2023-08-12T10:06:20Z","004","https://i.ytimg.com/vi/-4m4TIJ0z20/maxresdefault.jpg","-4m4TIJ0z20",{"type":20,"children":1361,"toc":1362},[],{"title":5,"searchDepth":183,"depth":183,"links":1363},[],"content:3.videos:alive-and-kicking:004--4m4TIJ0z20.md","3.videos/alive-and-kicking/004--4m4TIJ0z20.md",1718484820680] \ No newline at end of file diff --git a/alive-and-kicking/index.html b/alive-and-kicking/index.html index eeb7c157..f4d3fb10 100644 --- a/alive-and-kicking/index.html +++ b/alive-and-kicking/index.html @@ -1,17 +1,17 @@ -alive and kicking +Alive and kicking - - - + + + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - -
Tim Benniks

Alive and Kicking

A GUITAR KARAOKE EXPERIENCE WITH COMPOSABLE ARCHITECTURE

Rock & Roll in the browser

Get ready to rock out at your next tech conference! I've created an electrifying browser-based karaoke experience tailored explicitly for rock & roll guitar. Using the innovative power of Vue, Nuxt, and webmidi, everything from the backing tracks to the guitar amp presets is dynamically controlled.

And the best part? You, the audience, get to participate too! By logging in with Twitter or Github, you can live-vote what songs I should play next, making this a fully interactive and unforgettable experience.

Tim Benniks

Share your vote

You, the audience, get to participate too! By logging in with your Twitter or Github account, you can live-vote what songs I should play next during my guitar karaoke performance.

But that's not all - every vote you cast will be displayed on the big screen as a bouncing ball, making you a part of the talk. You vote, I play - let's make this a night to remember!

After voting for your favorite song, you can share a personalized image of the song and your profile picture on your social media accounts.

Tim Benniks

Tim Benniks
- \ No newline at end of file + + + + +
Tim Benniks

Alive and Kicking

A GUITAR KARAOKE EXPERIENCE WITH COMPOSABLE ARCHITECTURE

Rock & Roll in the browser

Get ready to rock out at your next tech conference! I've created an electrifying browser-based karaoke experience tailored explicitly for rock & roll guitar. Using the innovative power of Vue, Nuxt, and webmidi, everything from the backing tracks to the guitar amp presets is dynamically controlled.

And the best part? You, the audience, get to participate too! By logging in with Twitter or Github, you can live-vote what songs I should play next, making this a fully interactive and unforgettable experience.

Tim Benniks

Share your vote

You, the audience, get to participate too! By logging in with your Twitter or Github account, you can live-vote what songs I should play next during my guitar karaoke performance.

But that's not all - every vote you cast will be displayed on the big screen as a bouncing ball, making you a part of the talk. You vote, I play - let's make this a night to remember!

After voting for your favorite song, you can share a personalized image of the song and your profile picture on your social media accounts.

Tim Benniks

Tim Benniks
+ \ No newline at end of file diff --git a/api/_content/cache.1718484357766.json b/api/_content/cache.1718484357766.json deleted file mode 100644 index 924f4033..00000000 --- a/api/_content/cache.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"generatedAt":1718484377939,"generateTime":1006,"contents":[{"_path":"/","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Tim Benniks","description":"This is the personal website of Tim Benniks. This is where you can find my public speaking schedule and my videos.","draft":false,"navigation":false,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim Benniks"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","format":"webp","height":618,"loading":"eager","quality":"100","sizes":"sm:100vw","src":"/tim.png","width":1440},"children":[]}]}]}]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim Benniks is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":". "},{"type":"element","tag":"a","props":{"href":"https://machalliance.com","rel":["nofollow"],"title":"https://machalliance.com"},"children":[{"type":"text","value":"MACH Alliance"}]},{"type":"text","value":" Tech Council member, "},{"type":"element","tag":"a","props":{"href":"https://nuxt.com","rel":["nofollow"],"title":"https://nuxt.com"},"children":[{"type":"text","value":"NuxtJS"}]},{"type":"text","value":" ambassador, "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com","rel":["nofollow"],"title":"https://cloudinary.com"},"children":[{"type":"text","value":"Cloudinary"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://supabase.com","rel":["nofollow"],"title":"https://supabase.com"},"children":[{"type":"text","value":"Supabase"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://algolia.com","rel":["nofollow"],"title":"https://algolia.com"},"children":[{"type":"text","value":"Algolia"}]},{"type":"text","value":" Ambassador, and "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"content creator"}]},{"type":"text","value":"."}]}]}]},{"type":"element","tag":"videos","props":{":limit":"3",":small":"false","folder":"live-hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Live streams"}]}]}]},{"type":"element","tag":"hero","props":{":smallertitle":"true"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Vuejs Amsterdam 2024"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","format":"webp","height":618,"loading":"eager","quality":"100","sizes":"sm:100vw","src":"/tim-vueams.jpg","width":1440},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"videos","props":{":limit":"3",":small":"true","folder":"tim"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Videos"}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"talks","props":{":limit":"4",":small":"true"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]}]}]},{"type":"element","tag":"articles","props":{":limit":"3",":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Articles"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:1.index.md","_source":"content","_file":"1.index.md","_extension":"md"},{"_path":"/about","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"About","description":"About meta","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"About Tim"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"eager","sizes":"sm:100vw","src":"/tim_augmented.png","width":1440,"quality":"100","format":"webp"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"My name is Tim Benniks. I'm a Dutchman living in France where I work remotely from a farm in the countryside. I'm the Developer Relations Lead for Outreach and Awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Before I joined "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" I worked for "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"],"title":"https://uniform.dev"},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":" as director of developer relations and I spend about 15 years at agencies building websites for huge brands. I was global front-end director at "},{"type":"element","tag":"a","props":{"href":"https://valtech.com","rel":["nofollow"],"title":"https://valtech.com"},"children":[{"type":"text","value":"Valtech"}]},{"type":"text","value":" Principal front-end developer at "},{"type":"element","tag":"a","props":{"href":"https://akqa.com","rel":["nofollow"],"title":"https://akqa.com"},"children":[{"type":"text","value":"AKQA"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In 2020 I forged a new career path for myself by re-exploring my creativity. I’ve been a lifelong musician and since we moved countries many years ago, I didn’t play much. The agency life was resting heavy on my shoulders and I missed sharing with my community and being creative."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I jumped right in and decided to make a new YouTube video each week and to start speaking at conferences once a month. This creative path changed my life. I learnt a lot from the developer community and I started to make a name for myself."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The outcome of a year if creative work was a job at a start up where I led developer relations. Fast forward a few years and I'm now on solid ground in the start up world continuing with roles in developer relations like the one I landed at Hygraph in 2023."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:media":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":2103,"loading":"lazy","sizes":"sm:100vw md:40vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718362826/Tim/tim-talk.png","width":1920,"provider":"cloudinary"},"children":[]}]}]}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/Tim/Tim%20On%20Stage.jpg","width":1440,"provider":"cloudinary","quality":"100","fit":"thumbnail"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Content creation"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I love to explore my creativity by making videos, live streams and speaking. Now that virtual conferences are a thing I have specialised in making entertaining, high production value talks that I pre-record."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On my "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"YouTube"}]},{"type":"text","value":" channel I explore web development related topics but I also conduct interviews and I try out services with live commentary."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Making all these videos is lot's of work. If you like what you see, feel free to subscribe or even "},{"type":"element","tag":"a","props":{"href":"https://buymeacoff.ee/timbenniks","rel":["nofollow"],"title":"https://buymeacoff.ee/timbenniks"},"children":[{"type":"text","value":"sponsor"}]},{"type":"text","value":" me."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"talks","props":{":limit":"2",":small":"true"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Latest talks"}]}]}]}]}]},{"type":"element","tag":"videos","props":{":limit":"3",":small":"false","folder":"hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Latest Hygraph Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:2.about.md","_source":"content","_file":"2.about.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/000-hhpitreyobi","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"The story behind Alive and kicking","description":"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","date":"2023-08-12T10:05:11Z","position":"000","image":"https://i.ytimg.com/vi/hhPiTREYobI/maxresdefault.jpg","videoId":"hhPiTREYobI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:000-hhPiTREYobI.md","_source":"content","_file":"3.videos/alive-and-kicking/000-hhPiTREYobI.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/001-mvq-_s20ndk","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"72 hours in Austin, TX","description":"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","date":"2024-06-15T14:39:24Z","position":"001","image":"https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","videoId":"mvq-_s20NDk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:001-mvq-_s20NDk.md","_source":"content","_file":"3.videos/alive-and-kicking/001-mvq-_s20NDk.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/002-m0mrligs6i0","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"Vue.js guitar karaoke: how I built it","description":"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","date":"2023-08-12T10:05:17Z","position":"002","image":"https://i.ytimg.com/vi/M0MrLIGs6I0/maxresdefault.jpg","videoId":"M0MrLIGs6I0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:002-M0MrLIGs6I0.md","_source":"content","_file":"3.videos/alive-and-kicking/002-M0MrLIGs6I0.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/003-p3pm_0p8lz4","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","description":"","date":"2024-06-15T14:39:08Z","position":"003","image":"https://i.ytimg.com/vi/p3pm_0p8lZ4/maxresdefault.jpg","videoId":"p3pm_0p8lZ4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:003-p3pm_0p8lZ4.md","_source":"content","_file":"3.videos/alive-and-kicking/003-p3pm_0p8lZ4.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/004-4m4tij0z20","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","description":"Rock & roll is alive and kicking and in this talk I will showcase that Vue is so versatile it can be used to do audio visualisations while rock guitar soars through the browser. The audience will have access to a vue application which allows them to vote for a song to be played live on stage. The screen shows all the votes and I play them as they come up. While playing music meta data is shown and an audio visualisation plays while I’m rocking on stage. The more votes a song gets, the higher it shows on the list and the more chance I’ll play it. The whole experience is created using Vue and Uniform. Next to waking the audience up with some spicy rock& roll, I will explain how the software was build and why Vue is such an important technology for composable architectures with multiple channels.\n\nhttps://www.jsworldconference.com/newsletter\n\nPowered by https://passionatepeople.io\n\n#jsworld #jsworldconference #frontendlove #frontenddeveloperlove #javascript #reactjs #angular #react #vuejs #vue #vue3 #typescript #graphql #jamstack #amsterdam #conference #svelte #sveltejs #next #nextjs #staticsite #css #html #nuxt","date":"2023-08-12T10:06:20Z","position":"004","image":"https://i.ytimg.com/vi/-4m4TIJ0z20/maxresdefault.jpg","videoId":"-4m4TIJ0z20","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:004--4m4TIJ0z20.md","_source":"content","_file":"3.videos/alive-and-kicking/004--4m4TIJ0z20.md","_extension":"md"},{"_path":"/videos/headless-creator/000-m8on6zkr7q4","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC 5: Transitioning from DXP to DXC","description":"With the history and the basics of creating DXP out of the way, in this lesson we focus on how to transition from the Digital Experience Platform to Digital Experience Composition Platform. DXCP helps you to orchestrate all sources in your ecosystem to communicate in a loosely coupled fashion while enabling content editors to make important experience composition decisions without the involvement of developers. No-code editing, universal preview across headless sources and personalization are a few of the features DXCP offers while leaving developers free to choose how they architect their code.\n\n0:00 - Intro\n1:14 - What is the difference between DXP and DXCP?\n2: 33 - DXP Architecture\n5:49 - DXCP Architecture\n7:34 - DXCP in one Sentence\n9:06 - What a DXCP is not...\n11:29 - So what is DXCP?\n15:54 - Domain Data vs Design Data\n22:01 - Conclusion\n22:44 - Terminology Recap\n24:28 - End\n\n========================================\nUniform\nhttps://uniform.dev/\n\nComposable Orchestration with Uniform Bootcamp\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp\n\nLiked what you saw? Why not register for a Free Account to discover all the free courses on Headless Creator.\nhttps://www.headlesscreator.com/\n\nSign up for our newsletter that focuses on everything Headless CMS and delivered directly to your inbox.\nhttps://www.headlesscreator.com/subscribe-to-our-newsletter\n========================================","date":"2023-01-12T16:30:40Z","position":"000","image":"https://i.ytimg.com/vi/m8On6ZKr7Q4/maxresdefault.jpg","videoId":"m8On6ZKr7Q4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:000-m8On6ZKr7Q4.md","_source":"content","_file":"3.videos/headless-creator/000-m8On6ZKr7Q4.md","_extension":"md"},{"_path":"/videos/headless-creator/001-smbq8aoa4jm","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC Lesson 4: The DXP Tech Stack Overview","description":"In this lesson, you're going to learn what the DXP tech stack is, why Jamstack is the way to go for modern architectures, what API first is plus much more.\n\nTo watch the entire lesson, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","date":"2022-03-18T15:58:51Z","position":"001","image":"https://i.ytimg.com/vi/sMBq8aoa4JM/maxresdefault.jpg","videoId":"sMBq8aoa4JM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:001-sMBq8aoa4JM.md","_source":"content","_file":"3.videos/headless-creator/001-sMBq8aoa4JM.md","_extension":"md"},{"_path":"/videos/headless-creator/002-sx5fbtcnrsg","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC Lesson 3: Separation of Concerns","description":"In this lesson, we are going to learn what \"concerns\" are and how to keep them separate in a Composable DXP platform. We'll cover design and layout, how to keep those out of a CMS, how to isolate logic and an introduction to content modeling that focuses on content and not design.\n\nTo watch the entire less, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","date":"2022-03-04T16:45:54Z","position":"002","image":"https://i.ytimg.com/vi/sX5fBtcnRSg/maxresdefault.jpg","videoId":"sX5fBtcnRSg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:002-sX5fBtcnRSg.md","_source":"content","_file":"3.videos/headless-creator/002-sX5fBtcnRSg.md","_extension":"md"},{"_path":"/videos/headless-creator/003-eybdyoihn1g","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","description":"Effective digital delivery demands collaboration between development, design and digital marketing. In this lesson we are going to cover things that get in the way of collaboration (e.g. rigid architecture, rigid workflows, etc), how we can orchestrate using a platform and what painkillers can help solve some of these problems. \n\nTo watch the entire lesson, please visit: \n\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","date":"2022-02-18T16:24:57Z","position":"003","image":"https://i.ytimg.com/vi/EybDYOiHn1g/maxresdefault.jpg","videoId":"EybDYOiHn1g","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:003-EybDYOiHn1g.md","_source":"content","_file":"3.videos/headless-creator/003-EybDYOiHn1g.md","_extension":"md"},{"_path":"/videos/headless-creator/004-hshm8hlopka","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","description":"In this lesson, you'll learn what DXP is, get the history behind how we got to where we are today, what being truly composable means and the basic terminology of composable DXP. \n\nTo watch the entire lesson, please visit: \n\n[https://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp](https://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp)","date":"2022-02-04T16:48:08Z","position":"004","image":"https://i.ytimg.com/vi/HsHm8HLOpKA/maxresdefault.jpg","videoId":"HsHm8HLOpKA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:004-HsHm8HLOpKA.md","_source":"content","_file":"3.videos/headless-creator/004-HsHm8HLOpKA.md","_extension":"md"},{"_path":"/videos/hygraph/000-m8qftvizsmw","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"The simplest way to connect Hygraph to NuxtJS","description":"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to NuxtJS.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nuxtjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","date":"2024-06-15T10:28:34Z","position":"000","image":"https://i.ytimg.com/vi/M8QFTViZSMw/maxresdefault.jpg","videoId":"M8QFTViZSMw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:000-M8QFTViZSMw.md","_source":"content","_file":"3.videos/hygraph/000-M8QFTViZSMw.md","_extension":"md"},{"_path":"/videos/hygraph/001-aahu9x5wajy","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"The simplest way to connect Hygraph to Astro","description":"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to Astro.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/astro\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","date":"2024-06-15T10:28:28Z","position":"001","image":"https://i.ytimg.com/vi/AAHu9X5WAjY/maxresdefault.jpg","videoId":"AAHu9X5WAjY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:001-AAHu9X5WAjY.md","_source":"content","_file":"3.videos/hygraph/001-AAHu9X5WAjY.md","_extension":"md"},{"_path":"/videos/hygraph/002-fksw0bfbtdo","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"The simplest way to connect Hygraph to Next.js","description":"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to #Nextjs.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nFull implementation guide: https://hygraph.com/docs/implementations/next/next\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nextjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","date":"2024-06-15T10:28:22Z","position":"002","image":"https://i.ytimg.com/vi/fkSW0BFbtdo/maxresdefault.jpg","videoId":"fkSW0BFbtdo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:002-fkSW0BFbtdo.md","_source":"content","_file":"3.videos/hygraph/002-fkSW0BFbtdo.md","_extension":"md"},{"_path":"/videos/hygraph/003-x8tb3li6dg0","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to connect Commercetools and Hygraph","description":"Connect Commercetools to Hygraph via content federation and install a product picker app for content editors. It's all super easy, and Tim shows you how it is done in this video.\n\nGrab the codebase: https://github.com/hygraph/skncre-starter-nuxt-commercetools\nJoin our community at https://slack.hygraph.com\nCreate a free account at https://hygraph.com","date":"2024-05-31T17:46:57Z","position":"003","image":"https://i.ytimg.com/vi/x8tB3li6dG0/maxresdefault.jpg","videoId":"x8tB3li6dG0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:003-x8tB3li6dG0.md","_source":"content","_file":"3.videos/hygraph/003-x8tB3li6dG0.md","_extension":"md"},{"_path":"/videos/hygraph/004-zredqavtow4","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to add a remote REST source to Hygraph","description":"This is the CMS Maverick series. Learn how to add a remote #REST source into Hygraph and use its data like its #Hygraph native content.\n\nRead more here: https://hygraph.com/docs/guides/schema/remote-sources#adding-a-remote-source-to-your-project\n\nJoin our community: https://slack.hygraph.com\nTry Hygraph for free: https://app.hygraph.com/signup","date":"2024-05-31T17:46:43Z","position":"004","image":"https://i.ytimg.com/vi/ZREdqavTOW4/maxresdefault.jpg","videoId":"ZREdqavTOW4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:004-ZREdqavTOW4.md","_source":"content","_file":"3.videos/hygraph/004-ZREdqavTOW4.md","_extension":"md"},{"_path":"/videos/hygraph/005-aydykxckkfe","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to add a remote GraphQL source to Hygraph","description":"This is the CMS Maverick series. Learn how to add a remote #graphql source into Hygraph and use its data like its #Hygraph native content.\n\nRead more here: https://hygraph.com/docs/guides/schema/remote-sources#adding-a-remote-source-to-your-project\n\nJoin our community: https://slack.hygraph.com\nTry Hygraph for free: https://app.hygraph.com/signup","date":"2024-05-31T17:46:38Z","position":"005","image":"https://i.ytimg.com/vi/aydykxCkKFE/maxresdefault.jpg","videoId":"aydykxCkKFE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:005-aydykxCkKFE.md","_source":"content","_file":"3.videos/hygraph/005-aydykxCkKFE.md","_extension":"md"},{"_path":"/videos/hygraph/006-axq-jo8hmzq","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"CMS Feature ninja: set up a GraphQL where clause on any field","description":"In this CMS Feature Ninja episode, Tim explores how to add a #graphql where clause to any field in Hygraph.\n\nJoin our community: https://slack.hygraph.com\nOr sign up for free at: https://app.hygraph.com/signup?utm_source=youtube&utm_medium=organic&utm_campaign=devrel","date":"2024-05-31T17:46:34Z","position":"006","image":"https://i.ytimg.com/vi/aXQ-JO8hMZQ/maxresdefault.jpg","videoId":"aXQ-JO8hMZQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:006-aXQ-JO8hMZQ.md","_source":"content","_file":"3.videos/hygraph/006-aXQ-JO8hMZQ.md","_extension":"md"},{"_path":"/videos/hygraph/007-e9jxm4h4a48","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"Headless commerce with #Nuxt and #Tailwind.","description":"SKNCRE is a composable commerce demo with Hygraph, Nuxt, Tailwind, and an external API for product data.\n\nSee the demo: https://skncre-cosmetics-hygraph.vercel.app/\nClone the Hygraph project: https://app.hygraph.com/clone/f67b7c52af504cd9a19de912423b2e40?name=Hygraph%20SKNCRE\nGithub repo: https://github.com/timbenniks/skncre-cosmetics-hygraph\n\nRead more: https://hygraph.com/blog/skncre-hygraph-cosmetics-demo\nHygraph Community: https://slack.hygraph.com\n\nSKNCRE is a fictitious cosmetics brand selling costly snail slime skin care products: face serum, face cream, eye contour, and the SKNCRE bundle. What you often see in composable e-commerce is that the product information lives in a specialized management system (a PIM), the content of the website in a CMS, and commerce features such as a cart, checkout, account, and payments in yet another system (a commerce engine).\n\nIn this example, all pages, content, and media are stored in Hygraph, but the products come from an external system – in this case, a mock API called Federate This. We expose the data in Hygraph via Content Federation. Developers query the CMS for product data, while editors can use the data inside the CMS while they combine editing native and federated content as if it were the same. The beauty is that developers and content editors do not need to understand the external product API as they use it directly through Hygraph.\n\nFederate This: https://federatethis.com\nHygraph: https://hygraph.com\nHygraph Community: https://slack.hygraph.com","date":"2024-02-07T10:45:37Z","position":"007","image":"https://i.ytimg.com/vi/E9jxm4h4A48/maxresdefault.jpg","videoId":"E9jxm4h4A48","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:007-E9jxm4h4A48.md","_source":"content","_file":"3.videos/hygraph/007-E9jxm4h4A48.md","_extension":"md"},{"_path":"/videos/hygraph/008-hs1imxycyqg","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"Creating an Enterprise News starter with Next.js and Hygraph CMS","description":"In this video, Tim Benniks from #Hygraph and Marcin Szczepaniak from #Blazity will talk about the enterprise starter kit the two companies developed together.\n\nWhether you're just starting out or working on a large-scale project, this enterprise-ready content starter will accelerate your Hygraph project's development, enhance user engagement, and unlock new possibilities. \n\nFind out more about the starter: https://hygraph.com/blog/enterprise-ready-content-starter","date":"2024-05-31T17:46:11Z","position":"008","image":"https://i.ytimg.com/vi/HS1iMXycyqg/maxresdefault.jpg","videoId":"HS1iMXycyqg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:008-HS1iMXycyqg.md","_source":"content","_file":"3.videos/hygraph/008-HS1iMXycyqg.md","_extension":"md"},{"_path":"/videos/hygraph/009-snhzgplvm8o","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","description":"In this discussion, Tim Benniks from #Hygraph and Markus Lorenz from #Datrycs explore the intricacies of decoupled architecture and its impact on businesses. From legacy systems to modern infrastructures, they dive deep into the challenges companies face and the need for a cohesive backend.\n\nKey Takeaways\n1. Overcoming legacy tools: Discover how companies struggle to adapt to market changes due to legacy systems and the importance of orchestrating data for innovation.\n2. The cost of doing nothing: Explore the consequences of maintaining outdated infrastructures and the impact on user experience, innovation, and market competitiveness.\n3. Understanding market changes: Markus shares valuable insights into the macroeconomic factors driving market changes and the role of IT infrastructure in adapting to unpredictability.\n\nJoin us on slack at https://slack.hygraph.com\n\n00:00 Introduction\n00:30 Challenges brought by monolith\n02:25 The cost of doing nothing: The IT budget dilemma\n04:03 What market change means for businesses: Understanding VUCA\n06:26 What does the market change mean for IT infrastructure for the future\n08:10 Perks of a decoupled infrastructure\n09:25 Challenges of going composable\n14:28 How Content Federation helps decoupled data challenges\n15:50 Perks of using Content Federation","date":"2024-05-31T17:45:53Z","position":"009","image":"https://i.ytimg.com/vi/SnhZGplVm8o/maxresdefault.jpg","videoId":"SnhZGplVm8o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:009-SnhZGplVm8o.md","_source":"content","_file":"3.videos/hygraph/009-SnhZGplVm8o.md","_extension":"md"},{"_path":"/videos/hygraph/010-8_ttkblpdpm","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"Set up headless CMS localization in 6 mins","description":"Localization seems complicated, but with Hygraph it's a breeze to set up. In this video of the CMS Feature Ninja, Tim Benniks shows off how to set up multiple languages for assets and regular models in 6 minutes!\n\n\n#i18n #headlesscms #localization","date":"2024-02-07T10:45:54Z","position":"010","image":"https://i.ytimg.com/vi/8_TtKBLPdpM/maxresdefault.jpg","videoId":"8_TtKBLPdpM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:010-8_TtKBLPdpM.md","_source":"content","_file":"3.videos/hygraph/010-8_TtKBLPdpM.md","_extension":"md"},{"_path":"/videos/hygraph/011-keqn1rt8fwq","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to use Nuxt 3 with Hygraph and GraphQL","description":"In this video, Tim shows how to use #Nuxt 3 with #GraphQL to query a Hygraph remote REST API source.\n\nLearn more about remote sources here: https://hygraph.com/docs/guides/schema/remote-sources\nHow to add any REST source to Hygraph: https://www.youtube.com/watch?v=NpHSqsol3xc\n\nJoin our Slack community:\nhttps://slack.hygraph.com\n\nChapters:\n00:00 Introduction\n00:40 Nuxt 3 and GrAPHQL\n00:56 The API Playground\n01:35 The Nuxt Setup\n02:15 Queries and automatic codegen\n03:30 Basic query using GraphQL composable\n05:35 A fancier version\n07:12 useGraphQL custom composable\n08:05 Conclusion","date":"2024-02-07T10:46:27Z","position":"011","image":"https://i.ytimg.com/vi/Keqn1RT8FwQ/maxresdefault.jpg","videoId":"Keqn1RT8FwQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:011-Keqn1RT8FwQ.md","_source":"content","_file":"3.videos/hygraph/011-Keqn1RT8FwQ.md","_extension":"md"},{"_path":"/videos/hygraph/012-nphsqsol3xc","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to add any REST source to Hygraph headless CMS","description":"In this video, Tim shows how to add a remote REST source into Hygraph in simple steps. Content federation is like wizardry! Keep your source of truth as is, but show its data in any shape you like in the front end.\n\nThe source is strongly typed via SDL. It's accessible as a global GraphQL query and in the context of a data model in the CMS.\n\nWant to learn more? Join us at the https://slack.hygraph.com community!","date":"2024-02-07T10:46:04Z","position":"012","image":"https://i.ytimg.com/vi/NpHSqsol3xc/maxresdefault.jpg","videoId":"NpHSqsol3xc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:012-NpHSqsol3xc.md","_source":"content","_file":"3.videos/hygraph/012-NpHSqsol3xc.md","_extension":"md"},{"_path":"/videos/hygraph/013-exzp3okqtxk","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","description":"In this video, we are going over the most prominent buzzwords in our space and I try to explain them from my perspective. After that, we go back to basics and I help you pinpoint exactly what you need before buying into any of them. \n\nConclusion: 97% of brands will only need Content Federation and a solid Headless CMS.\n\nJoin the Hygraph community slack to talk more about this: https://slack.hygraph.com","date":"2024-02-07T10:46:15Z","position":"013","image":"https://i.ytimg.com/vi/EXzp3OkQTXk/maxresdefault.jpg","videoId":"EXzp3OkQTXk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:013-EXzp3OkQTXk.md","_source":"content","_file":"3.videos/hygraph/013-EXzp3OkQTXk.md","_extension":"md"},{"_path":"/videos","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"videos","description":"videos desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Videos"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I made video in different categories. From personal videos to vlogs, to tutorials and work related videos. Lot's of stuff to explore here!"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"tim"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Personal Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"mp"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Middleware Productions Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"uniform"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"headless-creator"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Headless Creator Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:index.md","_source":"content","_file":"3.videos/index.md","_extension":"md"},{"_path":"/videos/live-hygraph/000-eydstedp-v4","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","description":"Svelte is hot right now and we have invited Scott Spence to join Tim Benniks and show us how to use it with Headless CMS!\r\n\r\nTune in on Wednesday, at 4 PM CEST. \r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","date":"2024-05-31T18:29:23Z","position":"000","image":"https://i.ytimg.com/vi/eyDsTeDp-v4/maxresdefault.jpg","videoId":"eyDsTeDp-v4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:000-eyDsTeDp-v4.md","_source":"content","_file":"3.videos/live-hygraph/000-eyDsTeDp-v4.md","_extension":"md"},{"_path":"/videos/live-hygraph/001-_iah2t5g02o","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to integrate Cloudinary with headless CMS w/ Colby Fayock","description":"This Thursday we'll have Colby Fayock from Cloudinary join Tim Benniks for an exclusive livestream to talk about integrating Cloudinary with Hygraph as a headless CMS.\n\nMost people think media on the web is not at all a concern, an image is an image right?\nWell, nope! It's actually incredibly hard to serve images in the right context:\n- Is a user on mobile?\n- How fast is their internet?\n- Do we lazy load?\n- Do we need different image formats for different screen sizes?\n- We do we have art direction for the images?\n- Where do we store the default source and where do we serve the derived images with transformations from?\n- Do we use a CDN?\n- What if an image has to be offline after a certain date due to contracts?\n- What about image quality?\n\nNeed I go on? I can, I have about 10 more problems to throw at you and we haven't even discussed videos yet... \n\nWant to know more? Join ColbyFayock and Tim Benniks on our livestream TODAY where we demo industry leader Cloudinary and how they work together with Hygraph.\r\n\r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","date":"2024-05-31T18:29:16Z","position":"001","image":"https://i.ytimg.com/vi/_Iah2t5g02o/maxresdefault.jpg","videoId":"_Iah2t5g02o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:001-_Iah2t5g02o.md","_source":"content","_file":"3.videos/live-hygraph/001-_Iah2t5g02o.md","_extension":"md"},{"_path":"/videos/live-hygraph/002-fy_w2yousbo","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Combining WordPress with Headless CMS","description":"Want to see the magic of combining WordPress with Hygraph for ultimate power? \r\nWordPress expert Maciek joins Tim on the stream where they explore how to combine forces between WordPress and Hygraph.\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","date":"2024-05-31T18:29:09Z","position":"002","image":"https://i.ytimg.com/vi/fy_w2youSBo/maxresdefault.jpg","videoId":"fy_w2youSBo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:002-fy_w2youSBo.md","_source":"content","_file":"3.videos/live-hygraph/002-fy_w2youSBo.md","_extension":"md"},{"_path":"/videos/live-hygraph/003-jgx1dytflvq","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Exploring localisation & translation with headless CMS","description":"In this week's livestream Niki and Tim explore localisation & translation with a headless CMS. The dynamic duo is back again!\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","date":"2024-05-31T18:29:03Z","position":"003","image":"https://i.ytimg.com/vi/JGx1dYTfLVQ/maxresdefault.jpg","videoId":"JGx1dYTfLVQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:003-JGx1dYTfLVQ.md","_source":"content","_file":"3.videos/live-hygraph/003-JGx1dYTfLVQ.md","_extension":"md"},{"_path":"/videos/live-hygraph/004-ombpixxx-3e","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Customizing Hygraph data with external services","description":"For this livestream follow Tim and Niki to learn how to customize data with Hygraph and third party services!\n\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:55Z","position":"004","image":"https://i.ytimg.com/vi/OmBPIXxX-3E/maxresdefault.jpg","videoId":"OmBPIXxX-3E","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:004-OmBPIXxX-3E.md","_source":"content","_file":"3.videos/live-hygraph/004-OmBPIXxX-3E.md","_extension":"md"},{"_path":"/videos/live-hygraph/005-ht-scjkem9q","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Exploring the Hygraph Asset Manager","description":"In this stream, Fabian and Tim explore the features of the all-new asset manager in Hygraph. Upload via API, transform assets via GraphQL, and more!\n\r\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:50Z","position":"005","image":"https://i.ytimg.com/vi/Ht-scjKem9Q/maxresdefault.jpg","videoId":"Ht-scjKem9Q","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:005-Ht-scjKem9Q.md","_source":"content","_file":"3.videos/live-hygraph/005-Ht-scjKem9Q.md","_extension":"md"},{"_path":"/videos/live-hygraph/006-qegf6rerifw","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Hygraph Studio Launch - Workshop: Hygraph Asset Management","description":"Developer Relations Lead Tim Benniks will walk you through the most important elements of the new and improved Hygraph Asset Management, which has been revamped for improved performance and reliability. Of course, he won’t stop there; join him for a hands-on code-along!\nLinkedIn: https://www.linkedin.com/in/timbenniks/ \nTwitter: https://twitter.com/timbenniks \n\nCode along!\nNuxt: https://github.com/hygraph/hygraph-stock-library-starter-nuxt \nNext: https://github.com/hygraph/hygraph-stock-library-starter-next \nHygraph project: https://app.hygraph.com/clone/6b3636b3c7914fe5904fd41e364bc1cf?name=Asset%20Management%20Workshop \nDemo URL: https://hygraph-stock-library-starter-nuxt.vercel.app \n\nJoin our Hygraph Community slack channel and give your feedback here: https://bit.ly/hygraph-studio-feedback \n#HygraphStudio","date":"2024-05-31T18:29:56Z","position":"006","image":"https://i.ytimg.com/vi/qeGf6RERiFw/maxresdefault.jpg","videoId":"qeGf6RERiFw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:006-qeGf6RERiFw.md","_source":"content","_file":"3.videos/live-hygraph/006-qeGf6RERiFw.md","_extension":"md"},{"_path":"/videos/live-hygraph/007-etie3zygone","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Hygraph Studio Launch - DevX: Performance Gains","description":"In this session, our Product Managers Alexey Orlovskiy and Fabian Beliza walk you through new features and improvements around developer experience and performance. You will learn about Hygraph Studio, Hygraph Asset Management, and some under-the-hood improvements to Content and Management API. Then our Sr. Technical Writer, Romina Soledad Soto, will talk about our approach to documentation and where you can find all information related to Hygraph Studio Docs. \nhttps://www.linkedin.com/in/aorlovskiy/ \nhttps://www.linkedin.com/in/fabianbeliza/\nhttps://www.linkedin.com/in/romina-soto-098b4139/\n\nAsset Docs: https://hygraph.com/docs/api-reference/assets/assets-overview \nBlog post about new Asset System: https://hygraph.com/blog/new-digital-asset-management-system \nCaching Docs: https://hygraph.com/docs/api-reference/basics/caching \nStudio Docs: https://studio-docs.hygraph.com/ \n\nJoin our Hygraph Community slack channel and give your feedback here: https://bit.ly/hygraph-studio-feedback \n#HygraphStudio","date":"2024-05-31T18:29:49Z","position":"007","image":"https://i.ytimg.com/vi/Etie3ZYgonE/maxresdefault.jpg","videoId":"Etie3ZYgonE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:007-Etie3ZYgonE.md","_source":"content","_file":"3.videos/live-hygraph/007-Etie3ZYgonE.md","_extension":"md"},{"_path":"/videos/live-hygraph/008-phcxh2m7ozm","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to build a live-voting experience with Hygraph, Nuxt and Supabase","description":"Tim did a conference talk last week where he created a guitar karaoke experience in which the audience could live-vote what 4-song mashup he'd play. In this live stream we deep dive into how this was built with Supabase, Hygraph and Nuxt.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:43Z","position":"008","image":"https://i.ytimg.com/vi/PhCXH2M7OzM/maxresdefault.jpg","videoId":"PhCXH2M7OzM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:008-PhCXH2M7OzM.md","_source":"content","_file":"3.videos/live-hygraph/008-PhCXH2M7OzM.md","_extension":"md"},{"_path":"/videos/live-hygraph/009-pzc527rz7es","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Building Content Models for Devs and Editors w/ Lo & Bryan","description":"For this week's livestream we'll have Lo and Bryan build content models for devs & editors. We'll take a look at web.dev from Google and discuss how we'd structure content models for that design and the real-world ramifications.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:39Z","position":"009","image":"https://i.ytimg.com/vi/PzC527rZ7Es/maxresdefault.jpg","videoId":"PzC527rZ7Es","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:009-PzC527rZ7Es.md","_source":"content","_file":"3.videos/live-hygraph/009-PzC527rZ7Es.md","_extension":"md"},{"_path":"/videos/live-hygraph/010-t00uxbjsdum","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Bryan teaches Tim Next.js with GraphQL and Hygraph","description":"See Tim learn on the spot as Bryan teaches him Next.js 14 app directory with GraphQL and \"load more\" functionality with Hygraph.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:31Z","position":"010","image":"https://i.ytimg.com/vi/t00uXBjsDUM/maxresdefault.jpg","videoId":"t00uXBjsDUM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:010-t00uXBjsDUM.md","_source":"content","_file":"3.videos/live-hygraph/010-t00uXBjsDUM.md","_extension":"md"},{"_path":"/videos/live-hygraph/011-o_dvlrwpebk","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Pagination with Astro and Hygraph","description":"Want to learn more about pagination in Astro and Hygraph? Join Bryan and Tim on their mission to asynchronously load more content via pagination or a load more button. Astro rocks!\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:26Z","position":"011","image":"https://i.ytimg.com/vi/O_dVLRWPeBk/maxresdefault.jpg","videoId":"O_dVLRWPeBk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:011-O_dVLRWPeBk.md","_source":"content","_file":"3.videos/live-hygraph/011-O_dVLRWPeBk.md","_extension":"md"},{"_path":"/videos/live-hygraph/012-vrrzgly1n5c","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to use Rich Text in a Headless CMS","description":"Join Bryan and Tim from Hygraph as they explore how to use a Rich Text editor in a Headless CMS. Learn about features and ways of implementing them in your front-end!\n\r\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:21Z","position":"012","image":"https://i.ytimg.com/vi/VRrZgly1n5c/maxresdefault.jpg","videoId":"VRrZgly1n5c","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:012-VRrZgly1n5c.md","_source":"content","_file":"3.videos/live-hygraph/012-VRrZgly1n5c.md","_extension":"md"},{"_path":"/videos/live-hygraph/013-m5xamvlqh1g","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Add multi-tenancy to a Headless CMS","description":"Hygraph's Lo Etheridge and Tim Benniks deep-dive into setting up multi-tenancy inside Hygraph using the SKNCRE starter. Can two brands live in one project? Yes! Find out on the stream.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:16Z","position":"013","image":"https://i.ytimg.com/vi/M5XaMvlqh1g/maxresdefault.jpg","videoId":"M5XaMvlqh1g","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:013-M5XaMvlqh1g.md","_source":"content","_file":"3.videos/live-hygraph/013-M5XaMvlqh1g.md","_extension":"md"},{"_path":"/videos/live-hygraph/014-jc09s5zmw_k","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Programmatically import data into the Hygraph Headless CMS","description":"Niki and Tim explore how to import data that lives in external systems into Hygraph. Join us for a chill vibe where we explore SDK's and chat data.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com\n#headlesscms #javascript #jamstack","date":"2024-05-31T18:28:10Z","position":"014","image":"https://i.ytimg.com/vi/JC09S5zmW_k/maxresdefault.jpg","videoId":"JC09S5zmW_k","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:014-JC09S5zmW_k.md","_source":"content","_file":"3.videos/live-hygraph/014-JC09S5zmW_k.md","_extension":"md"},{"_path":"/videos/live-hygraph/015-aietljmxmxm","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Building an e-commerce site with Hygraph and Astro","description":"We have invited Elian from the Astro core team to join Tim on a chill stream in which they convert the skncre Nuxt starter for Hygraph to Astro. Along the way you will learn the core concepts of Astro and Hygraph, all while diving deep into the code.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:02Z","position":"015","image":"https://i.ytimg.com/vi/AieTLJMxmxM/maxresdefault.jpg","videoId":"AieTLJMxmxM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:015-AieTLJMxmxM.md","_source":"content","_file":"3.videos/live-hygraph/015-AieTLJMxmxM.md","_extension":"md"},{"_path":"/videos/live-uniform/000-5qx4fmkkh_m","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Product Meetup","description":"Personalization Basics: Intents and signals","date":"2024-05-31T18:33:26Z","position":"000","image":"https://i.ytimg.com/vi/5qX4fmKKh_M/maxresdefault.jpg","videoId":"5qX4fmKKh_M","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:000-5qX4fmKKh_M.md","_source":"content","_file":"3.videos/live-uniform/000-5qX4fmKKh_M.md","_extension":"md"},{"_path":"/videos/live-uniform/001-zdqk9zql3za","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","description":"Tony & Tim have invited Alex Shyba to talk about the Jamstack and beyond!\n\nFollow us here:\nhttps://twitter.com/uniformdev\nhttps://twitter.com/timbenniks\nhttps://twitter.com/tmamedbekov","date":"2024-05-31T18:33:33Z","position":"001","image":"https://i.ytimg.com/vi/ZdQk9zql3zA/maxresdefault.jpg","videoId":"ZdQk9zql3zA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:001-ZdQk9zql3zA.md","_source":"content","_file":"3.videos/live-uniform/001-ZdQk9zql3zA.md","_extension":"md"},{"_path":"/videos/live-uniform/002-tngn1e4hefi","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Product Meetup #2: Interesting usecases with Adam Lamarre","description":"In this instalment we look into more complex use cases for personalisation. Search results and indexation can generate amazing results when personalised properly. Adam Lamarre shows how to integrate Uniform with Algolia for great results on Jamstack websites!","date":"2024-05-31T18:33:37Z","position":"002","image":"https://i.ytimg.com/vi/Tngn1E4HEFI/maxresdefault.jpg","videoId":"Tngn1E4HEFI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:002-Tngn1E4HEFI.md","_source":"content","_file":"3.videos/live-uniform/002-Tngn1E4HEFI.md","_extension":"md"},{"_path":"/videos/live-uniform/003-vkfasdfduf8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Personalizing Storyblok with Uniform and Nuxt.js","description":"In this stream Tim from Uniform is accompanied by Samuel and Alba to help him set up Storyblok from scratch. After that they dive into how to integrate Uniform with Storyblok as a custom field type to show off how to personalize Storyblok.","date":"2024-05-31T18:33:43Z","position":"003","image":"https://i.ytimg.com/vi/vkFASdFdUF8/maxresdefault.jpg","videoId":"vkFASdFdUF8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:003-vkFASdFdUF8.md","_source":"content","_file":"3.videos/live-uniform/003-vkFASdFdUF8.md","_extension":"md"},{"_path":"/videos/live-uniform/004-baibxsoagdw","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Page compositions in Next.js with Uniform Canvas and the Jamstack","description":"Cable management in Next.js: creating compositions with different headless sources with Uniform Canvas in Next.js.","date":"2024-05-31T18:33:51Z","position":"004","image":"https://i.ytimg.com/vi/BAIBxSoAgdw/maxresdefault.jpg","videoId":"BAIBxSoAgdw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:004-BAIBxSoAgdw.md","_source":"content","_file":"3.videos/live-uniform/004-BAIBxSoAgdw.md","_extension":"md"},{"_path":"/videos/live-uniform/005-rv4wzkhjp7k","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"A Uniform Canvas use case deep-dive","description":"In this Livestream we are unpacking how Tim created a Cloudinary shoppable video player based on Uniform Canvas data from Contentful and BigCommerce","date":"2024-05-31T18:33:58Z","position":"005","image":"https://i.ytimg.com/vi/RV4wZkhJp7k/maxresdefault.jpg","videoId":"RV4wZkhJp7k","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:005-RV4wZkhJp7k.md","_source":"content","_file":"3.videos/live-uniform/005-RV4wZkhJp7k.md","_extension":"md"},{"_path":"/videos/live-uniform/006-r2lwjmehkmo","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"The Modern Digital Pipeline - The future of Jamstack is composable","description":"Nowadays we are faced with an ever-expanding landscape of headless technologies like commerce engines, CMS, asset management, payments and many more. All these services are API-first and this comes with a new paradigm: there is no more origin server.\r\n\r\nIn this livestream we will use Nuxt 3 to wire up a modern Jamstack site (in a few flavours, including SSR at the egde) that uses many different headless sources. The goal: high performance, great DX, freedom of choice and never re-platforming again...","date":"2024-05-31T18:34:04Z","position":"006","image":"https://i.ytimg.com/vi/R2LwjMEhkmo/maxresdefault.jpg","videoId":"R2LwjMEhkmo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:006-R2LwjMEhkmo.md","_source":"content","_file":"3.videos/live-uniform/006-R2LwjMEhkmo.md","_extension":"md"},{"_path":"/videos/live-uniform/007-7-ebcqip9ec","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Natalia Venditto","description":"Kicking off our first Composable without Compromise livestream w/ Natalia Venditto. \nIn these live streams we talk about composability. From architectures, to design approaches, to tech organization and governance. Anything MACH Alliance, DXC or headless composition related is a valid subject. Monolith to composable stories. How to deal with composability as a developer, or as a leader. \n\nNatalia worked in the roles of frontend and full-stack developer, technical lead and software architect leading enterprise implementations and as a solutions architect advising on data intensive implementations. Now she leads the end-to-end DX for JavaScript devs on Azure. \nhttps://twitter.com/AnfibiaCreativa\n\nBack in the days when Natalia started working as a developer, the frontend was nothing but a couple of CSS and JavaScript files or lines injected to the HTML. But the whole JavaScript ecosystem has evolved at a very dynamic fast pace. The role of frontend technologies and patterns when designing new web architectures, has never been so influential as it is today. Let's talk about the multiple challenges, but also opportunities, that the cloud offers to build lightning fast and super performant user interfaces, on top of cutting-edge cloud tech!\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:11Z","position":"007","image":"https://i.ytimg.com/vi/7-eBCQiP9Ec/maxresdefault.jpg","videoId":"7-eBCQiP9Ec","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:007-7-eBCQiP9Ec.md","_source":"content","_file":"3.videos/live-uniform/007-7-eBCQiP9Ec.md","_extension":"md"},{"_path":"/videos/live-uniform/008-1h0jr_vbz7m","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Daniel Roe","description":"Kicking off our first Unpack the Stack livestream w/ Daniel Roe.\nIn these live streams we unpack a stack. As in, a technical person explains how they built something or we talk about something technical that excites them. \n\nDaniel is a core team member of Nuxt - previously a CTO of a SaaS startup. His open-source work has a focus in the Vue.js and Nuxt ecosystems and he's involved in consultancy with companies around the world, particularly around JAMstack, serverless and software architecture. He's based in the North East of England where he lives with his family, three cats, and a dog.\nhttps://twitter.com/danielcroe\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:18Z","position":"008","image":"https://i.ytimg.com/vi/1h0jR_vBZ7M/maxresdefault.jpg","videoId":"1h0jR_vBZ7M","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:008-1h0jR_vBZ7M.md","_source":"content","_file":"3.videos/live-uniform/008-1h0jR_vBZ7M.md","_extension":"md"},{"_path":"/videos/live-uniform/009-sitbljdtbjy","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Matt Webb","description":"Composable without Compromise livestream with Matt Webb. \nIn these live streams we talk about composability. From architectures, to design approaches, to tech organization and governance. Anything MACH Alliance, DXC or headless composition related is a valid subject. Monolith to composable stories. How to deal with composability as a developer, or as a leader. \n\nA technology lead with over 20 years experience at global CTO level for large digital agencies, delivering projects in the field of global enterprise CMS, eCommerce, data, composable/MACH architectures, through to Internet of things, Augmented/Virtual reality, and Artificial Intelligence. \nBIMA 100 Tech trailblazer 2021, MACH Alliance ambassador.\nhttps://twitter.com/webgeekwebb\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:23Z","position":"009","image":"https://i.ytimg.com/vi/sitBLjdTBJY/maxresdefault.jpg","videoId":"sitBLjdTBJY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:009-sitBLjdTBJY.md","_source":"content","_file":"3.videos/live-uniform/009-sitBLjdTBJY.md","_extension":"md"},{"_path":"/videos/live-uniform/010-rbjccl9qate","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Colby Fayock","description":"Unpack the Stack livestream with Colby Fayock, Senior Developer Experience Engineer at Cloudinary. \nIn these live streams we unpack a stack. As in, a technical person explains how they built something or we talk about something technical that excites them. \n\nAstrocoder, Developer Experience Engineer, Space Jelly Commander\nColby Fayock helps others get the tech out of the way to solve real problems with the tools of the web. He works with the dev community at Cloudinary and is a prolific creator of educational content teaching others through learning by doing one Star Wars plush cuddle at a time. \nhttps://twitter.com/colbyfayock\nhttps://twitter.com/cloudinary\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif...","date":"2024-05-31T18:34:29Z","position":"010","image":"https://i.ytimg.com/vi/RbJCcl9qaTE/maxresdefault.jpg","videoId":"RbJCcl9qaTE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:010-RbJCcl9qaTE.md","_source":"content","_file":"3.videos/live-uniform/010-RbJCcl9qaTE.md","_extension":"md"},{"_path":"/videos/live-uniform/011-yjc8gvarvge","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Casper Rasmussen","description":"Composable without Compromise livestream with Casper Rasmussen.\nCasper and Tim discussed why MACH and Composable matter and how it can help business and developer team be more relevant and agile. Having a composable mindset and MACH tech enables companies to win, but there are typical pitfalls to watch out for which can compromise the potentials on MACH.\n\nSeasoned speaker, technology leader and MACH evangelist.\nCasper acts as the Global business lead for MACH and Composable Enterprise at Valtech. \nCasper is elected President at the MACH Alliance and thereby leads the organization along with the Executive Board.\nhttps://twitter.com/valtech\n\nHis portfolio is focused on complex enterprise transformations and acts as the principle for technical strategy, system architecture and integration approach within his client’s technical landscape. He leads technology engagements by analyzing business goals and requirements, aligning these priorities with a viable technological approach, and leading teams to drive business value for clients. ​ \n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:36Z","position":"011","image":"https://i.ytimg.com/vi/yjc8gvaRvGE/maxresdefault.jpg","videoId":"yjc8gvaRvGE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:011-yjc8gvaRvGE.md","_source":"content","_file":"3.videos/live-uniform/011-yjc8gvaRvGE.md","_extension":"md"},{"_path":"/videos/live-uniform/012-6ek_bv2yrf8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Brittney Postma","description":"Unpack the Stack livestream with Brittney Postma.\nCheck out how Tim and Brittany are unpacking Svelte and SvelteKit live.\n\nBrittney Postma is a self-taught developer and mom of three currently employed at Netlify as a Developer Experience Engineer. She also does podcasts and livestreams with CodingCat.dev and am the co-founder of the Svelte Sirens, a group for women, non-binary people, and allies in the Svelte community.\nhttps://twitter.com/brittneypostma\nhttps://twitter.com/netlify\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:42Z","position":"012","image":"https://i.ytimg.com/vi/6ek_bv2YrF8/maxresdefault.jpg","videoId":"6ek_bv2YrF8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:012-6ek_bv2YrF8.md","_source":"content","_file":"3.videos/live-uniform/012-6ek_bv2YrF8.md","_extension":"md"},{"_path":"/videos/live-uniform/013-trisovjcivw","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Filip Rakowski","description":"In this livestream our host Tim Benniks interviews our guest Filip and the questions are listed as below. \n\n1:23 Introduction \n3:17 What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n5:47 If you had to advise agency or SaaS company execs, what would it be?\n10:53 If you could wave a magic wand and change something in our space, what would it be?\n15:00 What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n18:28 What feature from old technology would you like to bring back?\n22:48 How would you explain composable architectures to a 15 year old? \n25:41 What is a question for the next person?\n\nCo-founder & CTO of Vue Storefront - biggest Open Source eCommerce frontend project, co-organizer of Wrocław, Vue.js meetups, web perf geek since 2017, proud cat owner.\nhttps://twitter.com/filrakowski\nhttps://twitter.com/VueStorefront\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif...\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:52Z","position":"013","image":"https://i.ytimg.com/vi/TRISovjciVw/maxresdefault.jpg","videoId":"TRISovjciVw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:013-TRISovjciVw.md","_source":"content","_file":"3.videos/live-uniform/013-TRISovjciVw.md","_extension":"md"},{"_path":"/videos/live-uniform/014-0xsg-apdt6c","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Tomek Juranek","description":"Livestream guest: Tomasz Juranek, CTO of Include Agency\nhttps://twitter.com/tjWhuu\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:03Z","position":"014","image":"https://i.ytimg.com/vi/0XSG-apDT6c/maxresdefault.jpg","videoId":"0XSG-apDT6c","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:014-0XSG-apDT6c.md","_source":"content","_file":"3.videos/live-uniform/014-0XSG-apDT6c.md","_extension":"md"},{"_path":"/videos/live-uniform/015-hsirsjtqgs8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Dom Selvon","description":"In this live stream our host Tim Benniks interviews special guest Dom Selvon with the following questions:\n\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n2. If you had to advise agency or SaaS company execs, what would it be?\n3. If you could wave a magic wand and change something in our space, what would it be?\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n5. What feature from old technology would you like to bring back?\n6. How would you explain composable architectures to a 15 year old?\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:11Z","position":"015","image":"https://i.ytimg.com/vi/HsiRsJtqgS8/maxresdefault.jpg","videoId":"HsiRsJtqgS8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:015-HsiRsJtqgS8.md","_source":"content","_file":"3.videos/live-uniform/015-HsiRsJtqgS8.md","_extension":"md"},{"_path":"/videos/live-uniform/016-uuhul0tpezy","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","description":"Livestream guests:\nSybren Willemot, Front-end developer, Euricom NV / Chakra UI, https://twitter.com/carwack\nJonathan Bakebwa, CTO, Mirror World, https://twitter.com/codebender828\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:17Z","position":"016","image":"https://i.ytimg.com/vi/UUHUL0tpEZY/maxresdefault.jpg","videoId":"UUHUL0tpEZY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:016-UUHUL0tpEZY.md","_source":"content","_file":"3.videos/live-uniform/016-UUHUL0tpEZY.md","_extension":"md"},{"_path":"/videos/live-uniform/017-8ju8znzjoh4","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack: next.js app directory with Steven Tey","description":"In this stream, we dive into the new Next JS app directory to see what it is all about. We discuss the new approach to building websites with Next, and we show off how Uniform fits into this new shiny way of working!\nLivestream guest: Steven Tey, Senior Developer Advocate, Vercel\nhttps://twitter.com/steventey\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:22Z","position":"017","image":"https://i.ytimg.com/vi/8Ju8znzJoH4/maxresdefault.jpg","videoId":"8Ju8znzJoH4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:017-8Ju8znzJoH4.md","_source":"content","_file":"3.videos/live-uniform/017-8Ju8znzJoH4.md","_extension":"md"},{"_path":"/videos/live-uniform/018-wmacanhmrsi","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack with Elian Van Cutsem","description":"Livestream guest: Elian Van Cutsem, Software Engineer | Astro Ambassador, vBridge\nhttps://twitter.com/ElianCodes\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:28Z","position":"018","image":"https://i.ytimg.com/vi/wmaCANHmRsI/maxresdefault.jpg","videoId":"wmaCANHmRsI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:018-wmaCANHmRsI.md","_source":"content","_file":"3.videos/live-uniform/018-wmaCANHmRsI.md","_extension":"md"},{"_path":"/videos/live-uniform/019-axqvbrv_xc8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack with Marc Backes","description":"Livestream guest: Marc Backes, DevRel Lead @WeAreDevelopers\nhttps://twitter.com/themarcba\nhttps://twitter.com/WeAreDevs\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:33Z","position":"019","image":"https://i.ytimg.com/vi/axqVBrV_Xc8/maxresdefault.jpg","videoId":"axqVBrV_Xc8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:019-axqVBrV_Xc8.md","_source":"content","_file":"3.videos/live-uniform/019-axqVBrV_Xc8.md","_extension":"md"},{"_path":"/videos/live-uniform/020-gmh8pm-nvl0","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack with William Imoh","description":"William and Tim discuss Saas companies' different onboarding, upselling, and developer experience approaches.\n\nLivestream guest: William Imoh\nhttps://twitter.com/iChuloo\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:37Z","position":"020","image":"https://i.ytimg.com/vi/gMH8pM-nvL0/maxresdefault.jpg","videoId":"gMH8pM-nvL0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:020-gMH8pM-nvL0.md","_source":"content","_file":"3.videos/live-uniform/020-gMH8pM-nvL0.md","_extension":"md"},{"_path":"/videos/live-uniform/021-5r8_kiqjk6c","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","description":"Livestream guests: \nMaurizio Pedriale, Co-CTO, Mirahi, https://twitter.com/mpedriale\nBoubacar S. Barry aka Bouba, Co-CTO, Mirahi, https://twitter.com/b_b4rry \nhttps://twitter.com/mirahi_io\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:42Z","position":"021","image":"https://i.ytimg.com/vi/5r8_KIQjk6c/maxresdefault.jpg","videoId":"5r8_KIQjk6c","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:021-5r8_KIQjk6c.md","_source":"content","_file":"3.videos/live-uniform/021-5r8_KIQjk6c.md","_extension":"md"},{"_path":"/videos/live-uniform/022-hveoqtpoimk","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Lucie from Prismic","description":"Livestream guest: \nLucie Haberer, Developer Experience Engineer, Prismic\nhttps://twitter.com/li_hbr\nhttps://twitter.com/prismicio\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:49Z","position":"022","image":"https://i.ytimg.com/vi/hvEOqTpoImk/maxresdefault.jpg","videoId":"hvEOqTpoImk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:022-hvEOqTpoImk.md","_source":"content","_file":"3.videos/live-uniform/022-hvEOqTpoImk.md","_extension":"md"},{"_path":"/videos/live-uniform/023-skuvyvd-njg","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","description":"Livestream guest: \nDebbie O'Brien, Senior Program Manager at Microsoft advocating for Playwright Testing\nhttps://twitter.com/debs_obrien\nhttps://twitter.com/playwrightweb\nhttps://twitter.com/Microsoft\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:58Z","position":"023","image":"https://i.ytimg.com/vi/sKUVyVd-nJg/maxresdefault.jpg","videoId":"sKUVyVd-nJg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:023-sKUVyVd-nJg.md","_source":"content","_file":"3.videos/live-uniform/023-sKUVyVd-nJg.md","_extension":"md"},{"_path":"/videos/live-uniform/024-mnkxtbb3_vw","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Harshil from Contentful","description":"Livestream guest: \nHarshil Agrawal, Developer Advocate, Contentful\nhttps://twitter.com/harshil1712\nhttps://twitter.com/contentful\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:36:07Z","position":"024","image":"https://i.ytimg.com/vi/MnkxTbb3_Vw/maxresdefault.jpg","videoId":"MnkxTbb3_Vw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:024-MnkxTbb3_Vw.md","_source":"content","_file":"3.videos/live-uniform/024-MnkxTbb3_Vw.md","_extension":"md"},{"_path":"/videos/live-uniform/025-hmtwfhon2o","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Introducing: Mesh + Component Starter Kit with Richard and Tim","description":"Join us live to hear about the latest Uniform features to make content management faster and more efficient for teams. The Component Starter Kit offers open-source, customizable components for building key pages, while improved data connections via Mesh allow for easier setup and fast edge-cached content delivery. \n\nLivestream guest: Richard Bausek, Director of Product Management at Uniform\nhttps://twitter.com/richardbausek\nhttps://uniform.dev/\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:36:13Z","position":"025","image":"https://i.ytimg.com/vi/-hmTWfHON2o/maxresdefault.jpg","videoId":"-hmTWfHON2o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:025--hmTWfHON2o.md","_source":"content","_file":"3.videos/live-uniform/025--hmTWfHON2o.md","_extension":"md"},{"_path":"/videos/live-uniform/026-dvqvxggnp5q","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Jonas Ulrich","description":"In this live stream our host Tim Benniks interviews special guest Jonas Ulrich with the following questions:\n\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n2. If you had to advise agency or SaaS company execs, what would it be?\n3. If you could wave a magic wand and change something in our space, what would it be?\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n5. What feature from old technology would you like to bring back?\n6. How would you explain composable architectures to a 15 year old?\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:36:18Z","position":"026","image":"https://i.ytimg.com/vi/DvqvXGgnp5Q/maxresdefault.jpg","videoId":"DvqvXGgnp5Q","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:026-DvqvXGgnp5Q.md","_source":"content","_file":"3.videos/live-uniform/026-DvqvXGgnp5Q.md","_extension":"md"},{"_path":"/videos/live-uniform/027-vfeieragxac","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","description":"In this live stream our host Tim Benniks interviews special guest Jasmin Guthmann with the following questions:\r\n\r\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\r\n2. If you had to advise agency or SaaS company execs, what would it be?\r\n3. If you could wave a magic wand and change something in our space, what would it be?\r\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\r\n5. What feature from old technology would you like to bring back?\r\n6. How would you explain composable architectures to a 15 year old?\r\n\r\n\r\nLivestream Host: Tim Benniks \r\nhttps://twitter.com/timbenniks\r\nhttps://www.linkedin.com/in/timbenniks/\r\n\r\nJoin us on Discord at https://uniform.to/discord\r\nLearn more at https://uniform.dev\r\n\r\nFollow us on:\r\nFacebook: https://www.facebook.com/people/Uniform/\r\nTwitter: https://twitter.com/UniformDev \r\nLinkedIn: https://www.linkedin.com/company/uniformdev \r\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:36:23Z","position":"027","image":"https://i.ytimg.com/vi/VfeIeragxAc/maxresdefault.jpg","videoId":"VfeIeragxAc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:027-VfeIeragxAc.md","_source":"content","_file":"3.videos/live-uniform/027-VfeIeragxAc.md","_extension":"md"},{"_path":"/videos/live-uniform/028-ekut1koa2n8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","description":"What Legacy? A uniform Live stream series.","date":"2024-05-31T18:36:30Z","position":"028","image":"https://i.ytimg.com/vi/eKUT1KoA2n8/maxresdefault.jpg","videoId":"eKUT1KoA2n8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:028-eKUT1KoA2n8.md","_source":"content","_file":"3.videos/live-uniform/028-eKUT1KoA2n8.md","_extension":"md"},{"_path":"/videos/live-uniform/029-opklvtnkncs","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"How the RFP process has improved with composable architectures","description":"Mark and Tim explore how the RFP process has improved with composable architectures and how Uniform can help","date":"2024-05-31T18:36:35Z","position":"029","image":"https://i.ytimg.com/vi/OpkLVtnKnCs/maxresdefault.jpg","videoId":"OpkLVtnKnCs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:029-OpkLVtnKnCs.md","_source":"content","_file":"3.videos/live-uniform/029-OpkLVtnKnCs.md","_extension":"md"},{"_path":"/videos/live-uniform/030-m-kkuomzg88","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable CMS evaluation: Delivery APIs and CDNs","description":"We're checking out CMS Delivery APIs and CDNs!","date":"2024-05-31T18:36:43Z","position":"030","image":"https://i.ytimg.com/vi/M-KkUomZG88/maxresdefault.jpg","videoId":"M-KkUomZG88","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:030-M-KkUomZG88.md","_source":"content","_file":"3.videos/live-uniform/030-M-KkUomZG88.md","_extension":"md"},{"_path":"/videos/live-uniform/031-jvgiaotcerq","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"What legacy? Migration tactics for monolith to composable","description":"Alex and Tim explore migration tactics for monolith to composable architectures.","date":"2024-05-31T18:36:49Z","position":"031","image":"https://i.ytimg.com/vi/JVgiaoTcErQ/maxresdefault.jpg","videoId":"JVgiaoTcErQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:031-JVgiaoTcErQ.md","_source":"content","_file":"3.videos/live-uniform/031-JVgiaoTcErQ.md","_extension":"md"},{"_path":"/videos/live-uniform/032-isxyi-5do5o","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable CMS evaluation: SDK frameworks","description":"In this episode, we discuss SDKs and how to interact with CMSs. Choose wisely!","date":"2024-05-31T18:36:56Z","position":"032","image":"https://i.ytimg.com/vi/IsXYI-5Do5o/maxresdefault.jpg","videoId":"IsXYI-5Do5o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:032-IsXYI-5Do5o.md","_source":"content","_file":"3.videos/live-uniform/032-IsXYI-5Do5o.md","_extension":"md"},{"_path":"/videos/misc-streams/000-1tjmq5b0fmc","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"The Dare Dialogues - S01E03: Making Waves","description":"Tim Benniks and Sonja Keerl will dive into the findings of the latest Forrester Wave™ for B2C Commerce, unveiling something noteworthy: the leader quadrant remained empty.","date":"2024-06-15T10:46:55Z","position":"000","image":"https://i.ytimg.com/vi/1TJMq5b0fMc/maxresdefault.jpg","videoId":"1TJMq5b0fMc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:000-1TJMq5b0fMc.md","_source":"content","_file":"3.videos/misc-streams/000-1TJMq5b0fMc.md","_extension":"md"},{"_path":"/videos/misc-streams/001-tvpdzpl2pvm","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"The Dare Dialogues - S01E02: Mount Stupid","description":"Have you ever been to the summit of Mount Stupid? No need to answer: you likely climbed it a few times! Today we discuss the Dunning-Kruger Effect and our personal experiences with it.","date":"2024-06-15T10:46:51Z","position":"001","image":"https://i.ytimg.com/vi/TvPdZPL2pvM/maxresdefault.jpg","videoId":"TvPdZPL2pvM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:001-TvPdZPL2pvM.md","_source":"content","_file":"3.videos/misc-streams/001-TvPdZPL2pvM.md","_extension":"md"},{"_path":"/videos/misc-streams/002-rjjyhwso1gg","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"Customer Story: How to Create AI Videos for B2B Content Marketing","description":"Videos are a highly engaging and dynamic medium that can effectively capture and retain the attention of B2B audiences—allowing businesses to convey complex information visually appealing and concisely, making it easier for customers to understand their products or services. They also help build trust, as B2B purchases often involve significant investments and long-term commitments. Video marketing enables companies to showcase their expertise, demonstrate their products in action, and provide customer testimonials, which help build trust and credibility with potential buyers.\nHeyGen is a b2b solution that allows customers to create AI videos at scale. Fast and affordable, saving your team time and money. No camera, no crew, no problem.\n\nThe webinar will be a live interview where our CEO and Co-Founder, Josh Xu, will discuss a customer success story with Tim Benniks, who created an Avatar Lite using HeyGen AI technology, became a brand ambassador, and developed a b2b marketing strategy for his company. \n\nTake advantage of this exciting and informative live and interactive webinar. We will also be giving a five-minute credit to attendees to start creating AI videos at scale. Join us and discover the power of HeyGen AI.\n\nWhen: Thursday, July 27, 11:00 am PST/ 2:00 pm EST","date":"2023-07-27T18:45:56Z","position":"002","image":"https://i.ytimg.com/vi/rjjyHwSO1gg/maxresdefault.jpg","videoId":"rjjyHwSO1gg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:002-rjjyHwSO1gg.md","_source":"content","_file":"3.videos/misc-streams/002-rjjyHwSO1gg.md","_extension":"md"},{"_path":"/videos/misc-streams/003-jvgiaotcerq","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"What legacy? Migration tactics for monolith to composable","description":"Alex and Tim explore migration tactics for monolith to composable architectures.","date":"2023-07-25T11:36:51Z","position":"003","image":"https://i.ytimg.com/vi/JVgiaoTcErQ/maxresdefault.jpg","videoId":"JVgiaoTcErQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:003-JVgiaoTcErQ.md","_source":"content","_file":"3.videos/misc-streams/003-JVgiaoTcErQ.md","_extension":"md"},{"_path":"/videos/misc-streams/004-ekut1koa2n8","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","description":"What Legacy? A uniform Live stream series.","date":"2023-07-25T11:37:10Z","position":"004","image":"https://i.ytimg.com/vi/eKUT1KoA2n8/maxresdefault.jpg","videoId":"eKUT1KoA2n8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:004-eKUT1KoA2n8.md","_source":"content","_file":"3.videos/misc-streams/004-eKUT1KoA2n8.md","_extension":"md"},{"_path":"/videos/misc-streams/005-d8ahncxgryg","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: TresJS with Alvaro Sabu","description":"TresJS brings Three to the Vue ecosystem. This is the #timtries Series. Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time.","date":"2023-03-19T15:52:33Z","position":"005","image":"https://i.ytimg.com/vi/D8AhNcXgrYg/maxresdefault.jpg","videoId":"D8AhNcXgrYg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:005-D8AhNcXgrYg.md","_source":"content","_file":"3.videos/misc-streams/005-D8AhNcXgrYg.md","_extension":"md"},{"_path":"/videos/misc-streams/006-umfrj32jle0","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"Keyboard Madness with Janos Kehl and Konstantin Bifert","description":"So you like keyboards right? Me too! I have a ton of questions so I have asked keyboard experts Janos and Konstantin to join me on a live stream and answer all of them 🔥🌶️🥳","date":"2023-03-19T15:52:17Z","position":"006","image":"https://i.ytimg.com/vi/UmfRj32Jle0/maxresdefault.jpg","videoId":"UmfRj32Jle0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:006-UmfRj32Jle0.md","_source":"content","_file":"3.videos/misc-streams/006-UmfRj32Jle0.md","_extension":"md"},{"_path":"/videos/mp/000-ubgzoawmqlw","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Amsterdam 2024","description":"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2024-03-01T11:20:13Z","position":"000","image":"https://i.ytimg.com/vi/ubGZoaWMqLw/maxresdefault.jpg","videoId":"ubGZoaWMqLw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:000-ubGZoaWMqLw.md","_source":"content","_file":"3.videos/mp/000-ubGZoaWMqLw.md","_extension":"md"},{"_path":"/videos/mp/001-zx6_fi0sdmy","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Amsterdam Vlog 2023","description":"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2023-02-13T08:34:01Z","position":"001","image":"https://i.ytimg.com/vi/zX6_Fi0sDMY/maxresdefault.jpg","videoId":"zX6_Fi0sDMY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:001-zX6_Fi0sDMY.md","_source":"content","_file":"3.videos/mp/001-zX6_Fi0sDMY.md","_extension":"md"},{"_path":"/videos/mp/002-d4rai10p9m4","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"JSWorld Conference 2023 Vlog","description":"Marc and Tim explored backstage at the JSWorld conference, one of the biggest JS conferences in the world. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video-edit, and sound-edit, and publish the video on the day. Film in the morning, show in the afternoon.","date":"2023-02-13T08:19:14Z","position":"002","image":"https://i.ytimg.com/vi/D4RaI10P9m4/maxresdefault.jpg","videoId":"D4RaI10P9m4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:002-D4RaI10P9m4.md","_source":"content","_file":"3.videos/mp/002-D4RaI10P9m4.md","_extension":"md"},{"_path":"/videos/mp/003-tmf2wzntooa","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","description":"At the biggest Vue.js event in the world, Tim & Marc explored backstage. Camera in one hand, microphone in the other, they captured the vibe of the conference in perfect light. This is how \"Intervues\" was born.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2022-07-27T08:40:09Z","position":"003","image":"https://i.ytimg.com/vi/TMf2WznToOA/maxresdefault.jpg","videoId":"TMf2WznToOA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:003-TMf2WznToOA.md","_source":"content","_file":"3.videos/mp/003-TMf2WznToOA.md","_extension":"md"},{"_path":"/videos/mp/004-xhbwuk0qlue","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"JSWorld Conference 2022 - Vlog","description":"At the biggest Vue.js event in the world, Tim & Marc explored backstage. Camera in one hand, microphone in the other, they captured the vibe of the conference in perfect light. This is how \"Intervues\" was born.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2022-07-19T09:06:13Z","position":"004","image":"https://i.ytimg.com/vi/XHBwUK0qlUE/maxresdefault.jpg","videoId":"XHBwUK0qlUE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:004-XHBwUK0qlUE.md","_source":"content","_file":"3.videos/mp/004-XHBwUK0qlUE.md","_extension":"md"},{"_path":"/videos/mp/005-2e_kk9mqrwm","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Roadtrip Barcelona - Vlog","description":"In beautiful Barcelona, Tim & Marc joined a warm chapter of Vue.js Roadtrips organized by Passionate People. They interviewed speakers and captured the vibe around the event.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2022-07-11T07:12:16Z","position":"005","image":"https://i.ytimg.com/vi/2E_kK9mqRwM/maxresdefault.jpg","videoId":"2E_kK9mqRwM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:005-2E_kK9mqRwM.md","_source":"content","_file":"3.videos/mp/005-2E_kK9mqRwM.md","_extension":"md"},{"_path":"/videos/tim/000-mvq-_s20ndk","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"72 hours in Austin, TX","description":"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","date":"2024-06-10T07:13:06Z","position":"000","image":"https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","videoId":"mvq-_s20NDk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:000-mvq-_s20NDk.md","_source":"content","_file":"3.videos/tim/000-mvq-_s20NDk.md","_extension":"md"},{"_path":"/videos/tim/001-vex0ktitib4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The Jake Ward Interview. The power of developer advocacy with Data Protocol","description":"Jake Ward, the co-founder and CEO of Data Protocol, and I discuss the current state of developer advocacy in 2024 and share insights on how dev rel teams can measure their impact.\n\nFollow Jake here:\nhttps://twitter.com/Jacobmward\nhttps://dataprotocol.com\nhttps://www.linkedin.com/in/jacobmward/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://linkedin.com/in/timbenniks","date":"2024-04-15T13:00:24Z","position":"001","image":"https://i.ytimg.com/vi/VEX0KtITib4/maxresdefault.jpg","videoId":"VEX0KtITib4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:001-VEX0KtITib4.md","_source":"content","_file":"3.videos/tim/001-VEX0KtITib4.md","_extension":"md"},{"_path":"/videos/tim/002-196iqp-lhlw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to do Developer Relations in 2024","description":"Developer relations is having a bit of a rough time right now and in this video I explain my vision on how to succeed in 2024. \n\nTL/DR: focus on developer success while they are on your platform. Set up KPIs that measure their success, so you can show impact on the potential revenue these developers might bring. \n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nLinkedIn: https://linkedin.com/in/timbenniks\nGithub: https://github.com/timbenniks","date":"2024-04-05T06:50:24Z","position":"002","image":"https://i.ytimg.com/vi/196iQP-lHLw/maxresdefault.jpg","videoId":"196iQP-lHLw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:002-196iQP-lHLw.md","_source":"content","_file":"3.videos/tim/002-196iQP-lHLw.md","_extension":"md"},{"_path":"/videos/tim/003-yutf3yvsdco","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Cloudinary's hidden magic: AI image manipulation in the URL","description":"Use Cloudinary's AI features to remove items or fill out backgrounds. This is amazing!\n\nhttps://cloudinary.com/blog/generative-fill-ai-powered-outpainting\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-10-11T09:49:25Z","position":"003","image":"https://i.ytimg.com/vi/YuTF3yVsDco/maxresdefault.jpg","videoId":"YuTF3yVsDco","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:003-YuTF3yVsDco.md","_source":"content","_file":"3.videos/tim/003-YuTF3yVsDco.md","_extension":"md"},{"_path":"/videos/tim/004-iip2anhietg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","description":"In this video, I'll show you how to revolutionize your sales outreach game using personalized videos, made possible by using HeyGen's API.\n\nGone are the days of generic cold emails and phone calls. With HeyGen, Sales Development Representatives (SDRs) can now scale up their outreach efforts like never before. Imagine sending out dozens, even hundreds of personalized videos to your prospects, all with just a few clicks.\n\nIn this video, I break down the key benefits of incorporating personalized videos into your sales outreach strategy. You'll discover how HeyGen AI enables SDRs to add personalized data into the video scripts, making each outreach feel tailor-made for the recipient. I created a proof of concept app to show how you can do this.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-09-25T07:34:24Z","position":"004","image":"https://i.ytimg.com/vi/iip2anHIEtg/maxresdefault.jpg","videoId":"iip2anHIEtg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:004-iip2anHIEtg.md","_source":"content","_file":"3.videos/tim/004-iip2anHIEtg.md","_extension":"md"},{"_path":"/videos/tim/005-_wrtdvv37y0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How To Make The Best AI Avatar With Heygen","description":"In this video I explain tips and tricks to make the best @heygen_official #AI #avatar possible.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-09-08T09:26:33Z","position":"005","image":"https://i.ytimg.com/vi/_WRTDVV37Y0/maxresdefault.jpg","videoId":"_WRTDVV37Y0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:005-_WRTDVV37Y0.md","_source":"content","_file":"3.videos/tim/005-_WRTDVV37Y0.md","_extension":"md"},{"_path":"/videos/tim/006-j7jsa49zqja","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to tell if you're becoming a senior dev","description":"Annoyed as a developer? This is a good sign. It means you are getting more senior!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-09-04T08:36:27Z","position":"006","image":"https://i.ytimg.com/vi/J7Jsa49ZQjA/maxresdefault.jpg","videoId":"J7Jsa49ZQjA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:006-J7Jsa49ZQjA.md","_source":"content","_file":"3.videos/tim/006-J7Jsa49ZQjA.md","_extension":"md"},{"_path":"/videos/tim/007-ed1tipzxzr8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Hygraph Content Federation FTW","description":"I rebuilt my website recently and I used Hygraph’s Content Federation platform to create a unified API layer from all the different sources that serve my blog posts, live streams and videos. \n\nIn this video I explain content federation and I show how my website was built. \n\nGo create a free Hygraph account now at http://hygraph.com\n\nThe best Nuxt GraphQL setup: https://www.youtube.com/watch?v=q282BIqYJ6A\n\n00:00 Introduction\n00:55 Content Federation Platform\n06:09 How I built my website\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-08-29T07:53:53Z","position":"007","image":"https://i.ytimg.com/vi/eD1tiPZXZR8/maxresdefault.jpg","videoId":"eD1tiPZXZR8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:007-eD1tiPZXZR8.md","_source":"content","_file":"3.videos/tim/007-eD1tiPZXZR8.md","_extension":"md"},{"_path":"/videos/tim/008-3tbdmf1pwe","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries caisy CMS: the best CMS for agencies?","description":"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. Agencies need specific features in the CMS they use for clients. caisy CMS seems to have all of them. In this Tim Tries video I'm looking at caisy to see if they indeed delivers.\n\ncaisy CMS: https://caisy.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-08-03T07:47:01Z","position":"008","image":"https://i.ytimg.com/vi/-3tbdMF1PWE/maxresdefault.jpg","videoId":"-3tbdMF1PWE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:008--3tbdMF1PWE.md","_source":"content","_file":"3.videos/tim/008--3tbdMF1PWE.md","_extension":"md"},{"_path":"/videos/tim/009-q282biqyj6a","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The best Nuxt 3 GraphQL setup","description":"This is the best GraphQL setup for Nuxt 3. It's simple and effective. It features automatic code generation and typing of schemas. This is awesome.\n\nFind the module here: https://github.com/Diizzayy/nuxt-graphql-client\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-07-31T02:00:15Z","position":"009","image":"https://i.ytimg.com/vi/q282BIqYJ6A/maxresdefault.jpg","videoId":"q282BIqYJ6A","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:009-q282BIqYJ6A.md","_source":"content","_file":"3.videos/tim/009-q282BIqYJ6A.md","_extension":"md"},{"_path":"/videos/tim/010-h3rlwn27ga8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Browser Client Hints are awesome!","description":"Learn how to use Browser Client Hints and Cloudinary to serve responsive images with minimal markup and maximum performance. Browser Client Hints tell Cloudinary the optimal size and resolution of each image request, and Cloudinary delivers it on the fly!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-07-24T14:00:11Z","position":"010","image":"https://i.ytimg.com/vi/H3rLwN27Ga8/maxresdefault.jpg","videoId":"H3rLwN27Ga8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:010-H3rLwN27Ga8.md","_source":"content","_file":"3.videos/tim/010-H3rLwN27Ga8.md","_extension":"md"},{"_path":"/videos/tim/011-ergktbs0woe","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"This is Headless 2.0","description":"This is Headless 2.0. Say goodbye to glue code and hello to seamless collaboration between content editors & developers without losing great technical architecture. Embrace a transparent platform that streamlines workflows while empowering content editors to visually edit across various headless sources.\n\nRead more here: https://dev.to/timbenniks/this-is-headless-20-4n4d\n\n00:00 What is Headless 1.0\n01:05 Headless 1.0 problems\n02:50 What is Headless 2.0\n03:23 The how\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-07-17T11:26:04Z","position":"011","image":"https://i.ytimg.com/vi/ERGKTbS0woE/maxresdefault.jpg","videoId":"ERGKTbS0woE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:011-ERGKTbS0woE.md","_source":"content","_file":"3.videos/tim/011-ERGKTbS0woE.md","_extension":"md"},{"_path":"/videos/tim/012-zscc8-0-dis","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Nuxt 3: Learn about Pinia setup and basics","description":"Learn about how to integrate Pinia into Nuxt 3. This tutorial covers integration tips and tricks and Pinia basics.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-06-13T23:23:43Z","position":"012","image":"https://i.ytimg.com/vi/zsCc8-0-DIs/maxresdefault.jpg","videoId":"zsCc8-0-DIs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:012-zsCc8-0-DIs.md","_source":"content","_file":"3.videos/tim/012-zsCc8-0-DIs.md","_extension":"md"},{"_path":"/videos/tim/013-zn2zxyvw4hy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I cloned myself with AI to create more content","description":"Ever felt overwhelmed by the amount of video content you need to create as a professional content creator, marketer, or developer relations team member? What if you could clone yourself and let AI handle the scripting and video production? 🤯\n\nIn this video, I reveal how I used a tool called HeyGen to do just that! Watch as I walk you through creating an AI-generated video with my own avatar and voice. This is not just a gimmick – the results are surprisingly close to reality and improving daily! 🤩\n\n📌 What's covered in this video:\n\nThe challenges of being a content creator in the fast-paced world of marketing and developer relations\n\nHow HeyGen can help you create AI-generated videos with your own avatar and voice\n\nA step-by-step walkthrough of the HeyGen dashboard and the process of creating an AI-generated video\n\nHow to use your own voice or choose from different voices and accents in HeyGen\n\nDon't miss out on this game-changing tool to help you level up your video content production! Try HeyGen for yourself and witness the power of AI in action. 🚀\n\n#AI #HeyGen #VideoProduction\n\nhttps://heygen.com\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-06-09T07:00:23Z","position":"013","image":"https://i.ytimg.com/vi/zn2zXyVW4hY/maxresdefault.jpg","videoId":"zn2zXyVW4hY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:013-zn2zXyVW4hY.md","_source":"content","_file":"3.videos/tim/013-zn2zXyVW4hY.md","_extension":"md"},{"_path":"/videos/tim/014-dyq17r5c9-s","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Live London 2023 Vlog","description":"Vue.js London was as great as we all expected, with a fantastic venue, and a great hotel! The speaker's family got back together for yet another event! \n\nI got to play my guitar for Alive and Kicking. Check out more here: https://timbenniks.dev/alive-and-kicking\n\nFollow me:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-05-22T09:03:13Z","position":"014","image":"https://i.ytimg.com/vi/DYq17R5C9-s/maxresdefault.jpg","videoId":"DYq17R5C9-s","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:014-DYq17R5C9-s.md","_source":"content","_file":"3.videos/tim/014-DYq17R5C9-s.md","_extension":"md"},{"_path":"/videos/tim/015-oq050_ytylk","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"AI audio for content creators","description":"Are you tired of spending hours editing audio to achieve that perfect sound? Look no further! Using Adobe Podcasts, I demonstrate how artificial intelligence can enhance your audio quality effortlessly, giving you more time to focus on your content. Don't miss out on this game changer for dev rels and content creators.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-04-05T14:00:13Z","position":"015","image":"https://i.ytimg.com/vi/OQ050_YtYLk/maxresdefault.jpg","videoId":"OQ050_YtYLk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:015-OQ050_YtYLk.md","_source":"content","_file":"3.videos/tim/015-OQ050_YtYLk.md","_extension":"md"},{"_path":"/videos/tim/016-rwrzovc5oc4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I joined the Supasquad ambassadors program at Supabase!","description":"Supabase was kind enough to invite me into their Supasquad ambassador program, and I'm super excited about it!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-04-03T13:35:45Z","position":"016","image":"https://i.ytimg.com/vi/RWRZovC5oc4/maxresdefault.jpg","videoId":"RWRZovC5oc4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:016-RWRZovC5oc4.md","_source":"content","_file":"3.videos/tim/016-RWRZovC5oc4.md","_extension":"md"},{"_path":"/videos/tim/017-m0mrligs6i0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js guitar karaoke: how I built it","description":"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","date":"2023-03-20T06:10:23Z","position":"017","image":"https://i.ytimg.com/vi/M0MrLIGs6I0/maxresdefault.jpg","videoId":"M0MrLIGs6I0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:017-M0MrLIGs6I0.md","_source":"content","_file":"3.videos/tim/017-M0MrLIGs6I0.md","_extension":"md"},{"_path":"/videos/tim/018-hhpitreyobi","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The story behind Alive and kicking","description":"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","date":"2023-03-02T15:00:09Z","position":"018","image":"https://i.ytimg.com/vi/hhPiTREYobI/maxresdefault.jpg","videoId":"hhPiTREYobI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:018-hhPiTREYobI.md","_source":"content","_file":"3.videos/tim/018-hhPiTREYobI.md","_extension":"md"},{"_path":"/videos/tim/019-e64eyulaomk","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I fell back in love with Sitecore","description":"Sitecore has been career-defining for me, we lost touch for a while, but recently, we fell back in love...\n\n#Sitecore is an excellent CMS but with a few flaws due to its monolithic nature and, more recently, due to its pseudo-composable approach. I found a way to love Sitecore again by decoupling its content management and front-end rendering parts. You can use @UniformVisualWorkspace to select content from a Sitecore instance and funnel it into any front end you desire. \n\nThis approach gives you developer freedom, a way to add any other headless source without worry, and you can host anywhere you want. Say goodbye to your slow and expensive CD servers! \n\nIn this video, I use Nuxt 3 for the rendering - because why not!?\n\nFind out more about #Uniform at https://uniform.dev\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-11-23T16:58:55Z","position":"019","image":"https://i.ytimg.com/vi/e64EyULAoMk/maxresdefault.jpg","videoId":"e64EyULAoMk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:019-e64EyULAoMk.md","_source":"content","_file":"3.videos/tim/019-e64EyULAoMk.md","_extension":"md"},{"_path":"/videos/tim/020-xetyke98mp0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"JamstackConf talk: DXC, the modern tech stack","description":"This is my JamstackConf talk\n\nYour tools are holding you back. DXC is the solution that gives developers and business teams access to the tools they need to do their best work and deliver faster than ever. Let's kill the glue code monster!\n\nLearn more: https://uniform.dev/what-is-dxc\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-11-16T09:38:50Z","position":"020","image":"https://i.ytimg.com/vi/xeTYkE98MP0/maxresdefault.jpg","videoId":"xeTYkE98MP0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:020-xeTYkE98MP0.md","_source":"content","_file":"3.videos/tim/020-xeTYkE98MP0.md","_extension":"md"},{"_path":"/videos/tim/021-0xo0bnzquf4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Vue 3: Learn how to make a composable","description":"Learn how to make a Vue 3 composable.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Vue3-turbos/tree/main/vue3-how-to-make-a-composable\n\nVisit https://turbo-tutorials.dev/tutorials/vue-3-learn-how-to-make-a-composable/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"021","image":"https://i.ytimg.com/vi/0xO0BNZqUf4/maxresdefault.jpg","videoId":"0xO0BNZqUf4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:021-0xO0BNZqUf4.md","_source":"content","_file":"3.videos/tim/021-0xO0BNZqUf4.md","_extension":"md"},{"_path":"/videos/tim/022-cwkjy7raony","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: How to add client only components","description":"Learn how to use client and server components in Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-clientside-serverside-components\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-add-client-only-components/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"022","image":"https://i.ytimg.com/vi/CwkJY7RaonY/maxresdefault.jpg","videoId":"CwkJY7RaonY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:022-CwkJY7RaonY.md","_source":"content","_file":"3.videos/tim/022-CwkJY7RaonY.md","_extension":"md"},{"_path":"/videos/tim/023-lsf2rhzsykg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","description":"Learn how to query an internal Nuxt API route from your front end using useFetch(). \n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/nuxt3-query-from-api-route\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-query-from-a-nuxt-api-route/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"023","image":"https://i.ytimg.com/vi/Lsf2rhZSYKg/maxresdefault.jpg","videoId":"Lsf2rhZSYKg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:023-Lsf2rhZSYKg.md","_source":"content","_file":"3.videos/tim/023-Lsf2rhZSYKg.md","_extension":"md"},{"_path":"/videos/tim/024-mg0fevwnue0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","description":"Learn how to apply Vue components into markdown with MDC and Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-vue-components-in-content-v2\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-use-vue-components-in-nuxt-content-v2/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"024","image":"https://i.ytimg.com/vi/Mg0feVWNUE0/maxresdefault.jpg","videoId":"Mg0feVWNUE0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:024-Mg0feVWNUE0.md","_source":"content","_file":"3.videos/tim/024-Mg0feVWNUE0.md","_extension":"md"},{"_path":"/videos/tim/025-npse6yqqzki","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Learn about responsive image basics","description":"Learn about the basics of responsive images\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Html-turbos/tree/main/responsive-image\n\nVisit https://turbo-tutorials.dev/tutorials/learn-about-responsive-image-basics/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"025","image":"https://i.ytimg.com/vi/NPSe6yqQzKI/maxresdefault.jpg","videoId":"NPSe6yqQzKI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:025-NPSe6yqQzKI.md","_source":"content","_file":"3.videos/tim/025-NPSe6yqQzKI.md","_extension":"md"},{"_path":"/videos/tim/026-rh6hjo9xk-o","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Head management","description":"Learn how to add information to the head of the page with Nuxt 3.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-head\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-head-management/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"026","image":"https://i.ytimg.com/vi/Rh6HJO9xK-o/maxresdefault.jpg","videoId":"Rh6HJO9xK-o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:026-Rh6HJO9xK-o.md","_source":"content","_file":"3.videos/tim/026-Rh6HJO9xK-o.md","_extension":"md"},{"_path":"/videos/tim/027-rth3oikjp2k","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: schema org","description":"Learn how to add schema.org microdata to your Nuxt 3 pages. \n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-schema-org\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-schema-org/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"027","image":"https://i.ytimg.com/vi/rtH3OIkJp2k/maxresdefault.jpg","videoId":"rtH3OIkJp2k","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:027-rtH3OIkJp2k.md","_source":"content","_file":"3.videos/tim/027-rtH3OIkJp2k.md","_extension":"md"},{"_path":"/videos/tim/028-zad7s01lfic","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Query from an external API + read more","description":"Learn how to query an external API and how to implement \"read more\" functionality.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-query-from-external-api\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-query-from-an-external-api-read-more/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"028","image":"https://i.ytimg.com/vi/zAd7s01LfIc/maxresdefault.jpg","videoId":"zAd7s01LfIc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:028-zAd7s01LfIc.md","_source":"content","_file":"3.videos/tim/028-zAd7s01LfIc.md","_extension":"md"},{"_path":"/videos/tim/029-5i1zqfu6xtw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","description":"Learn about Nuxt 3's Nitro engine and how it can do hybrid rendering between SSG and SSR.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-hybrid-mode\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-learn-about-hybrid-rendering/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:47Z","position":"029","image":"https://i.ytimg.com/vi/5i1Zqfu6Xtw/maxresdefault.jpg","videoId":"5i1Zqfu6Xtw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:029-5i1Zqfu6Xtw.md","_source":"content","_file":"3.videos/tim/029-5i1Zqfu6Xtw.md","_extension":"md"},{"_path":"/videos/tim/030-d33ynlhvhxm","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Pick & Transform","description":"Learn how to pick and transform data coming back from an API call in Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-fetch-pick-transform\n\nVisit https://turbo-tutorials.dev/tutorials/turbo-tutorial-or-nuxt-3-pick-and-transform/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:47Z","position":"030","image":"https://i.ytimg.com/vi/D33YNlhvHXM/maxresdefault.jpg","videoId":"D33YNlhvHXM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:030-D33YNlhvHXM.md","_source":"content","_file":"3.videos/tim/030-D33YNlhvHXM.md","_extension":"md"},{"_path":"/videos/tim/031-c1jduhsh1ae","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries Medusajs the open source Shopify alternative","description":"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. In this episode, I try out #Medusajs, an open-source #ecommerce alternative to Shopify.\n\nConclusion: excellent, great, awesome, composable, performant. But why is this not a Saas? I'd happily pay a few bucks a month for this!\n\nFollow medusa: \nhttps://medusajs.com\nhttps://github.com/medusajs/medusa\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGitHub: https://github.com/timbenniks","date":"2022-09-19T09:39:20Z","position":"031","image":"https://i.ytimg.com/vi/c1jDUhsh1aE/maxresdefault.jpg","videoId":"c1jDUhsh1aE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:031-c1jDUhsh1aE.md","_source":"content","_file":"3.videos/tim/031-c1jDUhsh1aE.md","_extension":"md"},{"_path":"/videos/tim/032-8z1npig-ya","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How I film videos in my new studio. A content creator's dream.","description":"I've been away for a bit, but I'm back! I've built a new set in my studio, plug 'n play. I sit down, hit record, and I'm ready to rock! Content creators often have lots of setup and tear down, which makes creating slow. \n\n\nThe tools I use in this setup:\nCamera: Sony ZV e10\nLens: Sigma 16mm f1.4\nLights: Amaran 100d + Godox softbox, Godox TL60, Filtrox VL500\nMic: Rode NTG 4+\nAudio Interface: Comica Linkflex AD2\nPreview screen: Feelworld FW568V2\nStands: Neewer C-stand\nRemote: JJC Bluetooth for Sony Cameras\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks","date":"2022-09-02T11:24:19Z","position":"032","image":"https://i.ytimg.com/vi/-8Z1npiG-YA/maxresdefault.jpg","videoId":"-8Z1npiG-YA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:032--8Z1npiG-YA.md","_source":"content","_file":"3.videos/tim/032--8Z1npiG-YA.md","_extension":"md"},{"_path":"/videos/tim/033-8wxdfixxktw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The State of Vue in 2022 with Monterail's Szymon Licau","description":"In this video, I'm interviewing Szymon Licau, Frontend Principal Engineer at Monterail, about the State of #Vue in 2022. Monterail has created this report for the last four years, and they are always on the top of their game. It's an exciting read!\n\nGet the report here: https://hi.monterail.co/3NuLjRr\n\nFollow Szymon here:\nhttps://twitter.com/szymon_licau\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-07-24T19:36:08Z","position":"033","image":"https://i.ytimg.com/vi/8wXDFiXXkTw/maxresdefault.jpg","videoId":"8wXDFiXXkTw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:033-8wXDFiXXkTw.md","_source":"content","_file":"3.videos/tim/033-8wXDFiXXkTw.md","_extension":"md"},{"_path":"/videos/tim/034-yzh1l740tno","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","description":"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. In this episode, I try out the Algolia #Nuxt3 module made by Jakub Andrzejewski.\n\nConclusion: Being a release candidate, Nuxt 3 is surprisingly stable, however, the ecosystem around it is not fully there yet. With some hiccups along the way, this Nuxt 3 module makes Algolia work great and super easy to use!\n\nDisclaimer: For this video my opinions are honest and real time. This is truly the first time I tried the Algolia module for Nuxt 3.\n\nJakub Andrzejewski:\nhttps://twitter.com/jacobandrewsky\n\nAlgolia module for Nuxt 3:\nhttps://algolia.nuxtjs.org\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks","date":"2022-07-09T12:46:18Z","position":"034","image":"https://i.ytimg.com/vi/yZh1l740tNo/maxresdefault.jpg","videoId":"yZh1l740tNo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:034-yZh1l740tNo.md","_source":"content","_file":"3.videos/tim/034-yZh1l740tNo.md","_extension":"md"},{"_path":"/videos/tim/035-mdzkgc1pgbc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to buy gear for content creation in 2022","description":"I just bought a new studio light and the experience made me record this video. It gives general advice on what type of price range to look for in gear for content creators like me. Enjoy!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-03-28T12:44:57Z","position":"035","image":"https://i.ytimg.com/vi/MdzKgC1Pgbc/maxresdefault.jpg","videoId":"MdzKgC1Pgbc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:035-MdzKgC1Pgbc.md","_source":"content","_file":"3.videos/tim/035-MdzKgC1Pgbc.md","_extension":"md"},{"_path":"/videos/tim/036-dli7uzzddx8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I built my own YouTube studio 2022","description":"After months of hard work, I finally finished my very own YouTube studio! We transformed a leaky old countryside garage with no windows into the ultimate workspace for a content creator, conference speaker and developer advocate.\n\nThis is a space where I film videos, do live streams, speak at virtual conferences and have colleagues over for work sessions. \n\n00:00 Intro sequence\n00:33 Introduction to the project\n01:52 Getting started\n04:00 Custom oak windows and doors\n05:13 Delivery of supplies\n06:06 Water damage and leakage\n08:40 More water issues\n10:30 Ceilings and walls\n11:50 Pragmatic solutions\n13:05 Electronics and plaster\n15:15 Painting\n16:27 Final reveal\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-03-10T11:06:58Z","position":"036","image":"https://i.ytimg.com/vi/dlI7uZzDDx8/maxresdefault.jpg","videoId":"dlI7uZzDDx8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:036-dlI7uZzDDx8.md","_source":"content","_file":"3.videos/tim/036-dlI7uZzDDx8.md","_extension":"md"},{"_path":"/videos/tim/037-ry60wvg0fzq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Cable management for Nuxt 3","description":"My conference talk from VueConf Toronto!\n\nCable management for Nuxt 3. Compose pages with multiple headless sources and never re-platform again…\n\nNow that companies are starting to use multiple different headless sources to create their digital experience platforms, a real problem is forming. Content editors need to create pages with products, CMS content, videos and personalisation but all these things come from different vendors.\n\nThey have no overview over what to do and they always have to ask a developer to connect things together in the front-end. Developers generally have no time so frustration kicks in.\n\nWe need a way to compose pages with different headless sources without too much developer involvement. Marketers need to be free to tell their stories when and how they want to. BUT. Developers also need to be happy. They need complete freedom in their tech stack and in how they choose to build a website.\n\nSounds like a dream come true? In this talk I’ll show you how to connect up different headless sources in a very easy to use system and how query them in the front-end without tight coupling. \n\nLet’s Nuxtify the world!\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-11-23T18:16:39Z","position":"037","image":"https://i.ytimg.com/vi/RY60wVg0FZQ/maxresdefault.jpg","videoId":"RY60wVg0FZQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:037-RY60wVg0FZQ.md","_source":"content","_file":"3.videos/tim/037-RY60wVg0FZQ.md","_extension":"md"},{"_path":"/videos/tim/038-ek-hhozlfvg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"My top 5 favourite Nuxt 3 features","description":"Nuxt 3 is in beta and it’s awesome. I’ve tried it out at length and I have a couple of things to show you. These are my 5 favourite features Nuxt has to offer for your daily developer experience. \n\nhttps://v3.nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-10-21T14:19:13Z","position":"038","image":"https://i.ytimg.com/vi/ek-hhoZLFVg/maxresdefault.jpg","videoId":"ek-hhoZLFVg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:038-ek-hhoZLFVg.md","_source":"content","_file":"3.videos/tim/038-ek-hhoZLFVg.md","_extension":"md"},{"_path":"/videos/tim/039-kn5u4ahcs_0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vlog: DevBreak21 what an amazing conference experience!","description":"I had the privilege to speak at DevBreak21: The Ultimate Tech Festival. It's indeed more of a festival than a conference. Held in an ancient castle, the grounds allowed for lot's of activities and multiple talk tracks. \n\nI had a great time!\nSee more here: https://www.devbreak.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-09-13T12:33:22Z","position":"039","image":"https://i.ytimg.com/vi/Kn5U4AHCs_0/maxresdefault.jpg","videoId":"Kn5U4AHCs_0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:039-Kn5U4AHCs_0.md","_source":"content","_file":"3.videos/tim/039-Kn5U4AHCs_0.md","_extension":"md"},{"_path":"/videos/tim/040-o8m4cs3o4ii","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Make your website even faster with Astro!","description":"Now that we have figured out that #Jamstack sites are the fastest out there, the JavaScript bundles they ship have become the bottleneck. JavaScript bundles need to be downloaded, parsed and executed by the browser. Lot's of people now who have phablets and loading a regular React or Vue app is actually slow due to the JavaScript they output.\n\nWhat if you could build a website with your favourite framework but choose exactly which bits of JavaScript end up on the client?\n\nEnter Astro.\n\nWith the ability to choose what JavaScript the user has to load and when, Astro is paving a new way of web development. In my opinion this is the future.\n\nCheck out my code here: https://github.com/timbenniks/astro-vue\n\nI used Astro, Vue, React, Prismic and Tailwind for the demo.\n\nhttps://astro.build\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-08-25T14:51:16Z","position":"040","image":"https://i.ytimg.com/vi/O8m4cS3o4II/maxresdefault.jpg","videoId":"O8m4cS3o4II","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:040-O8m4cS3o4II.md","_source":"content","_file":"3.videos/tim/040-O8m4cS3o4II.md","_extension":"md"},{"_path":"/videos/tim/041-xba15vr-kfy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vlog: I'm building my own studio!","description":"We moved house and now I have the chance to build the ultimate YouTube studio in our garage! In this vlog series you'll see me do everything myself. From fitting windows, to electronics, to insulation.\n\nPlease help, I know nothing about this stuff :)\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-07-28T12:08:29Z","position":"041","image":"https://i.ytimg.com/vi/xba15Vr-kFY/maxresdefault.jpg","videoId":"xba15Vr-kFY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:041-xba15Vr-kFY.md","_source":"content","_file":"3.videos/tim/041-xba15Vr-kFY.md","_extension":"md"},{"_path":"/videos/tim/042-lpk392g10ou","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Nuxt vs Next: the battle of the Images","description":"In this video I compare the newly released Nuxt and Next native Image tags to the Next Image. Who wins? \n\nThe rules:\nOutput semantically valid HTML according to web standards.\nNo opinions added to the output.\nShould work out of the box.\n\n00:00 Introduction\n00:47 The rules\n01:50 Nuxt Image\n06:06 Next Image\n11:32 Conclusions\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-06-21T08:31:45Z","position":"042","image":"https://i.ytimg.com/vi/lpK392G10OU/maxresdefault.jpg","videoId":"lpK392G10OU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:042-lpK392G10OU.md","_source":"content","_file":"3.videos/tim/042-lpK392G10OU.md","_extension":"md"},{"_path":"/videos/tim/043-uxjgt2_mf90","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The Ultimate Guide to Responsive Images","description":"Images are hard. They seem easy to use but there are a lot of ways to use them. In this video I explain the anatomy the img and picture tags. I hope this helps because it frustrates me how hard they are to use.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-06-16T12:29:12Z","position":"043","image":"https://i.ytimg.com/vi/UXjgT2_MF90/maxresdefault.jpg","videoId":"UXjgT2_MF90","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:043-UXjgT2_MF90.md","_source":"content","_file":"3.videos/tim/043-UXjgT2_MF90.md","_extension":"md"},{"_path":"/videos/tim/044-d0ra_m3jlsy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Storyblok. One of the best headless content editing experiences","description":"Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time. This is the #timtries Series. In this episode I try out the #Storyblok, the headless CMS with NuxtJS as the front-end. \n\nConclusion: It's probably the best headless #CMS editor experience I have seen. The set-up had some hiccups however.\n\nDisclaimer: For this video my opinions are honest and real time. This is truly the first time I tried Storyblok.\n\nStoryblok:\nhttps://www.storyblok.com/\nhttps://twitter.com/storyblok\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks","date":"2021-05-24T13:00:14Z","position":"044","image":"https://i.ytimg.com/vi/d0ra_M3JLSY/maxresdefault.jpg","videoId":"d0ra_M3JLSY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:044-d0ra_M3JLSY.md","_source":"content","_file":"3.videos/tim/044-d0ra_M3JLSY.md","_extension":"md"},{"_path":"/videos/tim/045-7jk6nyalhuc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Algolia Crawler Plugin for Netlify","description":"Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time. This is the #timtries Series.\n\nIn this episode I try out the Algolia Crawler for #Netlify.\n\nConclusion: you should try this out! I’ll use this on all my Jamstack websites going forward. Wow!\n\nWant to try #Algolia for free yourself? Use my affiliate link: https://utm.io/udjGK\n\nDisclaimer: I'm an Algolia ambassador, for this video my opinions are honest and real time.\n\nFind Algolia here:\nhttps://utm.io/udjGK\nhttps://twitter.com/Algolia\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-05-03T14:00:02Z","position":"045","image":"https://i.ytimg.com/vi/7JK6NYaLHuc/maxresdefault.jpg","videoId":"7JK6NYaLHuc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:045-7JK6NYaLHuc.md","_source":"content","_file":"3.videos/tim/045-7JK6NYaLHuc.md","_extension":"md"},{"_path":"/videos/tim/046-su22r2w3wea","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Apple M1 with Tailwind JIT and Vite is faster than my brain","description":"The new Apple M1 is fast. Really fast. I decided to try using Vite and the new Tailwind JIT together to see how fast the developer experience can actually get.\n\nConclusion: it's so fast my brain melted...\n\nThe future is bright for front-end developers. New hardware and software is coming out now that is changing the game.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-04-01T12:45:01Z","position":"046","image":"https://i.ytimg.com/vi/sU22R2W3wEA/maxresdefault.jpg","videoId":"sU22R2W3wEA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:046-sU22R2W3wEA.md","_source":"content","_file":"3.videos/tim/046-sU22R2W3wEA.md","_extension":"md"},{"_path":"/videos/tim/047-6ub_k4uvz20","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Unboxing the new M1 Mac Mini for Video editing and programming.","description":"After a two year hiatus to Windows land I decided to switch back to Apple. PC parts are not in stock and my current beast of a PC actually isn't as stable as I had hoped.\n\nI opted for the new M1 Mac Mini which I maxed out. I have a 1tb 16gb RAM model. I also bought some other goodies like a Caldigit dock and a portable nvme drive.\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-03-24T16:00:15Z","position":"047","image":"https://i.ytimg.com/vi/6Ub_k4uvz20/maxresdefault.jpg","videoId":"6Ub_k4uvz20","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:047-6Ub_k4uvz20.md","_source":"content","_file":"3.videos/tim/047-6Ub_k4uvz20.md","_extension":"md"},{"_path":"/videos/tim/048-ec7pvgy8xsq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Core Web Vitals explained with Ishan Anand | e01","description":"In this series Ishan Anand (CTO and co-founder of Moovweb) and I explain Core Web Vitals. In this installment we discuss the basics and we figure out that Lighthouse definitely is not the right tool to do performance tests for websites.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks\n\nFollow Ishan here:\nhttps://moovweb.com\nhttps://corewebvitals.email\nhttps://twitter.com/ianand\nhttps://www.linkedin.com/in/ishananand/","date":"2021-03-22T13:00:10Z","position":"048","image":"https://i.ytimg.com/vi/Ec7pVGy8XsQ/maxresdefault.jpg","videoId":"Ec7pVGy8XsQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:048-Ec7pVGy8XsQ.md","_source":"content","_file":"3.videos/tim/048-Ec7pVGy8XsQ.md","_extension":"md"},{"_path":"/videos/tim/049-lsxu_q-8rrc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","description":"Welcome to the second episode of the DevRel roundtable series where I invite developer relation people to a roundtable discussion to converse on whatever topics we feel are relevant.\n\nIn this episode I invited two titans: Debbie O'brien from Bit and Lucie Haberer from Prismic. We go over what a DevRel is and a lot more.\n\nFollow Debbie here:\nhttps://twitter.com/debs_obrien\nhttps://debbie.codes/\n\nFollow Lucie here:\nhttps://twitter.com/li_hbr\nhttps://lihbr.com/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks","date":"2021-03-08T12:00:15Z","position":"049","image":"https://i.ytimg.com/vi/lSxU_q-8Rrc/maxresdefault.jpg","videoId":"lSxU_q-8Rrc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:049-lSxU_q-8Rrc.md","_source":"content","_file":"3.videos/tim/049-lSxU_q-8Rrc.md","_extension":"md"},{"_path":"/videos/tim/050-yezaod1sddg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The Modern DXP: How JAMstack will change the world","description":"This is my talk for my JSWorld Conference! I'm talking about how JAMstack will change the world. I now work at Uniform where we take disrupting the status quo of Digital Experience Platform software seriously :)\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\nUniform: https://uniform.dev","date":"2021-02-25T15:59:46Z","position":"050","image":"https://i.ytimg.com/vi/YEzAod1sDdg/maxresdefault.jpg","videoId":"YEzAod1sDdg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:050-YEzAod1sDdg.md","_source":"content","_file":"3.videos/tim/050-YEzAod1sDdg.md","_extension":"md"},{"_path":"/videos/tim/051-dv5mlxbrti8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","description":"I enjoy making websites super fast, but I also like metrics. These two things do not always combine well. To add metrics, you also need code to provide these metrics. But that slows down your website!\n\nI found a way to remove Google Analytics JavaScript but still provide data to its back-end. I even added web vitals! I did all of it in Nuxt!\n\nCredit: https://twitter.com/DasSurma\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks","date":"2021-02-12T12:00:03Z","position":"051","image":"https://i.ytimg.com/vi/DV5mLxbrTi8/maxresdefault.jpg","videoId":"DV5mLxbrTi8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:051-DV5mLxbrTi8.md","_source":"content","_file":"3.videos/tim/051-DV5mLxbrTi8.md","_extension":"md"},{"_path":"/videos/tim/052-hcthe5pwhvm","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I have a new job at a Silicon Valley Startup!","description":"Read more here: https://timbenniks.dev/writings/i-turned-my-career-on-its-head/\n\n2021 is starting well! I have a new Job at a silicon valley startup. In this video I discuss what the job is, why I like it and also why I moved away from the safe career path I was on at Valtech.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","date":"2021-02-01T09:27:12Z","position":"052","image":"https://i.ytimg.com/vi/HCThe5pWhvM/maxresdefault.jpg","videoId":"HCThe5pWhvM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:052-HCThe5pWhvM.md","_source":"content","_file":"3.videos/tim/052-HCThe5pWhvM.md","_extension":"md"},{"_path":"/videos/tim/053-zd7qkgd8ix8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","description":"In this video I interview Ishan Anand (co-founder/CTO) and Mark Brocado (VP of Engineering) from Moovweb. Moovweb is an all-in-one JAMstack platform to develop, deploy, preview, split test and monitor your frontend. The cool thing is that Moovweb is able to combine dynamic routing with static serving on the CDN edge. \n\nI'm intrigued by this concept and I wonder why Netlify and Vercel are not doing similar things. Ishan and Mark go deep and explain everything!\n\nFind Ishan, Mark and Moovweb here:\nhttps://moovweb.com\nhttps://twitter.com/moovweb\n\nFollow me here:\nhttps://timbenniks.dev/\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","date":"2021-01-26T10:00:18Z","position":"053","image":"https://i.ytimg.com/vi/Zd7QkGD8Ix8/maxresdefault.jpg","videoId":"Zd7QkGD8Ix8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:053-Zd7QkGD8Ix8.md","_source":"content","_file":"3.videos/tim/053-Zd7QkGD8Ix8.md","_extension":"md"},{"_path":"/videos/tim/054-bhffzm6n3tw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"2020 The best year of my career","description":"I created a pretty personal video about how I experienced 2020. It strangely became the best year of my career. Make sure to stick around to the end for a surprising turn of events for 2021.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","date":"2021-01-05T10:00:10Z","position":"054","image":"https://i.ytimg.com/vi/bhFfzM6n3Tw/maxresdefault.jpg","videoId":"bhFfzM6n3Tw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:054-bhFfzM6n3Tw.md","_source":"content","_file":"3.videos/tim/054-bhFfzM6n3Tw.md","_extension":"md"},{"_path":"/videos/tim/055-s1od1u-itka","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to build your online persona","description":"This video is a webinar I did for my colleagues. Since 2019 I have been creating my online persona. I've failed a bunch and I have learnt a lot. In this session I'm sharing my experience, advice and insights into building your brand and growing your audience. I'll teach you how to get yourself or your employer noticed for all the right reasons.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-12-09T10:00:08Z","position":"055","image":"https://i.ytimg.com/vi/S1oD1u-itKA/maxresdefault.jpg","videoId":"S1oD1u-itKA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:055-S1oD1u-itKA.md","_source":"content","_file":"3.videos/tim/055-S1oD1u-itKA.md","_extension":"md"},{"_path":"/videos/tim/056-rm_bameopiy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to record yourself guide","description":"After daily questions I decided to work on a huge tips & tricks video for people who pre-record talks or do live streams. This video has 39 tips to get you started! If you follow this guide and combine it with a good subject, you will see great results.\n\nImportant links: \nhttps://timbenniks.dev/writings/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/\nhttps://timbenniks.dev/writings/covid-19-work-from-home-how-to-make-your-webcam-look/\n\nTimestamps:\n00:00 intro\n02:10 General tips\n05:08 Tips while recording\n07:35 The camera & framing\n10:00 Lighting\n12:44 Camera settings\n14:37 Audio\n17:37 Editing & recording\n22:03 Concluding\n\nSponsoring: https://buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-12-02T11:51:27Z","position":"056","image":"https://i.ytimg.com/vi/rm_bameopIY/maxresdefault.jpg","videoId":"rm_bameopIY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:056-rm_bameopIY.md","_source":"content","_file":"3.videos/tim/056-rm_bameopIY.md","_extension":"md"},{"_path":"/videos/tim/057-db5jjbwg-zm","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Interview with Alex Shyba co-founder of Uniform","description":"In this video I interview Alex Shyba, co-founder of Uniform. At work (I'm web development director at a big agency), Alex did some consulting for us and we were always impressed by his skills and excellent manners. In this interview we dive into what Uniform does, why he started it and he even shows us how it works.\n\nEnterprise software vendors better watch out. This startup will disrupt. I would pay close attention to their roadmap in the coming months. Expect a Tim Tries video when their software reaches open beta.\n\nAbout Uniform:\nUniform enables jamstack with your current Enterprise Digital Experience Platform and unlocks edge-based personalization with the tools you already have.\n\nFind Alex and Uniform here:\nhttps://twitter.com/alexshyba\nhttps://twitter.com/UniformDev\nhttps://uniform.dev/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-11-25T13:00:06Z","position":"057","image":"https://i.ytimg.com/vi/DB5jjbwg-zM/maxresdefault.jpg","videoId":"DB5jjbwg-zM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:057-DB5jjbwg-zM.md","_source":"content","_file":"3.videos/tim/057-DB5jjbwg-zM.md","_extension":"md"},{"_path":"/videos/tim/058-iykkwy8k2d4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to reduce bundle sizes in Nuxt","description":"Everybody wants smaller JavaScript bundles. In this video Lucie Haberer and I explore a way to reduce bundle sizes in Nuxt.\n\n1. We explore data abstraction and moving data mapping to a data layer that is only accessed by the asyncData or Fetch. \n2. We discuss moving bigger functionality to serverless API's\n3. We show how to make smaller \"named\" webpack chunks\n\nThis video is in-depth (25 mins), have a seat, take your time and enjoy. Happy optimizing!\nBeware, this works best for statically rendered Nuxt projects.\n\nhttps://lihbr.com/blog/pushing-nuxt-js-static-generation-one-step-further\n\nFollow Lucie here: \nWebsite: https://lihbr.com/\nTwitter: https://twitter.com/li_hbr\nGithub: https://github.com/lihbr\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#javascript #bundlesizes #nuxt","date":"2020-11-18T13:39:52Z","position":"058","image":"https://i.ytimg.com/vi/IyKkwy8K2d4/maxresdefault.jpg","videoId":"IyKkwy8K2d4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:058-IyKkwy8K2d4.md","_source":"content","_file":"3.videos/tim/058-IyKkwy8K2d4.md","_extension":"md"},{"_path":"/videos/tim/059-nr_aohhgl3s","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Interview with Evan You","description":"I had the privilege to interview Evan You, the creator of Vue.js. I collaborated with Passionate People, the organizers of the excellent Vue.js Global conference and together we came up with a round table discussion format.\n\nIn this discussion I was joined by Marc Backes and Israel Roldán León. We tend to go into the more personal and behind the scenes questions rather than just being technical. This provides a great look into Evan as a person rather than just talking tech.\n\nEvan You: https://twitter.com/youyuxi\nMarc Backes: https://twitter.com/themarcba\nIsrael Roldán León: https://twitter.com/isro_me\nPassionate People: https://twitter.com/passionpeopleNL\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nPoster image taken from Github.\n\n#vue #evanyou #interview","date":"2020-11-10T10:05:08Z","position":"059","image":"https://i.ytimg.com/vi/NR_aohhgl3s/maxresdefault.jpg","videoId":"NR_aohhgl3s","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:059-NR_aohhgl3s.md","_source":"content","_file":"3.videos/tim/059-NR_aohhgl3s.md","_extension":"md"},{"_path":"/videos/tim/060-oxjhew-10aq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Easy dynamic routes in your Nuxt sitemap","description":"https://timbenniks.dev/writings/easy-dynamic-routes-in-your-nuxt-sitemap/ This is a cool way to add dynamic routes to your sitemap! I think this should be a part of the official Sitemap module.\n\nBy default the Nuxt sitemap module does not support dynamic routes. In this video I show you an easy and effortless way to dynamically add all #NuxtJS routes to your #sitemap xml file. \n\nIf you want you can buy me a coffee: https://www.buymeacoffee.com/timbenniks\n\nProps for this idea go to https://dev.to/andynoir.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#SEO","date":"2020-11-08T15:30:41Z","position":"060","image":"https://i.ytimg.com/vi/oXJHEw-10aQ/maxresdefault.jpg","videoId":"oXJHEw-10aQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:060-oXJHEw-10aQ.md","_source":"content","_file":"3.videos/tim/060-oXJHEw-10aQ.md","_extension":"md"},{"_path":"/videos/tim/061-zxz9mojtwh8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Webpack 5 module federation and more","description":"In this video I take about 15 minutes to discuss the new features of Webpack 5. Webpack 5 is a big leap forward with its tree shaking and module federation. Good stuff!\n\nCover Idea by https://twitter.com/arismarko.\nTime stamps:\n\n00:00 Intro\n02:48 How Webpack works\n05:06 What is new in Webpack 5\n05:43 Persistent caching\n06:35 Smaller bundle sizes\n07:13 Better long-term caching\n08:18 Module federation\n10:20 Breaking changes\n12:19 Should you upgrade?\n13:14 Thank you\n\nConsider sponsoring: \nhttps://www.buymeacoffee.com/timbenniks\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-11-02T10:00:16Z","position":"061","image":"https://i.ytimg.com/vi/ZXz9MoJTWh8/maxresdefault.jpg","videoId":"ZXz9MoJTWh8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:061-ZXz9MoJTWh8.md","_source":"content","_file":"3.videos/tim/061-ZXz9MoJTWh8.md","_extension":"md"},{"_path":"/videos/tim/062-xiz2p0zlbd8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","description":"Welcome to the first episode of the DevRel roundtable series where I invite developer relation people to a roundtable discussion to converse on whatever topics we feel are relevant.\n\nIn this episode I invited two titans: Tessa Mero and Domitrius Clark from Cloudinary. We go over what a DevRel is and a lot more.\n\nFollow Tessa here:\nhttps://twitter.com/tessamero\nhttps://dev.to/tessamero\n\nFollow Domitrius Clark here:\nhttps://twitter.com/domitriusclark\nhttps://egghead.io/instructors/domitrius-clark\nhttps://www.twitch.tv/domitriusclark\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-10-27T14:49:55Z","position":"062","image":"https://i.ytimg.com/vi/XiZ2p0zLBd8/maxresdefault.jpg","videoId":"XiZ2p0zLBd8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:062-XiZ2p0zLBd8.md","_source":"content","_file":"3.videos/tim/062-XiZ2p0zLBd8.md","_extension":"md"},{"_path":"/videos/tim/063-v5aobiirud4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Magical combination to build a modern website","description":"Yes, I did it again. I rebuilt my website!\n\nMy website, https://timbenniks.dev, serves as my blog and a repository of my videos and speaking schedule. Though rich in content, the site is fast, accessible, and, most important, has a low carbon footprint. Under optimal conditions, the site scores 100 percent in Lighthouse.\n\nI recently rebuilt the site with several tools, the combination of which is ideal for modern web development. I’m excited about the result of the revamp. Let’s see how long that thrill lasts!\n\nI picked Nuxt version 2.14, which offers the excellent \"target: static\" option, outputting a static website on build. You probably guessed it already: my website adopts the Jamstack model. Jamstack websites are light and easy to distribute, with no reliance on dynamic content at all.\n\nEver tried hacking a static site? That’s hard to do. Also, if you need to scale it to meet demand, simply put it in more places on the content delivery network (CDN). After all, it's only a bunch of static files.\n\nHosting\nFor a smooth sail with Jamstack, I needed a hosting provider for the static assets on the CDN edge with simple capabilities for building and deploying my codebase. Netlify hosted my website before, but I wanted to try another provider for an insight into Netlify’s competition. Vercel, the provider I chose, was effortless to use. A nice surprise!\n\nCMS\nI picked Prismic, a great headless CMS whose features outshine those offered by huge enterprise systems. In particular, Prismic has resolved the rich-text issue many CMSs struggle with. I was also impressed by Prismic’s component-based design system, called slices, with which I can create pages in a component-driven way. I highly recommend checking out Prismic.\n\nSearching and filtering\nTo facilitate filtering of video content, I chose Algolia for indexing through its SaaS platform. The initial setup leveraged Algolia’s Vue.js components, which, despite a rather big footprint, do a lot of heavy lifting. Do have a look at Algolia in action on the site’s video page.\n\nOrchestrating the communication between best-of breed products like Algolia and Prismic is no trivial task. The challenge I faced was to ensure that Angolia updates the index when I add new videos to the Prismic. To make that happen, I created a Vercel lambda function, which is called with a webhook whenever I add a video. The function then queries the CMS for the new video data, after which the lambda updates the video index with the Algolia API. Voila, sheer magic!\n\nWebhooks are useful in decoupled architectures. I set up webhooks to also call Vercel when I publish content. On receiving a ping from a Prismic webhook, Vercel rebuilds the site and updates the CDN edge. Similarly, when I push updated code to GitHub, Vercel redeploys the site.\n\nWebhooks are the glue that helps automate the system. Thanks to Vercel’s high speed, I could deploy a hundred times a day without any part of the system breaking a sweat.\n\nImages\nCloudinary, another best-of-breed system I’ve been using for years, was an obvious choice. Even though Prismic offers an excellent feature set for managing images, Cloudinary struck me as being a better fit.\n\nThe process was straightforward. First, I sent the Prismic images to Cloudinary with the Nuxt Cloudinary module through the fetch system. From there, I transformed the images with the Cloudinary API slated for image URLs, e.g., by changing the file-type-based browser context and by resizing, scaling, and cropping the images accordingly.\n\nIt's open source: https://github.com/timbenniks/timbenniks2020-nuxt\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#jamstack #dxp #googleaudit","date":"2020-10-20T13:00:07Z","position":"063","image":"https://i.ytimg.com/vi/V5AobIiruD4/maxresdefault.jpg","videoId":"V5AobIiruD4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:063-V5AobIiruD4.md","_source":"content","_file":"3.videos/tim/063-V5AobIiruD4.md","_extension":"md"},{"_path":"/videos/tim/064-jtghl7ggoas","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Hi! 👋 I'm Tim and I'm a content creator!","description":"Buy me a coffee here: https://www.buymeacoffee.com/timbenniks\nWant to know more? Go here https://timbenniks.dev/sponsor-me/\n\nHi! I'm Tim and I'm a content creator from Paris. I’ve worked as a web developer and technical director for years and at one point in I decided I wanted to share the insights about my work with our community.\n\nWorking on high stakes projects for global brands is cool and all but you also have to give back a bit. I now focus on creating content about web development topics and soft skills for people of all levels.\n\nI truly enjoy doing community driven work and people seem to like what I have to say. I'm a lucky duck!\n\nI'm committed to delivering a new video every week! These videos don't just appear, they are A LOT of work. I want to always get you the best content and this takes a bunch of time. I also need the right gear to keep delivering high production quality.\n\nIf you decide to sponsor me I will love you forever! 😘 All donations will go right back into the content creation efforts. I'll use the money to buy audio/video/light gear. Or, I will try out paid services for the Tim Tries video series. Or, I will use the money to travel to conferences so that the organizers can spend money on the conference itself rather than on me. So many options!\n\nIf you read this far, you are awesome. 🙏 😘\n\nCheers,\nTim\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-10-12T13:45:05Z","position":"064","image":"https://i.ytimg.com/vi/JTGHl7ggOAs/maxresdefault.jpg","videoId":"JTGHl7ggOAs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:064-JTGHl7ggOAs.md","_source":"content","_file":"3.videos/tim/064-JTGHl7ggOAs.md","_extension":"md"},{"_path":"/videos/tim/065-96xypbh-hyo","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Chakra UI with Jonathan Bakebwa","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the Tim Tries Series. In this video I look at Chakra UI Vue with it's creator Jonathan Bakebwa!\n\nConclusion: solid framework, easy to use, not sure if it's for me...\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\n00:00 Introduction\n00:40 how to pronounce Jonathan Bakebwa\n01:08 Why build Chakra UI?\n02:23 Tim Tries Chakra UI\n09:24 Why not just use HTML?\n10:55 About Accessibility\n12:50 Conclusion\n\nFollow Jonathan here:\nWebsite: https://vue.chakra-ui.com/\nTwitter: https://twitter.com/codebender828\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries #chakraui #jonathanbakebwa","date":"2020-10-08T13:00:03Z","position":"065","image":"https://i.ytimg.com/vi/96xYPBH-Hyo/maxresdefault.jpg","videoId":"96xYPBH-Hyo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:065-96xYPBH-Hyo.md","_source":"content","_file":"3.videos/tim/065-96xYPBH-Hyo.md","_extension":"md"},{"_path":"/videos/tim/066-0vdfegtjdcg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: TailwindCSS with Alexander Lichter","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the #timtries Series. In this video I look at #tailwindcss. Alexander Lichter is an expert at tailwindcss and he tried to convince me it's awesome. Did he succeed?\n\nConclusion: check the video and see my excitement...\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nWhy tailwind and classes in the dom: https://adamwathan.me/css-utility-classes-and-separation-of-concerns/\n\nFollow Alexander here:\nWebsite: https://blog.lichter.io\nTwitter: https://twitter.com/TheAlexLichter\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-10-01T12:00:01Z","position":"066","image":"https://i.ytimg.com/vi/0VdfeGtjDcg/maxresdefault.jpg","videoId":"0VdfeGtjDcg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:066-0VdfeGtjDcg.md","_source":"content","_file":"3.videos/tim/066-0VdfeGtjDcg.md","_extension":"md"},{"_path":"/videos/tim/067-mcyeoin1s48","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim's Vlog: How to be a successful leader","description":"This is my second #vlog! It’s soft skill time again. I discuss the qualities successful leaders should posses to make a teams a success in a complex situation.\n\nDo take note: a leader is not always the manager. It could very well be that one of the more junior people take the leadership role. Managers you \"have\" to listen to. Leaders you \"want\" to listen to. \n\nBy a complex situation I mean a high pressure project with a big scope and not enough time, and on top the client is immature and is always upset. If you manage to get your team to be happy in these circumstances you will get a high quality result. \n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#leadership","date":"2020-09-22T12:00:13Z","position":"067","image":"https://i.ytimg.com/vi/McyeoiN1S48/maxresdefault.jpg","videoId":"McyeoiN1S48","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:067-McyeoiN1S48.md","_source":"content","_file":"3.videos/tim/067-McyeoiN1S48.md","_extension":"md"},{"_path":"/videos/tim/068-gojckw5ih7e","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global talk: Introducing Vite & Vitepress","description":"In this #vuejsglobal talk I'm introducing #Vite and #Vitepress. It's a basic introduction but I feel like this get's people in a place where they can actually try using these tools.\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-09-17T15:23:24Z","position":"068","image":"https://i.ytimg.com/vi/gojCkw5Ih7E/maxresdefault.jpg","videoId":"gojCkw5Ih7E","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:068-gojCkw5Ih7E.md","_source":"content","_file":"3.videos/tim/068-gojCkw5Ih7E.md","_extension":"md"},{"_path":"/videos/tim/069-ewlegish6dw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"A developers guide to low carbon websites","description":"This is my ImageCon 2020 talk.\n\nHow to make more sustainable choices in the production of web technology. This talk helps developers to make changes to their code so that their website has a lower carbon footprint.\n\nIf the internet was a country, it would be the world’s sixth biggest polluter. The internet consumes a lot of electricity. 466TWh per year to be precise. That’s more than the entire United Kingdom (300TWh)! \n\nCarbon emissions are generated all over the place, from data centers to our personal devices. The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that's 211 kg CO2 per year. These are staggering numbers and they will only go up as the internet is growing at a frightening rate. To make the internet more sustainable, web developers have three areas of attention.\n\n1. Design and content\n2. Front-end development best practices\n3. Server architecture choices","date":"2020-09-15T12:00:11Z","position":"069","image":"https://i.ytimg.com/vi/ewlEgIsh6Dw/maxresdefault.jpg","videoId":"ewlEgIsh6Dw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:069-ewlEgIsh6Dw.md","_source":"content","_file":"3.videos/tim/069-ewlEgIsh6Dw.md","_extension":"md"},{"_path":"/videos/tim/070-auzzgmyn0z4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim's vlog: Career advice for developers","description":"I'm on holiday and I now that I have a new camera I decided to do my first vlog! \nIt's story time with grandpa. In this vlog I'm reflecting on my own career as a developer and I give advice on how you can advance yours. There might be some nuggets of inspiration in there for you!\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timsvlog #career #vlog","date":"2020-09-09T11:56:23Z","position":"070","image":"https://i.ytimg.com/vi/AUzzgMyN0z4/maxresdefault.jpg","videoId":"AUzzgMyN0z4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:070-AUzzgMyN0z4.md","_source":"content","_file":"3.videos/tim/070-AUzzgMyN0z4.md","_extension":"md"},{"_path":"/videos/tim/071-zuht0g3zpyw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the #timtries Series. In this video I look at Figma, Zeplin and Storybook. I recently learnt how nicely all these tools integrate so developers get a MUCH better DX. Zeplin acts as the hub and the creative source of truth for development, QA, business analysts, UX and creative people.\n\nConclusion: Mind is blown... Zeplin CLI is amazing.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-09-01T12:00:15Z","position":"071","image":"https://i.ytimg.com/vi/ZUHT0g3ZPYw/maxresdefault.jpg","videoId":"ZUHT0g3ZPYw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:071-ZUHT0g3ZPYw.md","_source":"content","_file":"3.videos/tim/071-ZUHT0g3ZPYw.md","_extension":"md"},{"_path":"/videos/tim/072-madbxcbsvqo","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global Conference: An interview with Anthony Gore","description":"In this video I'm interviewing Anthony Gore. We discuss talk about Vue 3 for Vue 2 developers. Furthermore we dive into how he started is famous newsletter and how he manages to monetize his efforts for the our Vue community.\n\nAnthony's newsletter has been my go-to for years so I'm super excited about the fact I got to interview him!\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Anthony here:\nhttps://twitter.com/anthonygore\nhttps://twitter.com/vuejsdevelopers\nhttps://vuejsdevelopers.com/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #timbenniks #vuejsglobal","date":"2020-08-26T12:00:57Z","position":"072","image":"https://i.ytimg.com/vi/madbxCbSvqo/maxresdefault.jpg","videoId":"madbxCbSvqo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:072-madbxCbSvqo.md","_source":"content","_file":"3.videos/tim/072-madbxCbSvqo.md","_extension":"md"},{"_path":"/videos/tim/073-uufbfcipaly","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global Conference: An interview with Eduardo San Martin Morote","description":"In this video I'm interviewing Eduardo San Martin Morote from the Vue core Team. Eduardo works on the Vue Router and in this interview we dive deep into what he did for the refactor of the new Vue 3 router. Next to this we discuss his ideas on monetizing open source work and what solutions fit best. As it turns out, he is building his own! \n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Eduardo here:\nhttps://twitter.com/posva\nhttps://github.com/posva\nhttps://esm.dev/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #vuejsglobal #vue3router","date":"2020-08-19T12:00:10Z","position":"073","image":"https://i.ytimg.com/vi/uuFBfCIpAlY/maxresdefault.jpg","videoId":"uuFBfCIpAlY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:073-uuFBfCIpAlY.md","_source":"content","_file":"3.videos/tim/073-uuFBfCIpAlY.md","_extension":"md"},{"_path":"/videos/tim/074-fyuvqruzevy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Webpack tutorial: Create a config from scratch","description":"All around me I see people rage-quit when trying to make their own #Webpack config. If you have never done it before it is pretty hard! I know, I've been there. In this video we will create a Webpack config together. In thirty minutes you will learn the Webpack basics, how to load assets, how to have a nice developer experience and how to split your bundle for optimized performance.\n\nTime stamps:\n00:00 I received a gift!\n00:56 Introduction\n01:53 Webpack basics\n04:55 Chapter 1: Entry and output\n08:14 Chapter 2: Loaders for Styles, Images and Babel\n16:03 Chapter 3: Output management and dynamic HTML rendering\n23:28 Chapter 4: DX for local development\n27:32 Chapter 5: Chunking bundles\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#guide #tutorial","date":"2020-08-17T12:00:11Z","position":"074","image":"https://i.ytimg.com/vi/fyuvqRUzeVY/maxresdefault.jpg","videoId":"fyuvqRUzeVY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:074-fyuvqRUzeVY.md","_source":"content","_file":"3.videos/tim/074-fyuvqRUzeVY.md","_extension":"md"},{"_path":"/videos/tim/075-tlbstgzcyyy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global conference: An interview with Gift Egwuenu","description":"In this video I'm interviewing Gift Egwuenu. Gift works at Passionate People as a web developer, she is a Media Developer Expert at Cloudinary, she has a YouTube channel and she is a Technical Writer. Wow! We discuss her talk about JAMstack and Gridsome and after that we dive into how she experiences working from Lagos, Nigeria while most of her colleagues are in Europe or the US.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Gift here:\nhttps://twitter.com/lauragift_\nhttps://www.giftegwuenu.com\nhttps://github.com/lauragift21\nhttps://www.youtube.com/channel/UCgUgg53iJX1pdabUxpkgozA\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-08-11T12:00:12Z","position":"075","image":"https://i.ytimg.com/vi/tLbStGzcYYY/maxresdefault.jpg","videoId":"tLbStGzcYYY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:075-tLbStGzcYYY.md","_source":"content","_file":"3.videos/tim/075-tLbStGzcYYY.md","_extension":"md"},{"_path":"/videos/tim/076-brmxytpulm4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global conference: An interview with Filip Rakowski","description":"In this video I'm interviewing Filip Rakowski, CTO at Vue Storefront. We discuss his talk about Vue Storefront Next and we go in-depth on why they needed a Next version. After that we discuss how to monetize open source work and what it means for Vue Storefront to be a part of the MACH alliance.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Filip here:\nhttps://twitter.com/filrakowski\nhttps://rakowski.dev/\nhttps://www.vuestorefront.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #vuejsglobal #vuestorefront","date":"2020-08-04T12:00:06Z","position":"076","image":"https://i.ytimg.com/vi/BrmXYtPUlM4/maxresdefault.jpg","videoId":"BrmXYtPUlM4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:076-BrmXYtPUlM4.md","_source":"content","_file":"3.videos/tim/076-BrmXYtPUlM4.md","_extension":"md"},{"_path":"/videos/tim/077-ibkgryfpuds","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global conference: An interview with Debbie O'Brien","description":"In this video I'm interviewing Debbie O'Brien. Debbie is head of learning and developer advocate at #Nuxtjs. We discuss her talk about Nuxt/content and how they are working on a bunch of new features to make nuxt even more flexible. After that we discuss how she experienced landing the job and how she learnt a lot from previous job hunting.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nIn the intro I mention that the Vue.js Global conferenc eis in August. It has been moved to September 17th.\n\nFollow Debbie here:\nhttps://twitter.com/debs_obrien\nhttps://debbie.codes/\nhttps://www.nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-07-27T12:01:33Z","position":"077","image":"https://i.ytimg.com/vi/IBKgryFpUDs/maxresdefault.jpg","videoId":"IBKgryFpUDs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:077-IBKgryFpUDs.md","_source":"content","_file":"3.videos/tim/077-IBKgryFpUDs.md","_extension":"md"},{"_path":"/videos/tim/078-2mfsb5ulhks","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global conference: An interview with Maria Lamardo","description":"In this video I'm interviewing Maria Lamardo. Maria is a web developer with a specialty in #accessibility and #Vuejs. We talk a little about her Vue.js Global conference talk which basically covers me asking her annoying questions about forms and accessibility. After covering the conference talk we dive into her unconventional path into tech and how she became so good at her job. I'm very impressed by Maria and our conversation goes quite deep. If you are someone who wants to potentially switch careers, watch this interview.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Maria here:\nhttps://twitter.com/MariaLamardo\nhttps://twitter.com/world_vue\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview","date":"2020-07-22T12:00:50Z","position":"078","image":"https://i.ytimg.com/vi/2MFsb5ulhks/maxresdefault.jpg","videoId":"2MFsb5ulhks","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:078-2MFsb5ulhks.md","_source":"content","_file":"3.videos/tim/078-2MFsb5ulhks.md","_extension":"md"},{"_path":"/videos/tim/079-d0jk7hyu1ai","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Azure functions revisited for v3. Conclusion: AWESOME","description":"After a not-so-great experience with Azure Functions previously I decided to revisit them for version 3.0. Conclusion: AWESOME. I explore how to set-up, create and upload functions all from vscode. Microsoft nailed the developer experience here I and I'll definitely be combining Azure Functions and Azure Static Web Apps in the future.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#azurefunctions #javascript #vscode","date":"2020-07-06T10:04:18Z","position":"079","image":"https://i.ytimg.com/vi/d0jk7hYU1AI/maxresdefault.jpg","videoId":"d0jk7hYU1AI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:079-d0jk7hYU1AI.md","_source":"content","_file":"3.videos/tim/079-d0jk7hYU1AI.md","_extension":"md"},{"_path":"/videos/tim/080-v50mhzzffaa","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tutorial: How to build a Gridsome Source Plugin","description":"#Gridsome uses Source Plugins to get data from third party CMS' or API's into your #JAMstack website. Recently I felt I needed a custom source plugin and in this video I explain how you can do that as well.\n\nCode is open source: \nhttps://github.com/timbenniks/gridsome-source-example\n\nAlso check out: \nhttps://gridsome.org/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejs","date":"2020-06-30T14:00:16Z","position":"080","image":"https://i.ytimg.com/vi/V50mHzzFFaA/maxresdefault.jpg","videoId":"V50mHzzFFaA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:080-V50mHzzFFaA.md","_source":"content","_file":"3.videos/tim/080-V50mHzzFFaA.md","_extension":"md"},{"_path":"/videos/tim/081-pu8f59x14-y","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"My audio setup 2020","description":"Based on high demand I'm hereby sharing my audio setup for 2020. I create YouTube videos, I make music and I do a ton of public speaking and conference calls. Audio is arguably more important than video so I did my research and put together an awesome setup for a fair price.\n\nIn this video I will go over audio basics, what you need at a minimum and what I chose as my tools for success. If this setup is not budget friendly enough make sure to watch until the end, I give cheaper alternatives that served me very well over the last year.\n\nTimestamps:\n00:00 Introduction\n01:18 My background in audio gear\n03:21 Audio Interface\n06:36 Microphone\n10:36 Audio caparison with and without gear\n11:08 Studio Monitors\n12:39 Headphones\n13:18 Monitor volume control\n15:03 Cheaper alternatives\n16:01 Alternative USB microphone\n17:13 Ultra cheap but awesome lav mic.\n18:10 Concluding\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-06-23T10:14:41Z","position":"081","image":"https://i.ytimg.com/vi/Pu8F59X14-Y/maxresdefault.jpg","videoId":"Pu8F59X14-Y","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:081-Pu8F59X14-Y.md","_source":"content","_file":"3.videos/tim/081-Pu8F59X14-Y.md","_extension":"md"},{"_path":"/videos/tim/082-a54ifas8rts","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Azure Static Web Apps","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. In this video I look at #Azure Static Web Apps. Azure clearly noticed the trends in the JAMstack world and likely also figured out that just static file hosting is not enough. They offer way more features than Netlify for example. But is it good enough? Let's see...\n\nConclusion: this thing just works! I'm impressed.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nDocs: https://azure.microsoft.com/en-us/services/app-service/static/\nA great tutorial by Gift Egwuenu (I didn't use it): https://www.giftegwuenu.com/deploy-a-gridsome-app-on-azure-static-web-apps/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries #jamstack","date":"2020-06-15T10:48:34Z","position":"082","image":"https://i.ytimg.com/vi/A54iFAS8rts/maxresdefault.jpg","videoId":"A54iFAS8rts","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:082-A54iFAS8rts.md","_source":"content","_file":"3.videos/tim/082-A54iFAS8rts.md","_extension":"md"},{"_path":"/videos/tim/083-ggaoxqtc7ke","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tutorial: Vue 3 composition API and Vite to recreate TikTok","description":"In this video you will learn how to use the new Vue 3 composition API to create a simple version of TikTok. We are also using Vite, the new dev build tool build by Evan You!\n\nI thought it would be hard to learn, but it really wasn't. Please, jump in and try this yourself!\n\nThe code is open-source. Find it here: https://github.com/timbenniks/vue3-vite-tiktok-tutorial\n\nLinks: \nhttps://www.vuemastery.com/vue-3-cheat-sheet/\nhttps://github.com/vitejs/vite\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vue3 #compositionapi #vite","date":"2020-06-10T08:17:18Z","position":"083","image":"https://i.ytimg.com/vi/gGaoxqTc7kE/maxresdefault.jpg","videoId":"gGaoxqTc7kE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:083-gGaoxqTc7kE.md","_source":"content","_file":"3.videos/tim/083-gGaoxqTc7kE.md","_extension":"md"},{"_path":"/videos/tim/084-bpjjxxqycdi","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Slice Machine by Nuxt and Prismic","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. In this video I look at Slice Machine, a #Vuejs component library connected to the #Prismic headless CMS. This service is a collaboration between the Prismic and #Nuxtjs. \n\nConclusion: Solid base. Needs some fine tuning.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nhttps://www.slicemachine.dev/\nhttps://vue-essential-slices.netlify.app/\nhttps://prismic.io/\nhttps://nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries","date":"2020-06-02T13:23:14Z","position":"084","image":"https://i.ytimg.com/vi/bPJJxxqycDI/maxresdefault.jpg","videoId":"bPJJxxqycDI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:084-bPJJxxqycDI.md","_source":"content","_file":"3.videos/tim/084-bPJJxxqycDI.md","_extension":"md"},{"_path":"/videos/tim/085-zpq_gqmit5y","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Interview with Scott Tolinski from Level up Tutorials","description":"I got to interview Scott Tolinski! Wow! Scott is first and foremost a web developer. With years of experience on his belt he decided to start creating tutorials on YouTube. This now grew into one of the best places to go for learning about the web. He also started leveluptutorials.com where you can get premium lessons.\n\nNext to all this he is the co-host of the Syntax podcast. Scott and his buddy Wes Bos go in-depth on code stuff and teach each-other new things.\n\nThe interview is wide ranging and we go over how to create for YouTube and to how to manage social media. We also discuss how Scott learnt to fail and get success after by being a Bboy with the Robotops Crew.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Scott Tolinski here:\nWebsite: https://www.leveluptutorials.com/\nTwitter: https://twitter.com/stolinski\nYouTube: https://www.youtube.com/c/leveluptuts\nPodcast: https://syntax.fm/\n\nFollow Tim Benniks here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-05-26T10:30:20Z","position":"085","image":"https://i.ytimg.com/vi/zPQ_gQMiT5Y/maxresdefault.jpg","videoId":"zPQ_gQMiT5Y","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:085-zPQ_gQMiT5Y.md","_source":"content","_file":"3.videos/tim/085-zPQ_gQMiT5Y.md","_extension":"md"},{"_path":"/videos/tim/086-5jaypm6gx1o","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Lazy Loading Images with Prismic and Vue.js","description":"In this video I explain how I managed to add lazy loading images in Vue.js while getting image data from the headless CMS Prismic. \n\nIn this case it’s not just a matter of creating a Vue component as I also get images rendered in HTML from the Prismic Rich text field. \n\nThis is a lazy loading solution for images that works both in vanilla JS and Vue. \n\nSee it in action here: http://timbenniks.nl\nFind the code here: https://github.com/timbenniks/timbenniks2020\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejs #prismic #lazyloading","date":"2020-05-22T13:48:42Z","position":"086","image":"https://i.ytimg.com/vi/5jAYPM6gX1o/maxresdefault.jpg","videoId":"5jAYPM6gX1o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:086-5jAYPM6gX1o.md","_source":"content","_file":"3.videos/tim/086-5jAYPM6gX1o.md","_extension":"md"},{"_path":"/videos/tim/087-cf5_pit-ai","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Interview with Jen Looper from Microsoft","description":"I had the privilege to interview Jen Looper. Jen is a cloud advocate lead at Microsoft, she is the founder of Front-end Foxes (previously Vue Vixens) and she is a seasoned speaker and developress.\n\nWe had a lovely wide-ranging conversation where we learn about how she came up during the first Internet bubble, managing work and life with kids and starting Front-end Foxes.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Jen here:\nWebsite: https://jenlooper.com\nTwitter: https://twitter.com/jenlooper\nFront-end Foxes: https://www.vuevixens.org\n\nFollow me here:\nWebsite: https://timbenniks.nl\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-05-13T12:44:46Z","position":"087","image":"https://i.ytimg.com/vi/cf5_pit--aI/maxresdefault.jpg","videoId":"cf5_pit--aI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:087-cf5_pit--aI.md","_source":"content","_file":"3.videos/tim/087-cf5_pit--aI.md","_extension":"md"},{"_path":"/videos/tim/088-tqr2eo7tivc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","description":"Ever wanted to know how you can use #Prismic and #Gridsome to make an awesome, super fast, #JAMstack website? This is your chance! In this 30 minute video I give you an overview of both Prismic and Gridsome and we dive into the code to see how it all connects.\n\nI could spend hours on going through the specifics on how to build a proper website. I might do that in a different video series, stay tuned! For now enjoy this more general overview of the tools and it should be enough to get you going!\n\nRead more about this project on the blog: https://timbenniks.nl/writings/a-new-website/\nThe project is open source: https://github.com/timbenniks/timbenniks2020/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-05-07T10:36:44Z","position":"088","image":"https://i.ytimg.com/vi/tqR2EO7Tivc/maxresdefault.jpg","videoId":"tqR2EO7Tivc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:088-tqR2EO7Tivc.md","_source":"content","_file":"3.videos/tim/088-tqR2EO7Tivc.md","_extension":"md"},{"_path":"/videos/tim/089-aw4nl6hgjb0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Debbie O'brien from Nuxtjs","description":"In this video I'm interviewing Debbie O'brien from Nuxtjs! We have a lovely and LONG conversation, as friends do. We talk about her new job as Head of Learning at Nuxtjs, her ways of working and cultural differences. We flow from tender, insightful moments to jokes. This is a good one.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Debbie here:\nhttps://debbie.codes\nhttps://twitter.com/debs_obrien\nhttps://nuxtjs.org\nhttps://dev.to/debs_obrien\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-04-29T11:04:04Z","position":"089","image":"https://i.ytimg.com/vi/aw4nl6hGjb0/maxresdefault.jpg","videoId":"aw4nl6hGjb0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:089-aw4nl6hGjb0.md","_source":"content","_file":"3.videos/tim/089-aw4nl6hGjb0.md","_extension":"md"},{"_path":"/videos/tim/090-gxwrzna4udq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Quarantine licks #2 - Folksy Tunes","description":"During #COVID19 pandemic I decided to do more with music. In this series called \"Quarantine Licks\" I will show you fun and juicy guitar licks every week.\n\nFor now I kept them acoustic but expect electric guitar also. Rock 'n roll will commence :)\n\nI'm open for collaborations. Comment on this video if you're keen.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\n\n#guitarlicks #quarantinelicks","date":"2020-04-23T10:34:07Z","position":"090","image":"https://i.ytimg.com/vi/gXwRzna4udQ/maxresdefault.jpg","videoId":"gXwRzna4udQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:090-gXwRzna4udQ.md","_source":"content","_file":"3.videos/tim/090-gXwRzna4udQ.md","_extension":"md"},{"_path":"/videos/tim/091-xit7qtmcmik","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"COVID-19 Work from home: how to make your webcam look good","description":"In this Video I will show you a couple of simple do's and don'ts to make your webcam look more professional. You don't need any technical knowledge at all to do the things I'm about to tell you.\n\nPerception of how professional you look is super important. During the COVID-19 pandemic everybody has to work from home. This generally involves using webcams to do meetings. \n\nMaybe you lost your job during the COVID-19 crisis and you need to do interviews via Skype, Zoom or Teams. Looking professional gets your foot in the door in a meeting with your boss or a job interview.\n\nTime stamps\n1:14 The most important thing for your webcam\n2:47 About settings\n4:27 Fun stuff\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-04-20T08:08:37Z","position":"091","image":"https://i.ytimg.com/vi/xiT7qtMCmIk/maxresdefault.jpg","videoId":"xiT7qtMCmIk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:091-xiT7qtMCmIk.md","_source":"content","_file":"3.videos/tim/091-xiT7qtMCmIk.md","_extension":"md"},{"_path":"/videos/tim/092-bebr8ev2no8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Weight loss with Serveless architecture and the JAMstack","description":"What do Serverless and JAMstack have to do with weight loss? Well, in my case, a lot!\n\nTo be able to loose weight I need a good incentive. And for me that incentive is public accountability. I have created a #Vue.js PWA app called \"Fatty\" that is built on a serverless architecture and the JAMstack. The app shows how much weight I have lost and it tweets an update into the world every time I step on my WiFi enabled scale. In this video I explain how it all connects!\n\nNext to talking about the tech that powers the Fatty app I also tell about my fitness story. If I can loose all that weight than you can as well.\n\nRead about Fatty here: https://timbenniks.nl/writings/fatty-is-alive/\nSee Fatty in action: https://fatty.timbenniks.com\nMore on my fitness story: https://timbenniks.nl/writings/my-fitness-story/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#jamstack #serverless","date":"2020-04-15T10:14:21Z","position":"092","image":"https://i.ytimg.com/vi/beBR8ev2nO8/maxresdefault.jpg","videoId":"beBR8ev2nO8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:092-beBR8ev2nO8.md","_source":"content","_file":"3.videos/tim/092-beBR8ev2nO8.md","_extension":"md"},{"_path":"/videos/tim/093-wlqlclwjorc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Quarantine Licks #1 - Acoustic Blues","description":"Now that I have entered my fifth week of staying home during the #COVID19 pandemic I decided to do more with music. In this series called \"Quarantine Licks\" I will show you fun guitar licks every week. \n\nI might do some collaborations with other musicians too!\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#guitarlicks","date":"2020-04-14T10:50:39Z","position":"093","image":"https://i.ytimg.com/vi/WLQLCLWJorc/maxresdefault.jpg","videoId":"WLQLCLWJorc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:093-WLQLCLWJorc.md","_source":"content","_file":"3.videos/tim/093-WLQLCLWJorc.md","_extension":"md"},{"_path":"/videos/tim/094-zzrqozpc068","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Tim Benniks from Valtech","description":"In this video I'm the interviewee for a change! We speak about the #vuejsamsterdam conference I just spoke at, about how I interact with the Vue.js community, how I personally interact with clients and teams, about the future of automation in the tech space and how I see innovation in enterprise software. Lot's of good stuff!\n\n1:20 About the conference.\n1:50 About the talk: Team First.\n4:00 FATTY. Public Accountability.\n10:19 Innovation on enterprise level.\n17:30 About failing and behavior.\n21:10 What do you drink while coding?\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam","date":"2020-04-08T12:19:43Z","position":"094","image":"https://i.ytimg.com/vi/ZZRQOzpC068/maxresdefault.jpg","videoId":"ZZRQOzpC068","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:094-ZZRQOzpC068.md","_source":"content","_file":"3.videos/tim/094-ZZRQOzpC068.md","_extension":"md"},{"_path":"/videos/tim/095-f5f7n2kc7hq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"HTTP/2 performance: you still need a bundler!","description":"Every project I deal with outdated beliefs about performance and people not really knowing about the power of HTTP/2. This video is a crash course into some of the most valuable features HTTP/2 has to offer: header compression and multiplexing. I do a real time demo in which you can see that multiplexing works but actually has caveats! \n\nIf you want to know about bundle sizes and how many connections can be \"in flight\" at the same time, this video is for you!\n\n#HTTP2 #performance #webpack\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-04-02T11:07:53Z","position":"095","image":"https://i.ytimg.com/vi/f5F7N2kc7hQ/maxresdefault.jpg","videoId":"f5F7N2kc7hQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:095-f5F7N2kc7hQ.md","_source":"content","_file":"3.videos/tim/095-f5F7N2kc7hQ.md","_extension":"md"},{"_path":"/videos/tim/096-nw0y6dkx1ku","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","description":"In this video I'm interviewing Una Verhoeven. Una and I work together at Valtech. When she joined the global team as a Sitecore Architect we teamed up to help out on a challenging project. We became fast friends and when I learnt about her story I decided an interview had to take place. Some people just impress. Una is one of those.\n\nWe talk about switching cultures from Serbia to the Netherlands, starting your own company and fashion.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Una here:\nTwitter: https://twitter.com/unaverhoeven\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#sitecore #interview #valtech","date":"2020-03-25T12:20:43Z","position":"096","image":"https://i.ytimg.com/vi/nw0y6dkx1KU/maxresdefault.jpg","videoId":"nw0y6dkx1KU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:096-nw0y6dkx1KU.md","_source":"content","_file":"3.videos/tim/096-nw0y6dkx1KU.md","_extension":"md"},{"_path":"/videos/tim/097-vqjp5qfiolg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Filip Rakowski from Vue Storefront","description":"Filip is the co-founder and tech lead of Vue Storefront. Vue Storefront is a revolutionary Headless PWA for e-commerce that works with any back-end. In this interview we discuss why he thinks Vue Storefront needs to exist and what he thinks about the future of e-commerce. \n\nFilip is also a very active speaker and OSS contributor. He shares his tips and tricks to write better CFP's and more!\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFind Filip here:\nhttps://twitter.com/filrakowski\nhttps://twitter.com/VueStorefront\nhttps://www.vuestorefront.io/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam\n\n#interview #vuestorefront #vuejs","date":"2020-03-20T15:33:05Z","position":"097","image":"https://i.ytimg.com/vi/vqjP5qFiOLg/maxresdefault.jpg","videoId":"vqjP5qFiOLg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:097-vqjP5qFiOLg.md","_source":"content","_file":"3.videos/tim/097-vqjP5qFiOLg.md","_extension":"md"},{"_path":"/videos/tim/098-ltm7wz0q564","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"[Livestream] Team First - How to lead a team to success in a high pressure environment","description":"Producing high quality work is dependent on a well-organized team, especially in a high-pressure environment like an ad agency or a production studio. At a certain scale almost every team struggles with cultural differences, perceived pressure from management or misaligned definitions of success.\n\nThese examples are only a handful of the problems teams face, which results in developers that are unhappy and stressed out. Processes outside of their control keep them from doing the thing they love: write great code.\n\nOver the years I have learned that you are more successful if you understand what motivates people. We know happy teams produce better work. Motivated and responsible people are the core of our success. Therefore, I have created a framework (yes, I'm a developer) to deal with projects in complex environments that I call \"Team First\".\n\nThis video is about how the \"Team First\" framework came to be and how it works. It contains best practices and rules to follow in order to make yourself and your team successful. I share anecdotes from years of experience that most developers can identify with.\n\nBefore writing a single line of code you have to deal with all challenges that prohibit you from producing a quality product. The \"Team First\" framework helps leaders, teams and developers get there.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#teamfirst #career #management #motivation","date":"2020-03-12T15:31:27Z","position":"098","image":"https://i.ytimg.com/vi/LTM7wz0Q564/maxresdefault.jpg","videoId":"LTM7wz0Q564","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:098-LTM7wz0Q564.md","_source":"content","_file":"3.videos/tim/098-LTM7wz0Q564.md","_extension":"md"},{"_path":"/videos/tim/099-u5s4dqqlt1o","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","description":"Natalia is a Ukrainian software engineer. She works at Gitlab and she is part of the Vue.js core team. Those are the two positions a lot of people desire. We dive deep into how she experienced the amazing gitlab hiring process and how she managed to get through it.\n\nNatalia is humble and kind and she explains how she sees life and what gives some great insights on how to succeed. \n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFind Natalia here:\nhttps://www.nataliatepluhina.com/\nhttps://twitter.com/N_Tepluhina\nhttps://gitlab.com/ntepluhina\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam\n\n#interview #gitlab #vuejs","date":"2020-03-06T12:53:55Z","position":"099","image":"https://i.ytimg.com/vi/U5S4DqQlt1o/maxresdefault.jpg","videoId":"U5S4DqQlt1o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:099-U5S4DqQlt1o.md","_source":"content","_file":"3.videos/tim/099-U5S4DqQlt1o.md","_extension":"md"},{"_path":"/videos/tim/100-boby5h-r1hc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Amsterdam recap and exciting announcements!","description":"In this video I recap my experience with the Vue.js Amsterdam conference and I make an exciting announcement for future collaborations on this channel. Watch until the end to find out!\n\nA recap of the talks: https://medium.com/jeff-tech/my-top-5-talks-from-vue-js-amsterdam-2020-d56b1b62f1a1\n\nMy slides: https://slides.com/timbenniks/team-first-3\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejsamsterdam #conference #announcements","date":"2020-02-26T12:47:15Z","position":"100","image":"https://i.ytimg.com/vi/bOBY5h-r1hc/maxresdefault.jpg","videoId":"bOBY5h-r1hc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:100-bOBY5h-r1hc.md","_source":"content","_file":"3.videos/tim/100-bOBY5h-r1hc.md","_extension":"md"},{"_path":"/videos/tim/101-pwqvqnnopiy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Anastasiya Flynn from Sitecore JSS","description":"In this video I’m interviewing Anastasiya Flynn from Sitecore. Anastasiya is a full-stack developer and currently works at Sitecore, a marketing platform with advanced content personalization features, as the Front-End Technical Evangelist. She evangelizes JavaScript, the front-end community, and Sitecore’s JavaScript Services (JSS) SDK, which enables Sitecore to run “headlessly” so that front-end devs can build a single page app presentation layer using Vue, React, React Native, or Angular.\n\nAnastasiya and I discuss how she landed her job at Sitecore, and we dig deeper into some personal history. She shares her inspirational story on how she got to be where she is now in life. Pay attention, this will inspire you :)\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\n0:00 introduction \n1:25 About public speaking\r\n2:45 Moving from an agency to a product company\r\n5:22 The direction Sitecore JSS is taking with front-end technology\r\n6:41 What makes Anastasiya a good product avengalist\r\n8:10 How to be successful with JSS without Sitecore specific knowledge.\r\n11:30 About building community and how challenges in life can make you successful. \r\n16:54 Tech gives opportunities to everyone who is able to buy a computer.\r\n19:03 About creativity\r\n21:00 cats! Everybody should own a pet.\r\n21:41 Is there anything you are good at that nobody knows about?\r\n22:20 About being a woman in tech\r\n26:20 If you had a billboard that millions of people could see, what would you write on it?\n\nFollow Anastasiya here:\nhttps://twitter.com/AnastasiyaFlynn\nhttps://codealamode.blog/\nhttps://jss.sitecore.com \n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#sitecorejss #interview","date":"2020-02-21T08:29:31Z","position":"101","image":"https://i.ytimg.com/vi/pwqVQnnoPIY/maxresdefault.jpg","videoId":"pwqVQnnoPIY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:101-pwqVQnnoPIY.md","_source":"content","_file":"3.videos/tim/101-pwqVQnnoPIY.md","_extension":"md"},{"_path":"/videos/tim/102-lkiomruiaae","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Eduardo from the Vue.js core team","description":"In this video I'm interviewing Eduardo San Martin Morote from the Vue.js core team. What a privilege to speak to someone who actually built the tools I use on a daily basis! Eduardo humbly explains how he sees life and how he acts as a contributor to open source projects.\n\nWhat a guy. I'm in awe how Eduardo carries himself and what this youngster has already accomplished.\n\nIn this video series I interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nFollow Eduardo here:\nhttps://twitter.com/posva\nhttps://github.com/sponsors/posva\nhttps://esm.dev/\nhttps://twitter.com/posva/status/1146415898967908352\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-02-13T09:42:00Z","position":"102","image":"https://i.ytimg.com/vi/LKioMRuiAaE/maxresdefault.jpg","videoId":"LKioMRuiAaE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:102-LKioMRuiAaE.md","_source":"content","_file":"3.videos/tim/102-LKioMRuiAaE.md","_extension":"md"},{"_path":"/videos/tim/103-azqrjdqa_d8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Webpack basics and core concepts","description":"Ever wanted to know how Webpack works? This video explains its core concepts. I decided to do this because many people think Webpack is like a unicorn that uses rainbows and magic to do its job. But actually, Webpack is not that hard to understand once you have an overview of its feature set.\n\nAfter watching this video you will be ready to roll your own custom configuration! This insight should help you make decisions on how to bundle and optimize your application for production. \n\nPrevious video: https://youtu.be/WExoF1TFI04\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-02-06T10:33:36Z","position":"103","image":"https://i.ytimg.com/vi/AZqRjdqa_D8/maxresdefault.jpg","videoId":"AZqRjdqa_D8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:103-AZqRjdqa_D8.md","_source":"content","_file":"3.videos/tim/103-AZqRjdqa_D8.md","_extension":"md"},{"_path":"/videos/tim/104-wexof1tfi04","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"5 tips to become a better web developer.","description":"In this video I give you 5 tips you can apply to your daily work to a become a better developer. The tips are relatively easy to understand but take some effort to master. However, they can truly change your career! They sure changed mine for the better.\n\nFunny thing is: these tips have little to do with programming itself. Next to producing code, advancing your career is mostly done by having the right attitude, soft skills and taking responsibility for your work.\n\nI do a conference talk about this subject called Team First. Read more about that here: https://timbenniks.nl/writings/team-first/\n\n00:00 Introduction\n01:10 Helicopter view.\n05:15 Motivation.\n09:15 take decisions on intuition. Ask for forgiveness later.\n10:28 Champion subjects you like.\n12:17 Be pragmatic.\n\nPrevious video: https://youtu.be/H7qmArrblw8\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-29T09:55:10Z","position":"104","image":"https://i.ytimg.com/vi/WExoF1TFI04/maxresdefault.jpg","videoId":"WExoF1TFI04","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:104-WExoF1TFI04.md","_source":"content","_file":"3.videos/tim/104-WExoF1TFI04.md","_extension":"md"},{"_path":"/videos/tim/105-h7qmarrblw8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Maya Shavin: When you have the force, nothing is impossible!","description":"In this video series I interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nBeware, this is my first interview. Please leave your feedback in the comments :)\n\nIn this installment I'm speaking to Maya Shavin. Maya is a senior web developer in the R&D team at Cloudinary. Next to being a great developer she is also a speaker, a writer and she organizes events. We dive deep (yep, 47 minutes) into how she has such an amazing output and how she deals with the challenges of culture clash, family life and being a woman in a male dominated arena.\n\nMaya truly has the force! Watch until the end where she explains her mantra to success.\n\nFollow Maya here:\nhttps://www.mayashavin.com/\nhttps://twitter.com/MayaShavin\nhttps://www.cloudinary.com\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-24T10:03:49Z","position":"105","image":"https://i.ytimg.com/vi/H7qmArrblw8/maxresdefault.jpg","videoId":"H7qmArrblw8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:105-H7qmArrblw8.md","_source":"content","_file":"3.videos/tim/105-H7qmArrblw8.md","_extension":"md"},{"_path":"/videos/tim/106-liek4kwnsbq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Code faster and make less mistakes","description":"Learn how to use Visual Studio Code and Hyper.js with ZSH to streamline your JavaScript developer environment for coding fast and with less errors. The setup is simple and considered and it works both both MAC and PC (With WSL Ubuntu).\n\nHow to install Ubuntu WSL: https://docs.microsoft.com/en-us/windows/wsl/install-win10\n\n0:00 Introduction\n1:00 The tools I use\n1:43 IDE\n2:47 IDE Extensions\n7:17 IDE Theme\n8:58 Terminal\n13:27 Conclusion\n\nTools used in this video:\nVisual Studio Code: https://code.visualstudio.com/\nHyper.js: https://hyper.is/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-13T11:59:22Z","position":"106","image":"https://i.ytimg.com/vi/LIek4kwnSbQ/maxresdefault.jpg","videoId":"LIek4kwnSbQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:106-LIek4kwnSbQ.md","_source":"content","_file":"3.videos/tim/106-LIek4kwnSbQ.md","_extension":"md"},{"_path":"/videos/tim/107-shtbmwkzwpi","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Introduction to my YouTube Channel","description":"Hi I'm Tim and welcome to my channel. This channel has content about web development. I do guides and in-depth pieces about development topics but I also interview prominent members of our community. \n\nI interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nIf you like this sort of stuff, subscribe! I'll see you in the comments.\n\nA little bit about me:\nTim is a web developer from Amsterdam who moved to Paris to explore the magical world of luxury clients and baguettes. He likes to build fancy websites, make music and cook food.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-03T15:33:38Z","position":"107","image":"https://i.ytimg.com/vi/SHtBMWkZWPI/maxresdefault.jpg","videoId":"SHtBMWkZWPI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:107-SHtBMWkZWPI.md","_source":"content","_file":"3.videos/tim/107-SHtBMWkZWPI.md","_extension":"md"},{"_path":"/videos/tim/108-vcf1xfoegwm","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to make your webcam look great!","description":"In this video I go over all the things you need to know to make your webcam look better. Why webcams kind of suck, how to set-up lighting and what post-processing to add.\n\nMore details can be found here: https://timbenniks.nl/writings/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/\n\n0:20 Why webcams kind of suck\n3:03 About lighting\n5:50 Post processing\n9:40 Bonus!\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-01T00:57:56Z","position":"108","image":"https://i.ytimg.com/vi/vcf1xFOeGwM/maxresdefault.jpg","videoId":"vcf1xFOeGwM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:108-vcf1xFOeGwM.md","_source":"content","_file":"3.videos/tim/108-vcf1xFOeGwM.md","_extension":"md"},{"_path":"/videos/uniform/000-sf8tcv5t9pa","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform DXCP: composability with Headless 2.0","description":"This is Uniform DXCP: composability with Headless 2.0","date":"2023-07-20T07:53:52Z","position":"000","image":"https://i.ytimg.com/vi/sF8TCV5t9PA/maxresdefault.jpg","videoId":"sF8TCV5t9PA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:000-sF8TCV5t9PA.md","_source":"content","_file":"3.videos/uniform/000-sF8TCV5t9PA.md","_extension":"md"},{"_path":"/videos/uniform/001-vkjwiqlm6_w","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: Dynamic Pages","description":"Learn more at https://uniform.dev","date":"2023-07-20T07:53:58Z","position":"001","image":"https://i.ytimg.com/vi/VkJWIqlM6_w/maxresdefault.jpg","videoId":"VkJWIqlM6_w","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:001-VkJWIqlM6_w.md","_source":"content","_file":"3.videos/uniform/001-VkJWIqlM6_w.md","_extension":"md"},{"_path":"/videos/uniform/002-ndrabg4x6ya","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: Redirect management","description":"Learn more at https://uniform.dev","date":"2023-07-20T07:54:06Z","position":"002","image":"https://i.ytimg.com/vi/nDrAbg4x6yA/maxresdefault.jpg","videoId":"nDrAbg4x6yA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:002-nDrAbg4x6yA.md","_source":"content","_file":"3.videos/uniform/002-nDrAbg4x6yA.md","_extension":"md"},{"_path":"/videos/uniform/003-hcjlhnrjzpo","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Dynamic Pages and Redirects","description":"Join us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif... \nInstagram: https://www.instagram.com/uniform.dev/","date":"2023-07-20T07:54:15Z","position":"003","image":"undefined","videoId":"hcjLHnrjzpo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:003-hcjLHnrjzpo.md","_source":"content","_file":"3.videos/uniform/003-hcjLHnrjzpo.md","_extension":"md"},{"_path":"/videos/uniform/004-qh_ekk7cfzw","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","description":"Uniform introduces new features to make content management faster and more efficient for teams. The Component Starter Kit offers open-source, customizable components for building key pages, while improved data connections via Mesh allow for easier setup and fast edge-cached content delivery. \n\nUniform Canvas now supports dynamic component patterns and one-click integration with any data source, giving marketers more flexibility in content creation. \n\nEdgehancers automatically pull selected content to the CDN edge, ensuring pages render in under 50 ms for improved performance and SEO benefits.\n\nLearn more at https://uniform.dev","date":"2023-07-20T07:54:21Z","position":"004","image":"https://i.ytimg.com/vi/qh_ekk7CfZw/maxresdefault.jpg","videoId":"qh_ekk7CfZw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:004-qh_ekk7CfZw.md","_source":"content","_file":"3.videos/uniform/004-qh_ekk7CfZw.md","_extension":"md"},{"_path":"/videos/uniform/005-ffwvyuyzewu","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: loops","description":"When connecting external data to Uniform, once in a while you will encounter a list of items. Think about: the latest products, and best blog posts. If you want to show those on the page you'll have a list of items you have to loop over to be able to render them. \n\nLearn more at: https://uniform.dev","date":"2023-07-20T07:54:27Z","position":"005","image":"https://i.ytimg.com/vi/ffWvyuyzEwU/maxresdefault.jpg","videoId":"ffWvyuyzEwU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:005-ffWvyuyzEwU.md","_source":"content","_file":"3.videos/uniform/005-ffWvyuyzEwU.md","_extension":"md"},{"_path":"/videos/uniform/006-zbi8h6-fp5c","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: data types","description":"Connecting external sources to Uniform design system components requires you to use data types. Uniform offers pre-built integration types (like Contentful, etc) or URL-based data types that offer REST APIs. From legacy to a custom microservice. Any source can be a data type and can be connected to design system component properties.\n\nLearn more at https://uniform.dev","date":"2023-07-20T07:54:33Z","position":"006","image":"https://i.ytimg.com/vi/zbi8h6-fp5c/maxresdefault.jpg","videoId":"zbi8h6-fp5c","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:006-zbi8h6-fp5c.md","_source":"content","_file":"3.videos/uniform/006-zbi8h6-fp5c.md","_extension":"md"},{"_path":"/videos/uniform/007-mczgzargim8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: component patterns","description":"Components in uniform are highly flexible. Their properties are easy to change, some are stylistic and some are data-driven. To make it easy for content editors, Uniform has released component patterns. Patterns allow architects to create new entities of components that connect to specific data sources or with pre-defined stylistic attributes. They can add overrides to particular fields, so content editors have content management flexibility but do not need to handle complex data binding themselves.\n\nLearn more at https://uniform.dev","date":"2023-07-20T07:54:41Z","position":"007","image":"https://i.ytimg.com/vi/MczGzArgIm8/maxresdefault.jpg","videoId":"MczGzArgIm8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:007-MczGzArgIm8.md","_source":"content","_file":"3.videos/uniform/007-MczGzArgIm8.md","_extension":"md"},{"_path":"/videos/uniform/008-rarbrmxkh5i","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"CityJS conference talk: How to sniff out the glue code monster","description":"This is Tim's conference talk for CityJS London. How to sniff out the glue-code monster. Learn about the various forms of glue code and how to avoid the technical-debt nightmare they cause.","date":"2023-07-20T07:55:02Z","position":"008","image":"https://i.ytimg.com/vi/RARBrmxKh5I/maxresdefault.jpg","videoId":"RARBrmxKh5I","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:008-RARBrmxKh5I.md","_source":"content","_file":"3.videos/uniform/008-RARBrmxKh5I.md","_extension":"md"},{"_path":"/videos/uniform/009-3uyyxncppd8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Setting up Canvas","description":"In this video @timbenniks shows how to get started with Visual Canvas, a feature that allows developers to implement agnostic, contextual, visual editing for content editors without having to annotate the source code with identifiers that tightly couple your components to an SDK.\n\nWant to know more? Visit https://uniform.dev or join us on Discord at: https://uniform.to/discord","date":"2023-07-20T07:57:22Z","position":"009","image":"https://i.ytimg.com/vi/3UyYXnCpPd8/maxresdefault.jpg","videoId":"3UyYXnCpPd8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:009-3UyYXnCpPd8.md","_source":"content","_file":"3.videos/uniform/009-3UyYXnCpPd8.md","_extension":"md"},{"_path":"/videos/uniform/010-krctdwmf9fg","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Setting up Project map","description":"In this video @timbenniks shows you how to get started with Project Map and what type of SDK functions you can use to render a navigation or a sitemap for your website.\n\nWant to know more? Visit https://uniform.dev or join us on Discord at: https://uniform.to/discord","date":"2023-07-20T07:57:29Z","position":"010","image":"https://i.ytimg.com/vi/KrCtdwmF9fg/maxresdefault.jpg","videoId":"KrCtdwmF9fg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:010-KrCtdwmF9fg.md","_source":"content","_file":"3.videos/uniform/010-KrCtdwmF9fg.md","_extension":"md"},{"_path":"/videos/uniform/011-j0zqlcmtseq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Getting started with Uniform DXCP - The why and the how","description":"This video explains why Uniform DXCP exists, and after that, it explains how to actually get started.\n\nJoin us on discord to ask your questions https://uniform.to/discord\n\n00:00 The why\n12:27 The how","date":"2023-07-20T07:57:47Z","position":"011","image":"https://i.ytimg.com/vi/j0zQlcmTseQ/maxresdefault.jpg","videoId":"j0zQlcmTseQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:011-j0zQlcmTseQ.md","_source":"content","_file":"3.videos/uniform/011-j0zQlcmTseQ.md","_extension":"md"},{"_path":"/videos/uniform/012-aoaqo3tlzpw","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Work in new ways by integrating Algolia with Uniform’s visual editor","description":"We’re delighted to release a major update to the Uniform + Algolia integration, which uses the power of Algolia search to accelerate and automate the creation of digital experiences - helping brands to create great apps and websites for marketing and commerce that drive conversions. \n\nTwo key features: Automated content or product suggestions based on search parameters in Algolia, easy to set up via the Uniform Visual editor.\nAnd create customized faceted search pages with instant search components from Algolia, and control how they are displayed in Uniform Canvas.\n\nWant to get started yourself? Check out this video: https://youtu.be/lfkshoNh3oc","date":"2023-07-20T07:57:52Z","position":"012","image":"https://i.ytimg.com/vi/aOaQO3tlZpw/maxresdefault.jpg","videoId":"aOaQO3tlZpw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:012-aOaQO3tlZpw.md","_source":"content","_file":"3.videos/uniform/012-aOaQO3tlZpw.md","_extension":"md"},{"_path":"/videos/uniform/013-lfkshonh3oc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Getting Started with Uniform and Algolia","description":"This video shows the steps to integrate Algolia with Uniform!","date":"2023-07-20T07:57:59Z","position":"013","image":"https://i.ytimg.com/vi/lfkshoNh3oc/maxresdefault.jpg","videoId":"lfkshoNh3oc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:013-lfkshoNh3oc.md","_source":"content","_file":"3.videos/uniform/013-lfkshoNh3oc.md","_extension":"md"},{"_path":"/videos/uniform/014-t3avobqvwps","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Creating with Canvas by Richard Bausek and Tim Benniks","description":"See the possibilities for content creation and orchestration to empower marketers using the new version of Canvas. \nhttps://uniform.dev/dxc-assembly\n\nSession moderated by Richard Bausek, Principal Product Manager, Uniform and Tim Benniks, Principal Developer Advocate, Uniform.\nhttps://twitter.com/richardbausek\nhttps://www.linkedin.com/in/richard-bausek/\nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2023-07-20T07:58:10Z","position":"014","image":"undefined","videoId":"T3AVoBqVWPs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:014-T3AVoBqVWPs.md","_source":"content","_file":"3.videos/uniform/014-T3AVoBqVWPs.md","_extension":"md"},{"_path":"/videos/uniform/015-z_41xoh9w1w","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform + Algolia = A Magical Combination","description":"Uniform's visual canvas editor offers content editors a flexible way to interact with an Algolia search index while it allows developers to connect to Algolia in any way they want. \n\nCheck out this video to see how magical the combination is.\n\nJoin us on Discord: https://uniform.to/discord","date":"2023-07-20T07:58:31Z","position":"015","image":"https://i.ytimg.com/vi/z_41xOh9W1w/maxresdefault.jpg","videoId":"z_41xOh9W1w","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:015-z_41xOh9W1w.md","_source":"content","_file":"3.videos/uniform/015-z_41xOh9W1w.md","_extension":"md"},{"_path":"/videos/uniform/016-oqqj-tu-urc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform and Cloudinary play very well together!","description":"In this video, Tim shows how Cloudinary integrates with Uniform as a headless DAM.\n\nhttps://docs.uniform.app/integrations/content/cloudinary\nhttps://uniform.to/discord\nhttps://cloudinary.com","date":"2023-07-20T07:58:38Z","position":"016","image":"https://i.ytimg.com/vi/OQQJ-tU-urc/maxresdefault.jpg","videoId":"OQQJ-tU-urc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:016-OQQJ-tU-urc.md","_source":"content","_file":"3.videos/uniform/016-OQQJ-tU-urc.md","_extension":"md"},{"_path":"/videos/uniform/017-sy9xkqrxzk8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Nuxt 3 with Content v2 and Uniform is magic","description":"This is an alternative approach to using Markdown files with Nuxt 3 and the Nuxt Content module. Uniform allows developers and content editors to compose with different sources. Markdown is one of these sources. Want to do a POC of a personal site, but you don't want a CMS and the hassle of content modeling and an account? This is a great way to use your own tooling but still show off the composability approach of a modern stack.\n\nhttps://content.nuxtjs.org\nhttps://docs.uniform.app\n\nhttps://uniform.to/discord","date":"2023-07-20T07:58:43Z","position":"017","image":"https://i.ytimg.com/vi/sY9xKQRXzk8/maxresdefault.jpg","videoId":"sY9xKQRXzk8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:017-sY9xKQRXzk8.md","_source":"content","_file":"3.videos/uniform/017-sY9xKQRXzk8.md","_extension":"md"},{"_path":"/videos/uniform/018-e-9ylltykzk","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform CLI: how to manage your compositions","description":"The Uniform CLI enables you to interact with Uniform from a command-line interface.\n\nIn this video, we go over how you can manage your component definitions and your compositions via the Uniform CLI. You can pull all data into a folder on your local machine to make some manual changes (or save all of it in git). \n\nYou can also push the data back to Uniform, making it easy to generate different environments for a project.\n\nThe documentation:\nhttps://docs.uniform.app/guides/tools/cli\nhttps://docs.uniform.app/reference/cli/canvas\n\nJoin our Discord server if you have questions:\nhttps://uniform.to/discord","date":"2023-07-20T07:58:47Z","position":"018","image":"undefined","videoId":"E-9YllTYkZk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:018-E-9YllTYkZk.md","_source":"content","_file":"3.videos/uniform/018-E-9YllTYkZk.md","_extension":"md"},{"_path":"/videos/uniform/019-hkcxn_r0m54","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Up and running with Uniform & Nuxt 3 in three mins!","description":"We are excited to announce that the Uniform SDK is ready for Vue 3 and Nuxt 3. Today's ever-expanding landscape of headless products demands that developers somehow connect them all. Wouldn't it be cool if you had one SDK that takes care of connecting up these different APIs? Uniform is a new category of product. It lets you take control of your stack, so creating composable architecture becomes a breeze! \n\nIt enables content editors to drag and drop content from headless sources to create page compositions. Without the help of developers, they can add or remove integrations, do an A/B test or personalize across multiple headless products. Want to change up your CMS? The front end stays the same. You can retrieve a page composition through an SDK function, query, and map data as you prefer, and pass it as props to your components. It works with SSG, SSR, Edge functions, and everything in between.\n\nBlog: https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3\nGet a free account: https://uniform.dev/free\nJoin our Discord: https://uniform.to/discord","date":"2023-07-20T07:58:53Z","position":"019","image":"https://i.ytimg.com/vi/hKCXN_R0m54/maxresdefault.jpg","videoId":"hKCXN_R0m54","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:019-hKCXN_R0m54.md","_source":"content","_file":"3.videos/uniform/019-hKCXN_R0m54.md","_extension":"md"},{"_path":"/videos/uniform/020-u41omxoadtq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Setting up live preview with Uniform and Nuxt 3","description":"Uniform Canvas live preview has been built into the Uniform Nuxt module and utilizes Nuxt's native preview functionality. This video shows you how to set it up.\n\nWant to get started with Nuxt 3 and Uniform? \nhttps://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3\n\nDocs: https://docs.uniform.app/guides/composition/live-preview#nuxt-3\nGet a free account: https://uniform.dev/free\nJoin our Discord: https://uniform.to/discord\n\nMore info:\nWe are excited to announce that the Uniform SDK is ready for Vue 3 and Nuxt 3. Today's ever-expanding landscape of headless products demands that developers somehow connect them all. Wouldn't it be cool if you had one SDK that takes care of connecting up these different APIs? Uniform is a new category of product. It lets you take control of your stack, so creating composable architecture becomes a breeze! \n\nIt enables content editors to drag and drop content from headless sources to create page compositions. Without the help of developers, they can add or remove integrations, do an A/B test or personalize across multiple headless products. Want to change up your CMS? The front end stays the same. You can retrieve a page composition through an SDK function, query, and map data as you prefer, and pass it as props to your components. It works with SSG, SSR, Edge functions, and everything in between.","date":"2023-07-20T07:58:58Z","position":"020","image":"https://i.ytimg.com/vi/U41OmxoadtQ/maxresdefault.jpg","videoId":"U41OmxoadtQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:020-U41OmxoadtQ.md","_source":"content","_file":"3.videos/uniform/020-U41OmxoadtQ.md","_extension":"md"},{"_path":"/videos/uniform/021-h-l_nj5aojs","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform MACHathon 2022 - Rage against MACHine's project demo","description":"Uniform won the Maturity award and the Audience Choice award at this year's MACHathon! The winning project from Rage against the MACHine was a composable accelerator for commerce sites. This video is a demo of how it works (and a bit about how we made it work). Here's why we built it: to allow businesses to spin up actually useable eCommerce websites with the click of one button. But how was it made? And why is it important that it was built with composability in mind and a MACH architecture? You can find out these and more details in the blog post we wrote on the subject: https://uniform.to/uniform-wins-MACH-awards","date":"2023-07-20T07:59:03Z","position":"021","image":"https://i.ytimg.com/vi/h-l_nJ5Aojs/maxresdefault.jpg","videoId":"h-l_nJ5Aojs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:021-h-l_nJ5Aojs.md","_source":"content","_file":"3.videos/uniform/021-h-l_nJ5Aojs.md","_extension":"md"},{"_path":"/videos/uniform/022-w4ppzyucowm","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"MACHathon 2022 entry Rage Against the MACHine","description":"In today’s digital landscape, data-driven experimentation has become the lynchpin of growth strategies. “Build, test, tear down and repeat” has become a mantra for businesses focused on product-led growth and customer acquisition loops. With a composable architecture based on MACH principles, businesses have the essential pieces in place to apply growth principles to the very brands they put in front of customers.\n\nBy both removing the technical barriers that slow down the launch of a consistent, repeatable stack and adopting an architecture that allows for an ultra-flexible approach to front-end component design, forward-thinking companies can hyper-target sub-brands, audience segments, global regions, verticals, or product categories - without starting from scratch every time a new site needs to be built. While much of the content may be the same as the master brand site, companies can build a site to support a specific play, test its performance with the target audience, tear it down and repeat.\n\nScaffolding composable stacks need to be more accessible to all stakeholders and not just a tech team.\n\nWhat it does\n\nFor our MACHathon Accelerate entry, team \"Rage against the MACHine\" has collaborated to deliver a next-gen MVP for a “composable commerce stack accelerator” based on Uniform experience orchestration, a BigCommerce headless commerce, and Contentstack headless CMS. This software offers the ability to scaffold new stacks easily as a business user, test performance, tear them down, then repeat.","date":"2023-07-20T07:59:11Z","position":"022","image":"undefined","videoId":"w4PPzyuCoWM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:022-w4PPzyuCoWM.md","_source":"content","_file":"3.videos/uniform/022-w4PPzyuCoWM.md","_extension":"md"},{"_path":"/videos/uniform/023-ib6dglgf7uc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Clearbit + Uniform Context = Super-powered personalization","description":"In this Video @timbenniks shows blazing fast #personalization with Uniform and Clearbit on his #jamstack site. \n\nUniform Context delivers sophisticated personalization without sacrificing page performance or scalability. Couple this with Clearbit, the leading data activation platform, and you get magic.\n\nWant to know more? Join the Uniform discord here: https://uniform.to/discord","date":"2023-07-20T07:59:18Z","position":"023","image":"https://i.ytimg.com/vi/IB6DglGF7uc/maxresdefault.jpg","videoId":"IB6DglGF7uc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:023-IB6DglGF7uc.md","_source":"content","_file":"3.videos/uniform/023-IB6DglGF7uc.md","_extension":"md"},{"_path":"/videos/uniform/024-4xykmrzo8ha","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"The Uniform Content Editing Workflow","description":"In this video Tims shows how to compose pages using multiple sources with Uniform Canvas. In composed architectures data comes in from many different places and while developers love this, content editors tend to struggle. Uniform workflow solves these issues and makes all stakeholders friends again!\n\nIn this video we use Contentful, BigCommerce, and Cloudinary.","date":"2023-07-20T07:59:23Z","position":"024","image":"https://i.ytimg.com/vi/4XyKmRzO8HA/maxresdefault.jpg","videoId":"4XyKmRzO8HA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:024-4XyKmRzO8HA.md","_source":"content","_file":"3.videos/uniform/024-4XyKmRzO8HA.md","_extension":"md"},{"_path":"/videos/uniform/025-4tuixex-iwk","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"The future of the Jamstack is composable","description":"Article here: https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g\n\nIn modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire.\n\nIn this video:\nYou will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech.\n\n1. Use the Jamstack with your favourite framework and host on your favourite CDN.\n2. Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers.\n\nCombining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future.","date":"2023-07-20T07:59:28Z","position":"025","image":"https://i.ytimg.com/vi/4TuixEx-iwk/maxresdefault.jpg","videoId":"4TuixEx-iwk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:025-4TuixEx-iwk.md","_source":"content","_file":"3.videos/uniform/025-4TuixEx-iwk.md","_extension":"md"},{"_path":"/videos/uniform/026-9q_1wzx_kju","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Progressing through Environments with Uniform","description":"When deploying anything other than a simple POC or personal website, a reliable application will need Environments. What is the right pattern for implementing environments for local developers as well as shared ones like staging and production?\n\nLet's look at how Uniform separates your configuration and content. Then look at how we can migrate both to new higher environments as a feature progresses through its software development workflow.","date":"2023-07-20T07:59:33Z","position":"026","image":"https://i.ytimg.com/vi/9q_1wZX_KjU/maxresdefault.jpg","videoId":"9q_1wZX_KjU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:026-9q_1wZX_KjU.md","_source":"content","_file":"3.videos/uniform/026-9q_1wZX_KjU.md","_extension":"md"},{"_path":"/videos/uniform/027-myj-ild_rxk","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Product Meetup: Personalizing content based on user location","description":"By customizing content for visitors, merchants and marketers can improve conversion rates and improve UX by presenting more relevant offers. Join Principal Developer Advocate Tim Benniks and Principal Sales Engineer Tony Mamedbekovfor a conversation about how you can use geo-IP localization to select the right content from a CMS and then present it to a user. You’ll also see them implement the solution using Uniform and Contentful.","date":"2023-07-20T07:59:39Z","position":"027","image":"https://i.ytimg.com/vi/MYJ-IlD_rxk/maxresdefault.jpg","videoId":"MYJ-IlD_rxk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:027-MYJ-IlD_rxk.md","_source":"content","_file":"3.videos/uniform/027-MYJ-IlD_rxk.md","_extension":"md"},{"_path":"/videos/uniform/028-jdl4a64klrg","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","description":"Building a composable DXP doesn't have to be out of reach for companies just beginning their digital journey. Join Uniform's principal developer advocate Tim Benniks to see how you can start easily -- and at no cost -- by using free plans from major vendors. \n\nTim shows you how to use Uniform to turn Contentful, BigCommerce, NextJS and Vercel into a powerful, agile platform for digital delivery. And once you set it up, nontechnical users can use Uniform Canvas to create, launch and iterate digital experiences without coming back to the dev team.","date":"2023-07-20T07:59:44Z","position":"028","image":"https://i.ytimg.com/vi/jdl4A64kLrg/maxresdefault.jpg","videoId":"jdl4A64kLrg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:028-jdl4A64kLrg.md","_source":"content","_file":"3.videos/uniform/028-jdl4A64kLrg.md","_extension":"md"},{"_path":"/videos/uniform/029-fevaivas-ye","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T: Personalization with Uniform Canvas","description":"This week we are showing off the ability to personalize parts of a website and A/B test using Uniform Canvas, Tailwind.ui and Next.js","date":"2023-07-20T07:59:48Z","position":"029","image":"https://i.ytimg.com/vi/FEvAiVAS-yE/maxresdefault.jpg","videoId":"FEvAiVAS-yE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:029-FEvAiVAS-yE.md","_source":"content","_file":"3.videos/uniform/029-FEvAiVAS-yE.md","_extension":"md"},{"_path":"/videos/uniform/030-_8gh9oycsus","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","description":"Uniform is now available on the BigCommerce Headless Edition marketplace! Join us to see how you can use Uniform to connect BigCommerce with a headless CMS like Contentful and front-end components from TailwindUI.\n\nThe result? An agile approach to eCommerce that allows your business users to quickly and easily create beautiful pages without a developer or coding. And Uniform allows you to add personalization to your site with built-in preview, so you can see how your store will look and behave for different audiences. Build better user experiences and increase conversions by showing your shoppers what they're most interested in.\n\nWant to talk to us about how Uniform can help you take your store to the next level? Sign up for a demo here: https://uniform.dev/demo","date":"2023-07-20T07:59:54Z","position":"030","image":"https://i.ytimg.com/vi/_8gh9OYcsus/maxresdefault.jpg","videoId":"_8gh9OYcsus","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:030-_8gh9OYcsus.md","_source":"content","_file":"3.videos/uniform/030-_8gh9OYcsus.md","_extension":"md"},{"_path":"/videos/uniform/031-vvlwwonsqe8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"New features for Contentful in Uniform Canvas","description":"Uniform is excited about some new features for Contentful headless CMS users - check out this video to see these in action:\n\nMulti-space support\nContentful customers can now connect Uniform components to any space (or environment) in their account. This means that once developers wire up components to various spaces, business users can easily use our no-code editor to build experiences without needing to understand where content is coming from. The final page will present *ahem* a Uniform experience for end users. Of course, you can run A/B tests and personalization on every component too. And a bonus - this works at the environment level too, so components can even pull from specific space environments.\nRead the documentation here: https://docs.uniform.app/canvas/tutorials/add-contentful/#connecting-to-multiple-contentful-spaces\n\nIntroducing patterns\nBuilding digital experiences at scale can be repetitive and eat up development time. We’ve added patterns - a way to share a component (which could also contain other components) between multiple compositions. For example, you could use a pattern to share a legal disclaimer, news release author bio, or standard global header across many compositions. These can also be revised once added to a composition, so developers can accelerate build times when designing large sites.\nRead the documentation here: https://docs.uniform.app/canvas/tutorials/patterns\n\nLocalization for global marketing and ecommerce\nUniform components and compositions can now be localized. In addition to localizing content inside Contentful, users can now localize front-end components inside Uniform - giving users more flexibility when it comes to adopting a localization strategy. Both devs and business users get full flexibility with the ability to localize at any level - composition, component, and content.","date":"2023-07-20T07:59:59Z","position":"031","image":"https://i.ytimg.com/vi/vVLWWOnsQE8/maxresdefault.jpg","videoId":"vVLWWOnsQE8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:031-vVLWWOnsQE8.md","_source":"content","_file":"3.videos/uniform/031-vVLWWOnsQE8.md","_extension":"md"},{"_path":"/videos/uniform/032-evmwlfhv8wc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Take your BigCommerce store to the next level with faster time to market and personalization","description":"Uniform is now available on the BigCommerce Headless Edition marketplace! Join us to see how you can use Uniform to connect BigCommerce with a headless CMS like Contentful and front-end components from TailwindUI.\n\nThe result? An agile approach to eCommerce that allows your business users to quickly and easily create beautiful pages without a developer or coding. And Uniform allows you to add personalization to your site with built-in preview, so you can see how your store will look and behave for different audiences. Build better user experiences and increase conversions by showing your shoppers what they're most interested in.\n\nWant to talk to us about how Uniform can help you take your store to the next level? Sign up for a demo here: https://uniform.dev/demo","date":"2023-07-20T08:00:04Z","position":"032","image":"https://i.ytimg.com/vi/EvMwLFHV8wc/maxresdefault.jpg","videoId":"EvMwLFHV8wc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:032-EvMwLFHV8wc.md","_source":"content","_file":"3.videos/uniform/032-EvMwLFHV8wc.md","_extension":"md"},{"_path":"/videos/uniform/033-jjwwwr9uixo","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","description":"","date":"2023-07-20T08:00:18Z","position":"033","image":"https://i.ytimg.com/vi/jJwWWr9UiXo/maxresdefault.jpg","videoId":"jJwWWr9UiXo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:033-jJwWWr9UiXo.md","_source":"content","_file":"3.videos/uniform/033-jJwWWr9UiXo.md","_extension":"md"},{"_path":"/videos/uniform/034-gwbkr9ut5-w","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Tutorial Series #3: Defining Intents","description":"","date":"2023-07-20T08:00:22Z","position":"034","image":"https://i.ytimg.com/vi/GWBkr9uT5-w/maxresdefault.jpg","videoId":"GWBkr9uT5-w","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:034-GWBkr9uT5-w.md","_source":"content","_file":"3.videos/uniform/034-GWBkr9uT5-w.md","_extension":"md"},{"_path":"/videos/uniform/035-0gp_yf4fvo8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Tutorial Series #2: Intents & Signals","description":"","date":"2023-07-20T08:00:27Z","position":"035","image":"https://i.ytimg.com/vi/0GP_Yf4Fvo8/maxresdefault.jpg","videoId":"0GP_Yf4Fvo8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:035-0GP_Yf4Fvo8.md","_source":"content","_file":"3.videos/uniform/035-0GP_Yf4Fvo8.md","_extension":"md"},{"_path":"/videos/uniform/036-_tkrrqdsolk","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Tutorial Series #1: Personalization Basics","description":"In this video we'll be discussing the basic technical approaches of personalization. By the end you'll know why Uniform's approach is highly scalable and easy to use. Ready to dive in?","date":"2023-07-20T08:00:32Z","position":"036","image":"https://i.ytimg.com/vi/_TKrRQdsoLk/maxresdefault.jpg","videoId":"_TKrRQdsoLk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:036-_TKrRQdsoLk.md","_source":"content","_file":"3.videos/uniform/036-_TKrRQdsoLk.md","_extension":"md"},{"_path":"/videos/uniform/037-pt1p8ixie-k","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Platform for business users","description":"See more at: https://uniform.to/zzkFwx\n\nIn recent years we've seen a lot of change in how enterprises use digital experiences to drive customer engagement and e-commerce.\n\nAlong with an explosion of infrastructure and tech stack options, decoupling from monolithic suites has offered more flexibility than ever.\n\nBut, traversing the headless landscape and orchestrating it into a cohesive architecture can present challenges, particularly as the number of business-critical tools behind great experiences continues to change and grow over time.\n\nToo often, that means that businesses need more and more developer expertise to tell their stories. And this at a time when developers are in short supply.\n\nContent editors and marketers are left struggling to keep up and frustrated by a lack of control they may have enjoyed with traditional suites.\n\nThat's why we're excited to announce Uniform, the world’s first truly composable DXP.\nAs a frictionless, composable digital experience platform, Uniform gives companies the power of choice to continuously adopt new tech without ever re-platforming.\n\nFront and center is the power of choice. Choose your own headless sources, your own tech stack and your own hosting. You can connect CMS, CRM and Commerce platforms with ease.\n\nUniform is completely opinion-less and therefore offers true composability. Not one integration is the center of the universe and all parts are equal. It acts as a platform to orchestrate both traditional and headless sources without telling marketers or developers what to do. Yes, you can even treat select monolithic systems like Sitecore as a headless source in Uniform.\n\nAnd with Uniform Canvas, you get powerful no-code tools to allow marketers to retain control over composition, personalization, A/B testing and managing brand experiences without developer support.\n\nUniform Canvas allows business users to seamlessly create engaging experiences based on a multitude of headless and legacy sources without concern for which systems that data is coming from, with instant preview allowing them to understand how changes impact a finished experience. Even when their tech stack changes over time.\n\nUniform ensures your team can continue to deliver incredible experiences as your architecture evolves. After all, change is the only constant. Super fast site performance, enterprise-grade security and great Core Web Vitals is only the beginning. Start telling your story now with Uniform.","date":"2023-07-20T08:00:50Z","position":"037","image":"https://i.ytimg.com/vi/Pt1p8ixie-k/maxresdefault.jpg","videoId":"Pt1p8ixie-k","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:037-Pt1p8ixie-k.md","_source":"content","_file":"3.videos/uniform/037-Pt1p8ixie-k.md","_extension":"md"},{"_path":"/videos/uniform/038-jul6h-3wrnq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Platform for Developers","description":"See more at: https://uniform.to/zzkFwx\n\nIn an ever expanding landscape of headless sources, developers are often the ones who have to connect them all. \n\nThe question of adding some products, content and personalization on one landing page always comes at a time developers are busy. The answer is generally “no” or a forced “yes, I’ll try to squeeze it in this week”.\n\nWouldn't it be cool if you only had to implement one SDK in your framework of choice and you never had to bother with this stuff again? This sounds too good to be true right? Let’s discuss what this SDK would look like.\n\nIt would allow content editors to drag and drop content from different headless sources to their heart’s content. They could add or remove integrations and even do an A/B test or add some personalization without having to wait for developers.\n\nIf the headless sources change, it would still work exactly the same way on the other end. Retrieve a page composition through an SDK function, map and enhance data to your liking and pass it as props to existing components. Regardless of tech stack, it would just work.\n\nI’m here to tell you we’ve actually built this. We proudly introduce Uniform, the world’s first truly composable DXP. The only DXP that gives developers the power of choice: from front-end framework to CDN to hosting as SSR, Jamstack, with Edge workers, partial SSG, anything goes.\n\nUniform offers a platform without opinion, without vendor lock-in and without a restricting roadmap. Not one integration is the center of the universe and nothing is tightly coupled.\nWant three different CMS systems and two commerce engines? Why not? Add an integration, query the data and map it to props for your components to use.\n\nNext to true composability regardless of tech stack, we’ve also introduced Uniform Canvas, a no-code composition builder that allows non-technical users to create experiences based on the components you define.\n\nUniform Canvas also provides a preview API with websockets, so end users can preview their composition live and in the actual codebase of the final product.\n\nUniform comes with an extremely flexible data enhancer API to help you map data from headless sources into your app. This API can run in your codebase or as an external service. We don’t care. Everything is built with flexibility in mind. You have the power of choice at your side.\n\nWe at Uniform know happy developers do better work. Good DX and great SDKs are just the beginning. With Uniform you can connect all the dots the way you like from a tech perspective. With a combination of out of the box tools for a fast time to market, and a set of APIs that allow extreme precision, we have created the world’s first truly composable DXP that will make both developers and content editors happy.","date":"2023-07-20T08:00:56Z","position":"038","image":"https://i.ytimg.com/vi/jUL6H-3wrnQ/maxresdefault.jpg","videoId":"jUL6H-3wrnQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:038-jUL6H-3wrnQ.md","_source":"content","_file":"3.videos/uniform/038-jUL6H-3wrnQ.md","_extension":"md"},{"_path":"/videos/uniform/039-pdekgezhffi","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Why is Jamstack so important for the future of DXP","description":"See more here: https://uniform.dev\n\nIn this video we will discuss why #Jamstack is so important for the future of DXPs.\n\nNowadays the general consensus is that Jamstack is the way to go. The modern web is origin-less and Jamstack allows us to make that happen.\n\nStatic sites allow for easy scaling. They also score high core web vitals due to extremely fast TTFB and the use of modern web frameworks such as Next and Nuxt. API calls and data mapping happen at build time so at runtime nothing time consuming has to happen.\n\nStill need dynamic stuff for personalization, A/B testing, product catalogs or user logins? Use CDN edge workers or #serverless functions that run on the same CDN instance as the site so they are blazing fast and close to the end user.\n\nFor the business users among you: Highly performant web pages lead to higher conversion rates and better SEO. They also scale without issue during the black Friday peak.\n\nFor the developers among you: Jamstack sites allow developers to choose their stack freely as the end result is a static site. Jamstack sites do not have an opinion of how they are build and where they run. They offer the #powerofchoice for developers.","date":"2023-07-20T08:01:01Z","position":"039","image":"https://i.ytimg.com/vi/PDEKgEzhFfI/maxresdefault.jpg","videoId":"PDEKgEzhFfI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:039-PDEKgEzhFfI.md","_source":"content","_file":"3.videos/uniform/039-PDEKgEzhFfI.md","_extension":"md"},{"_path":"/videos/uniform/040-iaabbjfiiro","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"The problem of modern DXP (and the solution)","description":"The modern DXP is a group of headless tools connected to each other. This arrangement leaves content editors and marketers frustrated as they need to ask developers to connect services together to create a simple page.\n\nHow do we solve this? We need a low-code or no-code platform that allows content editors to easily compose pages from different headless sources with minimal developer involvement, But at the same time, developers need to love working with this platform, they need the flexibility and the #powerofchoice to choose their tech stack and anything else in the front-end.","date":"2023-07-20T08:01:06Z","position":"040","image":"https://i.ytimg.com/vi/IAaBBJFIiRo/maxresdefault.jpg","videoId":"IAaBBJFIiRo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:040-IAaBBJFIiRo.md","_source":"content","_file":"3.videos/uniform/040-IAaBBJFIiRo.md","_extension":"md"},{"_path":"/videos/uniform/041-fo9cop0znt0","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"True composability in the modern DXP","description":"In this video we will discuss what true #composability is in the context of #DXP.\nNowadays, business leaders and developers are demanding freedom of choice across the board. And this puts traditional suite vendors in a state of chaos.They are trying to change the way they work while still staying mindful of the past 10 years of marketing the \"suite\" approach.\n\nThey are literally buying companies to try to create the feeling of composability while in fact they are only allowing you to compose with the components in their suite offering. You can't coin a term like composable DXP if you do not offer real flexibility.\n\nCustomers will still suffer from vendor lock-in, complex upgrade roadmaps and lot's of work to customize anything in the system. We've seen a huge explosion in digital experience tools over the past ten years, and the market is only moving faster. The tools you have today won't be the same tools you're using in 6 months time, or 2 years' time.\n\nTrue composability is the #powerofchoice in EVERYTHING. From Tech stack to hosting, CMS, media management, marketing tools, CDN, analytics, whatever.\n\nWe need an opinion-less platform in which nobody is the centre of the universe. A platform where all elements are equal and that offers flexibility and extendability whenever needed. Never re-platform again. Just switch out integrations.\n\nA truly composable DXP offers Freedom of choice in everything but with painkillers for orchestration and content composing.","date":"2023-07-20T08:01:11Z","position":"041","image":"https://i.ytimg.com/vi/fo9cop0zNT0/maxresdefault.jpg","videoId":"fo9cop0zNT0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:041-fo9cop0zNT0.md","_source":"content","_file":"3.videos/uniform/041-fo9cop0zNT0.md","_extension":"md"},{"_path":"/videos/uniform/042-surxtza2sa0","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Astro FTW! Vue and React can work together in the same app","description":"No more comparison of which framework is better, Vue and React can work together in the same app. We're back with another episode of #Jamstack Fridays where Tony and Tim explore #Astro and what this new kid on the block means for modern web development.","date":"2023-07-20T08:01:20Z","position":"042","image":"https://i.ytimg.com/vi/sUrxtZA2sA0/maxresdefault.jpg","videoId":"sUrxtZA2sA0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:042-sUrxtZA2sA0.md","_source":"content","_file":"3.videos/uniform/042-sUrxtZA2sA0.md","_extension":"md"},{"_path":"/videos/uniform/043-wontid8zkf0","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Personalization Basics for MACHathon contenders","description":"Getting started with Uniform for your MACHathon project.\nTim and Christian help you get started with Uniform for your MACHathon project. Understand and see the basics of API first driven personalization with Uniform.\n\nhttps://uniform.dev\nhttps://docs.uniform.app\nhttps://twitter.com/timbenniks\nhttps://twitter.com/uniformdev","date":"2023-07-20T08:01:39Z","position":"043","image":"https://i.ytimg.com/vi/woNTID8zkf0/maxresdefault.jpg","videoId":"woNTID8zkf0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:043-woNTID8zkf0.md","_source":"content","_file":"3.videos/uniform/043-woNTID8zkf0.md","_extension":"md"},{"_path":"/videos/uniform/044-fngyhaaogqc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Kentico Kontent mystery package unboxing","description":"Uniform and Kentico Kontent have recently partnered and we received a lovely and mysterious package from the Kontent team. \n\nSee how excited Tim is to open it!\n\nhttps://uniform.dev/uniform-for-kontent","date":"2023-07-20T08:01:45Z","position":"044","image":"https://i.ytimg.com/vi/fngYHAaOgqc/maxresdefault.jpg","videoId":"fngYHAaOgqc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:044-fngYHAaOgqc.md","_source":"content","_file":"3.videos/uniform/044-fngYHAaOgqc.md","_extension":"md"},{"_path":"/videos/uniform/045-itk9sgw0n7u","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Product Meetup: Uniform for Sitecore 5 is out!","description":"Uniform for Sitecore helps Sitecore customers to achieve the performance, scalability, cost and security benefits of the modern web without requiring expensive, risk and time-consuming upgrades.\n\nUniform for Sitecore offers two capabilities: Deploy and Optimize. These capabilities can be used separately or together.\n\nNew features for Uniform For Sitecore:\n* Edge-based personalization and decoupled tracking is available in Uniform Optimize.\n* Fully integrated incremental cache purge for Akamai (using Fast Purge) into the Sitecore publishing process.\n* Fully integrated incremental cache purge for Cloudflare into the Sitecore publishing process.\n\nImprovements:\n* Support for Sitecore JSS 16.\n* Ability to configure warnings that are shown to content authors when they try to make changes that once published will trigger full site redeployment.\n* New re-sync page and check page data buttons are added to facilitate in development and troubleshooting.\n* Item-based configuration has 'enabled' checkbox for temporary disabling services that were configured either via the item-configuration or even file-based config.\n* npm package dependencies updated across the board.\n* Improved content and media sync performance.\n* \"none\" publish target is now different from \"fake\" (\"none\" used to be an alias for \"fake\") and throws exceptions to remind that publish target needs to be configured.\n\nhttps://docs.uniform.dev/sitecore/\nhttps://uniform.dev/sign-up\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:01:50Z","position":"045","image":"https://i.ytimg.com/vi/Itk9sgW0N7U/maxresdefault.jpg","videoId":"Itk9sgW0N7U","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:045-Itk9sgW0N7U.md","_source":"content","_file":"3.videos/uniform/045-Itk9sgW0N7U.md","_extension":"md"},{"_path":"/videos/uniform/046-hdupegqtjrm","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Personalize Jamstack websites with Uniform for Kentico Kontent","description":"Tim from Uniform shows how to integrate Uniform Optimize #personalization into the Kentico Kontent CMS.\n\nFeel free to reach out directly on Twitter at: @unformDev or @timbenniks\nThe docs: https://docs.uniform.app/optimize/dev/content-management/kontent/getting-started\nThe starter kit: https://github.com/uniformdev/uniform-optimize-next-kontent-starter","date":"2023-07-20T08:01:55Z","position":"046","image":"https://i.ytimg.com/vi/HDUPeGqtjrM/maxresdefault.jpg","videoId":"HDUPeGqtjrM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:046-HDUPeGqtjrM.md","_source":"content","_file":"3.videos/uniform/046-HDUPeGqtjrM.md","_extension":"md"},{"_path":"/videos/uniform/047-6jkekhxmmaq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T: Next auth and Firebase","description":"We're back with another episode of #Jamstack Fridays where Tony shows @timbenniks how he connected Google #Oauth login with Firebase in #Nextjs with the Next Auth plugin.\n\nhttps://github.com/tmamedbekov/nextjs-nextauth\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:01:59Z","position":"047","image":"https://i.ytimg.com/vi/6jkEkHxmmAQ/maxresdefault.jpg","videoId":"6jkEkHxmmAQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:047-6jkEkHxmmAQ.md","_source":"content","_file":"3.videos/uniform/047-6jkEkHxmmAQ.md","_extension":"md"},{"_path":"/videos/uniform/048-h3y_jnbtrom","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","description":"We’re back with another episode of #Jamstack Fridays where Tony shows @timbenniks how he connected Netlify Forms, Google Sheets and #Next.js for some #serverless goodness.\n\nhttps://github.com/tmamedbekov/netlify-forms-nextjs\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:05Z","position":"048","image":"https://i.ytimg.com/vi/H3y_jNBTroM/maxresdefault.jpg","videoId":"H3y_jNBTroM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:048-H3y_jNBTroM.md","_source":"content","_file":"3.videos/uniform/048-H3y_jNBTroM.md","_extension":"md"},{"_path":"/videos/uniform/049-xr8eo9g6bps","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Friday news: Featurepeek is fire!","description":"In this episode Tony shares recent news from the Jamstack world.\n\nNews items: \nContentstack, Uniform and Epam event: https://info.contentstack.com/personalization-developer-workshop-uniform-05-26-2021.html\nFeaturepeek: https://www.netlify.com/blog/2021/05/19/next-generation-deploy-previews-plus-netlify-acquires-featurepeek/\nWebcontainers: https://blog.stackblitz.com/posts/introducing-webcontainers/\nNext JS Conf: https://nextjs.org/conf\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:10Z","position":"049","image":"https://i.ytimg.com/vi/Xr8Eo9G6bPs/maxresdefault.jpg","videoId":"Xr8Eo9G6bPs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:049-Xr8Eo9G6bPs.md","_source":"content","_file":"3.videos/uniform/049-Xr8Eo9G6bPs.md","_extension":"md"},{"_path":"/videos/uniform/050-4eepxpo9iqc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","description":"In this episode Tony and Tim explore how you can scaffold a #Next.js Jamstack website with #Contentstack and dynamic personalisation by #Uniform in 10 minutes.\n\nWant to try this yourself? Go here: https://uniform.app\n\nTony shares news from the Jamstack world\nNotion API: https://developers.notion.com/\nGatsby 3.5: https://www.gatsbyjs.com/docs/reference/release-notes/v3.5/\nSanity Exchange: https://www.sanity.io/exchange\nNode 14.7: https://nodejs.org/en/blog/release/v14.17.0/\nNetlify: https://www.netlify.com/blog/2021/05/06/now-available-configure-build-plugins-by-deploy-context/\nCloudfront Functions: https://aws.amazon.com/about-aws/whats-new/2021/05/cloudfront-functions/\nOptimize Vitals: https://web.dev/optimize-vitals-lighthouse/\nSimple Login: https://simplelogin.io/\n\nTimestamps\n00:00 Introduction\n00:24 News: Notion API\n01:13 News: Gatsby v3.5\n01:49 News: Sanity Exchange\n02:20 News: Node v14.17 LTS\n02:57 News: Netlify Build plugins\n04:03 News: Amazon Edge compute\n04:36 News: Core Web Vitals\n05:14 News: Simple Login\n05:52 Setting up Next.js with Contentstack for p13n\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:15Z","position":"050","image":"https://i.ytimg.com/vi/4EepxPO9iqc/maxresdefault.jpg","videoId":"4EepxPO9iqc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:050-4EepxPO9iqc.md","_source":"content","_file":"3.videos/uniform/050-4EepxPO9iqc.md","_extension":"md"},{"_path":"/videos/uniform/051-fdounapttfy","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Friday news: The latest NextJS release is awesome!","description":"In this episode Tony shares recent news from the Jamstack world.\n\nNews items: \nhttps://nextjs.org/blog/next-10-2\nhttps://www.gatsbyjs.com/solutions/shopify\nhttps://vercel.com/changelog/surfacing-the-environment-of-deployments-and-domains\nhttps://www.sanity.io/changelog?platforms=Studio#change-b5752bd2-159f-4dd3-9611-bc8bce42f8c2\nhttps://mantine.dev/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:19Z","position":"051","image":"https://i.ytimg.com/vi/fDouNaPTtFY/maxresdefault.jpg","videoId":"fDouNaPTtFY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:051-fDouNaPTtFY.md","_source":"content","_file":"3.videos/uniform/051-fDouNaPTtFY.md","_extension":"md"},{"_path":"/videos/uniform/052-gsey28saqac","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"A comprehensive view on personalization with Lars Petersen","description":"In this product meet up Lars and Tim take personalization for #Jamstack websites to the next level. They discuss negative signals, overrides, thresholds and enrichments.\n\nWant to learn how to do #personalization on your website? Check this video. It has a wealth of information.\n\nRequest a demo here: https://uniform.dev/sign-up\n\nTimestamps:\n00:00 Introduction\n01:21 Personalization basics: intents & signals\n15:09 Negative Signals\n22:06 Overriding Signals\n26:28 Thresholds\n34:21 Enrichments\n41:46 Conclusions","date":"2023-07-20T08:02:24Z","position":"052","image":"https://i.ytimg.com/vi/gSey28saQac/maxresdefault.jpg","videoId":"gSey28saQac","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:052-gSey28saQac.md","_source":"content","_file":"3.videos/uniform/052-gSey28saQac.md","_extension":"md"},{"_path":"/videos/uniform/053-r2ygbt1to4s","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","description":"It's Friday again! Tony and Tim discuss the news, they recap the Vue Storefront Summit and they dive into performance and personalization of Jamstack wesbites.\n\nNews:\nhttps://blog.tailwindcss.com/tailwind-ui-now-with-react-and-vue-support\nhttps://www.netlify.com/blog/2021/04/14/faster-builds-for-large-sites-on-netlify-with-on-demand-builders-now-in-early-access/\nhttps://blog.cloudflare.com/announcing-cloudflare-images-beta/\nhttps://strapi.io/blog/announcing-content-internationalization-v3-6\nhttps://trekhleb.dev/blog/2021/content-aware-image-resizing-in-javascript/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:29Z","position":"053","image":"https://i.ytimg.com/vi/R2YGBT1TO4s/maxresdefault.jpg","videoId":"R2YGBT1TO4s","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:053-R2YGBT1TO4s.md","_source":"content","_file":"3.videos/uniform/053-R2YGBT1TO4s.md","_extension":"md"},{"_path":"/videos/uniform/054-9m73vicako4","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","description":"Join Tony and @timbenniks at another episode of Jamstack Fridays with T&T. This week the guys are discussing how to break #Jamstack #architecture cliches and they show an out-of-the box architecture for some Friday #inspiration!\n\nNews:\nhttps://www.netlify.com/blog/2021/03/31/test-drive-netlify-beta-features-with-netlify-labs/\nhttps://www.netlify.com/blog/2021/04/05/dark-mode-fans-take-these-steps-to-set-it-up-in-the-netlify-app/\nhttps://www.gatsbyjs.com/blog/meet-new-gatsby-image/\nhttps://blog.cloudflare.com/the-teams-dashboard-home/\nhttps://twitter.com/adamwathan/status/1379154041662541828\nhttps://next-auth.js.org/\nhttps://styled-chart.com/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:37Z","position":"054","image":"https://i.ytimg.com/vi/9M73VIcakO4/maxresdefault.jpg","videoId":"9M73VIcakO4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:054-9M73VIcakO4.md","_source":"content","_file":"3.videos/uniform/054-9M73VIcakO4.md","_extension":"md"},{"_path":"/videos/uniform/055-d41ch2lnxtq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack personalization with Contentstack and Uniform","description":"#Contenstack and #Uniform personalisation for #Jamstack websites. This website runs on Gatsby and we'll be showing you how easy it is to personalize website with Uniform!","date":"2023-07-20T08:02:42Z","position":"055","image":"https://i.ytimg.com/vi/D41Ch2LNxTQ/maxresdefault.jpg","videoId":"D41Ch2LNxTQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:055-D41Ch2LNxTQ.md","_source":"content","_file":"3.videos/uniform/055-D41Ch2LNxTQ.md","_extension":"md"},{"_path":"/videos/uniform/056-eohudn8apm4","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","description":"In this episode of Jamstack Fridays with T&T we discuss common questions our clients ask. In this video we discuss Gatsby vs Next.js and how to choose the right tool for you.\n\nNews:\nNextJS 10.1 Release\nhttps://nextjs.org/blog/next-10-1\n\nNetlify Build Plugin:\nhttps://www.netlify.com/blog/2021/03/26/netlify-build-plugin-of-the-week-lighthouse/\n\nSvelteKit:\nhttps://svelte.dev/blog/sveltekit-beta\n\n100 Day Challenge Create a Gatsby Theme\nhttps://www.gatsbyjs.com/blog/100days-challenge-5\n\nVisualized Content Modeling\nhttps://contentmodel.io/ \n\nFollow us here:\nTony: https://twitter.com/tmamedbekov\nTim: https://twitter.com/timbenniks\n\nhttps://uniform.dev","date":"2023-07-20T08:02:47Z","position":"056","image":"https://i.ytimg.com/vi/EOHudN8Apm4/maxresdefault.jpg","videoId":"EOHudN8Apm4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:056-EOHudN8Apm4.md","_source":"content","_file":"3.videos/uniform/056-EOHudN8Apm4.md","_extension":"md"},{"_path":"/writing/digital-experience-platforms-the-old-versus-the-new","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Digital experience platforms: the old versus the new","description":"Digital experience platforms (DXPs) and the more modern digital experience composition platforms...","id":1405729,"slug":"digital-experience-platforms-the-old-versus-the-new","date":"2023-03-18T13:05:48Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1tc0ds73edh613y9yg6.png","canonical_url":"https://uniform.dev/blogs/digital-experience-composition-dxc/difference-between-dxp-and-dxcp","tags":["architecture","dxp","composable","webdev"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital experience platforms (DXPs) and the more modern "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platforms (DXCPs)"}]},{"type":"text","value":" share the same goal of making it easier for business users to create visually dynamic, personalized digital experiences. A major contrast is that DXCPs orchestrate solutions and technologies from different vendors. On the other hand, even though DXPs call themselves composable, they lock brands into a single vendor and one way of doing things at the expense of other capabilities."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To help brands decide whether to switch from a DXP to a DXCP, we explain below their key differences. More details are available in this video created by Headless Creator."}]},{"type":"element","tag":"h3","props":{"id":"dxcps-are-far-more-cloud-native"},"children":[{"type":"text","value":"DXCPs are far more cloud native"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A major disadvantage of DXPs is that their foundation is a content management system (CMS), which contains integrated add-ons or bolted-on tools along with such platforms as a digital asset management (DAM) and a product information management (PIM) system. Consequently, developers must manually apply updates, manage the hosting, customize the platform, and scale up the hosting to accommodate traffic spikes, such as those that occur around busy shopping days like Black Friday in the U.S. and Europe. The alternative is to hire the vendor to do all that at an additional cost."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Conversely, DXCPs and the headless tools they manage are all hosted in the cloud and cloud native, which means that updates can not only occur automatically, but also scale elastically as demand rises and falls. Also, since DXCPs are tech agnostic and API-first, business users can work with multiple tools there. They can do that in DXPs, too, but only to a limited extent, let alone that in venturing outside that vendor’s proverbial walled garden, they give up features and capabilities."}]},{"type":"element","tag":"h3","props":{"id":"dxcps-are-more-than-a-data-aggregator"},"children":[{"type":"text","value":"DXCPs are more than a data aggregator"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform views DXCPs as a way for brands and their developers to select advanced, API-first vendors and loosely couple those vendors’ tools together. Furthermore, thanks to DXCPs’ tooling, business users can work across the many integrated tools in a holistic, unified workflow. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Additionally:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCPs are more than a data aggregator. Even though effective tools are available for stitching APIs into a cohesive model for access and use by developers, those tools do not deftly manage experiences as DXCPs do. After all, API aggregators are meant for access by developers through code only, not for business users, whose expertise rests with a low- or no-code editing environment, in which DXCPs also specialize. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCPs are different from a CMS because, unlike a CMS that requires that all content be routed through it for a tight coupling of technology, they keep content and data sources on a level playing field and maintain the loose coupling so that you can replace and add capabilities as necessary with no technology lock-in. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In short, the entire focus of DXCPs is to accord teams freedom to collaborate smoothly, and for brands to switch tools without impacting the way other tools work and the overall web experience."}]},{"type":"element","tag":"h3","props":{"id":"dxcp-protects-domain-data"},"children":[{"type":"text","value":"DXCP protects domain data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When building webpages or experiences, developers need two types of data:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Domain data,"}]},{"type":"text","value":" which is core material, such as product models, that defines your brand across channels. For an events website, this data contains the names of the event spaces provided by your company, the dates, and the procedure for registration."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Design data,"}]},{"type":"text","value":" which is volatile, channel-specific material, such as your site’s colors and the way in which you can edit the display of week-by-week information. For an events website, for example, you can change page design or spotlight a feature with volatile data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In DXPs, both domain data and design data reside in the same CMS, potentially leading to a messy situation and a polluted content model. In DXCPs, the design data and domain data are separate, providing clean data workflows for innovation efforts and more system longevity."}]},{"type":"element","tag":"h3","props":{"id":"uniform-dxcp-readily-facilitates-transitioning-from-the-old"},"children":[{"type":"text","value":"Uniform DXCP readily facilitates transitioning from the old"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The primary function of composable frameworks like DXCPs is to enable both developers and business users to work seamlessly together, doing what they do best by leveraging the headless solutions that support them best. Composability also unlocks the potential of creating state-of-the-art, future-forward web experiences."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"dxcps-are-far-more-cloud-native","depth":3,"text":"DXCPs are far more cloud native"},{"id":"dxcps-are-more-than-a-data-aggregator","depth":3,"text":"DXCPs are more than a data aggregator"},{"id":"dxcp-protects-domain-data","depth":3,"text":"DXCP protects domain data"},{"id":"uniform-dxcp-readily-facilitates-transitioning-from-the-old","depth":3,"text":"Uniform DXCP readily facilitates transitioning from the old"}]}},"_type":"markdown","_id":"content:4.writing:digital-experience-platforms-the-old-versus-the-new.md","_source":"content","_file":"4.writing/digital-experience-platforms-the-old-versus-the-new.md","_extension":"md"},{"_path":"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Fast, personalized pages with Vercel Edge Middleware and Uniform","description":"To maintain an engaging relationship with your audience and increase conversions to your site, you...","id":1405723,"slug":"fast-personalized-pages-with-vercel-edge-middleware-and-uniform","date":"2023-03-18T12:49:56Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1yp1gg5ldu4y8tozle7.png","canonical_url":"https://uniform.dev/blogs/personalization/blazing-fast-personalized-pages-with-vercel-edge-middleware-and-uniform","tags":["performance","personalization","vercel","edge"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To maintain an engaging relationship with your audience and increase conversions to your site, you need personalization. However, creating personalized experiences is technically challenging. Most personalization techniques involve dynamic rendering and an origin server that holds personalization rules for end-users—a slow approach that often negates the conversions gained through personalization."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Among the many moving parts to consider, performance and scalability are tough nuts to crack. Fortunately, companies like Vercel, which recently released "},{"type":"element","tag":"a","props":{"href":"https://vercel.com/docs/concepts/functions/edge-middleware","rel":["nofollow"]},"children":[{"type":"text","value":"Edge Middleware"}]},{"type":"text","value":", make those problems readily solvable for developers. With Vercel in place, you only need to choose the right tech to personalize at the CDN edge without having to grapple with the one thing that slows things down: the origin server."}]},{"type":"element","tag":"h3","props":{"id":"the-benefits-of-edge"},"children":[{"type":"text","value":"The benefits of edge"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Vercel offers familiar tech to developers: it’s all JavaScript based. With Edge Middleware, developers have the tools to make great things happen that they could not before. All the dynamic tasks that typically occur on an origin server can now happen near end-users, leading to faster page loads and automatic scaling out of the box. Not only that, Edge Middleware have user data that’s handy for personalization: country, region, and the device in use."}]},{"type":"element","tag":"h3","props":{"id":"the-personalization-process-at-the-edge"},"children":[{"type":"text","value":"The personalization process at the edge"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By eliminating the origin server that is typically far away from end-users and bringing the dynamic rendering closer with Edge Middleware, you can personalize with high performance and in a decentralized manner. The only way to personalize without a central brain that knows all the personalization rules is to bring that brain into the software as a first-party tool. This is how that works:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create and store the configuration rules, i.e., all the "},{"type":"element","tag":"a","props":{"href":"https://docs.uniform.app/capabilities/personalization","rel":["nofollow"]},"children":[{"type":"text","value":"criteria for personalization"}]},{"type":"text","value":", in the codebase as a manifest JSON file at build time."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Store variations of the personalized content in the codebase at build time. Since a headless CMS is generally in use, those variations are tiny JSON models in the form of components."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The Edge Middleware has a tracker that monitors user behaviors, which are signals that users give off by doing something on the site. The Edge Middleware awards a score to the personalization criteria configured in step 1. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The tracker automatically creates a profile of user actions and, based on the scores awarded against the various criteria, displays the right content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You can render the content via the Edge Middleware or in the front end at hydration time."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The above approach to personalization is how Uniform Context works. Combining Edge Middleware rendering of personalized content with JavaScript hydration for subsequent page loads renders highly dynamic pages within ~50 milliseconds only. The approach is to initially render all the pages statically (SSG/Jamstack) and ensure that the Edge Middleware knows which parts it can personalize. While serving a page, the Edge Middleware checks if personalization is needed and, if so, fills the identified components with the correct personalized content."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"uniform-vercel-edge-middleware","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/4lvoQsz6WNCbJXIWQVQJSI/b36e13c87c86ca668fea6adf3da2b078/uniform-vercel-edge-middleware.svg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another benefit of the Vercel edge is that at the edge level, the CDN knows a lot about the end-users: their location, city, device, browser version, etc. Thus, Uniform Context can prepersonalize pages with Edge Middleware according to the location or device information from the Vercel CDN."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Want to try that out for yourself? You’ll find all the details in Uniform’s "},{"type":"element","tag":"a","props":{"href":"https://docs.uniform.app/integrations/cdn/vercel/personalization","rel":["nofollow"]},"children":[{"type":"text","value":"documentation on Vercel’s edge-side personalization"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To recap, by combining Uniform Context on Edge Middleware with statically rendered pages (SSG/Jamstack), you can create highly dynamic, personalized pages that load in less than a minute. In the past, Uniform offered dynamic personalization features through Vercel ESI. Edge Middleware now gives you a much more flexible and intuitive model for implementing personalization at scale. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-benefits-of-edge","depth":3,"text":"The benefits of edge"},{"id":"the-personalization-process-at-the-edge","depth":3,"text":"The personalization process at the edge"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","_source":"content","_file":"4.writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","_extension":"md"},{"_path":"/writing/how-to-dynamically-stream-video","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to dynamically stream video","description":"Build it yourself or use Cloudinary Dynamic video streaming is a video delivery technique...","id":1406138,"slug":"how-to-dynamically-stream-video","date":"2023-03-18T21:56:45Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wx2ix9t60eajoccgjh7.png","canonical_url":"https://dev.to/timbenniks/how-to-dynamically-stream-video-135f","tags":["video","cloudinary","streaming"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"build-it-yourself-or-use-cloudinary"},"children":[{"type":"text","value":"Build it yourself or use Cloudinary"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Dynamic video streaming is a video delivery technique that adjusts the quality of a video stream in real time. It does this according to detected bandwidth and CPU capacity of a user. In this article we will explore the two techniques which allow you to dynamically stream video."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"HLS and MPEG-DASH are the two most popular formats out there. Dynamic or adaptive video delivery requires outputting a video in different quality settings along with some additional files. Both HLS and MPEG-DASH have different approaches to the problem."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The process of making adaptive streaming work is complex. Most services out there do not provide an end-to-end solution for this and the ones that do a are quite costly. The adaptive video streaming paradigm is not one that many companies have conquered as it requires specific knowledge and access to hardware. There is a reason we don't have many competitors for Netflix and YouTube. Adaptive streaming of video is hard."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"First we’ll go into how adaptive streaming works and then I’ll explain exactly how to do this yourself. It’s much easier than you think once you have the knowledge and the right third party tool to do the heavy lifting."}]},{"type":"element","tag":"h3","props":{"id":"how-adaptive-video-delivery-works"},"children":[{"type":"text","value":"How adaptive video delivery works"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The video stream adapts itself based on a set of rules. The user’s bandwidth, CPU load and video player resolution on the page. To be able to stream adaptively you need to be able to stream different versions of a video. Each variant is of different quality, has a different bitrate and potentially has a different codec or resolution. Think of it as progressive enhancement in web development. The simplest stream always works and based on the features you have (in this case, CPU power, bandwidth, resolution), you get a nicer looking video stream."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Each adaptive video is also joined by an index file that specifies predefined segments of the video. In the HLS standard these segments are usually 10 seconds long where in MPEG-DASH we use 1 second. There is also a master playlist that points to the available video variations with additional information about each one."}]},{"type":"element","tag":"h4","props":{"id":"an-audio-playlist-adaptation"},"children":[{"type":"text","value":"An audio playlist adaptation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s pretty cool that dynamic video streaming is based on the spec from the M3U8 audio playlist. M3U8 was originally designed for audio files, such as MP3, but nowadays it is commonly used to point media players to audio and video sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An adaptive streaming video player uses the playlist information to decide which of the available video variations fits the user’s network conditions, CPU load or resolution best. It can switch to another source at each 10 second segment (these segments can also be shorter, see examples below) if the network conditions change."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This approach works well to minimise bandwidth use and optimise it for a smooth playback for everybody who watches the video stream. It can also be used the other way around, if the streaming service is completely overloaded it can send a video stream with a smaller bitrate or resolution to the viewer."}]},{"type":"element","tag":"h3","props":{"id":"about-hls-and-mpeg-dash"},"children":[{"type":"text","value":"About HLS and MPEG-DASH"}]},{"type":"element","tag":"h4","props":{"id":"hls"},"children":[{"type":"text","value":"HLS"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"HLS was originally created by Apple to provide video for the iPhone, but now it’s a common format used across HTML5 web applications. You’ll need to encode your video with H.264 or HEVC/H.265 codecs, which can be decoded by all major browsers. With HLS, the video is chopped up into 10 second intervals and sent to the user."}]},{"type":"element","tag":"h4","props":{"id":"mpeg-dash"},"children":[{"type":"text","value":"MPEG-DASH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MPEG-DASH is the latest HLS competitor. It was originally created to be an alternative to HLS. It has a few advantages over HLS, mainly because it is open-source. This means the media content publisher community as a whole can contribute to its changes and updates. MPEG-DASH is globally supported and codec agnostic, which means that you can encode video without worrying about codec support. It has lower latency than HLS. It's playlist file is an "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".MPD"}]},{"type":"text","value":", which is an "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"XML"}]},{"type":"text","value":" format."}]},{"type":"element","tag":"h3","props":{"id":"doing-it-yourself"},"children":[{"type":"text","value":"Doing it yourself"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deliver videos using adaptive streaming you must generate multiple video versions, add an index file per variant and add a master playlist. The formats and encoding for HLS and MPEG-DASH are different for each of these files. If you want to stream using both HLS and MPEG-DASH formats you need to double the effort for every video you want to deliver. Additionally, for MPEG-DASH, the best practice is to deliver the audio and video separately. This stuff is complex and time consuming."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you are a developer who likes to get into the nitty gritty of "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"ffmpeg"}]},{"type":"text","value":" you can deep dive and create all sources for HLS and MPEG-DASH yourself."}]},{"type":"element","tag":"h4","props":{"id":"diy-steps-for-mpeg-dash"},"children":[{"type":"text","value":"DIY steps for MPEG-DASH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MPEG-DASH is simplest to do yourself. Let's give it a go!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Imagine we have a video file called "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"video.mp4"}]},{"type":"text","value":". To make sure we can adaptively stream the video we need to create video files with different bitrates and an audio file. "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Beware that this is a simplified version for illustration purposes. In real life "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"ffmpeg"}]},{"type":"text","value":" has many quirks based what video you give it."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 1: extract the audio"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Extract the audio track:"}]},{"type":"element","tag":"pre","props":{"code":"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 2: extract and re-encode the video track"}]}]},{"type":"element","tag":"pre","props":{"code":"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The video is encoded using H.264 codec. This forces to have a key frame every 24 frames, in this case, every second. This allows the video to be segmented in chunks of 1 second. The bitrate is evaluated according to the buffer size, so in order to be sure the encoding is close to the requested rate, the buffer size should be lower than the bitrate."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 3: generate the MPD file"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We now have one audio file and five video files. A Media Presentation Description (MPD) file has to be created. An MPD file functions as an index referencing the different video and audio tracks with their bitrate, size and how the segments are ordered."}]},{"type":"element","tag":"pre","props":{"code":"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The -dash option sets the duration of each segment to one second."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to preparing adaptive streaming content MP4Box can do a lot more. So much more in fact that it's best to just read more "},{"type":"element","tag":"a","props":{"href":"https://github.com/gpac/gpac/wiki/MP4Box","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 4: configure your webserver"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Make sure your webserver understands "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".mpd"}]},{"type":"text","value":" files by adding the following mime type: "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"application/dash+xml"}]},{"type":"text","value":" to its config."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 5: make sure your video player understands adaptive streaming"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Implement "},{"type":"element","tag":"a","props":{"href":"https://github.com/Dash-Industry-Forum/dash.js","rel":["nofollow"]},"children":[{"type":"text","value":"dash.js"}]},{"type":"text","value":" into your video player or build a custom video player around dash.js."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Concluding"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Obviously, doing this at scale or as a slightly less technical user this process is not realistic. You'll want to automate this completely."}]},{"type":"element","tag":"h4","props":{"id":"enter-cloudinary"},"children":[{"type":"text","value":"Enter: Cloudinary"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to being market leader in image delivery Cloudinary also provides features for video: from dynamic streaming profiles to cropping the subject perfectly on different video ratios. They even use AI to generate captions for muted videos or meaningful previews."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Today we are discussing the dynamic streaming service they offer. Cloudinary has created "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/video_manipulation_and_delivery#adaptive_bitrate_streaming_hls_and_mpeg_dash","rel":["nofollow"]},"children":[{"type":"text","value":"smart pre-defined"}]},{"type":"text","value":" streaming profiles to help you out. A streaming profile holds a set of video variation definitions with different qualities, bitrates, and codecs. For example, the one profile specifies 10 different variations ranging from extremely high quality to audio-only. You can also create "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/admin_api#adaptive_streaming_profiles","rel":["nofollow"]},"children":[{"type":"text","value":"custom profiles"}]},{"type":"text","value":" through their admin API."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once you have selected a profile, you upload your video file with an eager transformation that instructs the system to generate all the required files for the requested profile in either HLS or MPEG-DASH format. If you want to deliver both formats, add two "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/transformations_on_upload#eager_transformations","rel":["nofollow"]},"children":[{"type":"text","value":"eager transformations"}]},{"type":"text","value":" within your upload command."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This upload code is for the Node.js SDK."}]},{"type":"element","tag":"pre","props":{"code":"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '',\n public_id: '', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '',\n public_id: '', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that the file has been uploaded, it generates a bunch of different video and audio streams. These streams are represented in the playlist files below."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For the HLS version of the video this is what comes out as the m3u8 playlist file:"}]},{"type":"element","tag":"pre","props":{"code":"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For the MPEG-DASH version of the video this is what comes out as the MPD playlist file (I have shortened the file for readability):"}]},{"type":"element","tag":"pre","props":{"code":"\n \n \n \n /dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n /dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\n \n \n \n /dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n /dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that we have the playlist files and all the video streams we can either build our own fancy video player that understands dynamic streaming or we go for the "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/cloudinary_video_player","rel":["nofollow"]},"children":[{"type":"text","value":"Cloudinary player"}]},{"type":"text","value":". In this case I suggest we use the Cloudinary player as it works out of the box. Check out the code sandbox for a very simple vanilla JavaScript example of loading the player for both HLS and MPEG-DASH."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Try throttling your connection and see the differences in quality. To do this, open your web developer tools (assuming you use chrome), open the network tab and select a different connection type in the dropdown next to the \"preserve log\" and \"Disable cache\" checkboxes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Cloudinary video player is based on "},{"type":"element","tag":"a","props":{"href":"https://videojs.com/","rel":["nofollow"]},"children":[{"type":"text","value":"videojs"}]},{"type":"text","value":" and has both the HLS and MPEG-DASH plugins installed by default. In the code sandbox below you'll see both the HLS and the MPEG-DASH version. Beware that the HLS version has better support for showing different statistics than the MPEG-DASH version."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See the code here: "},{"type":"element","tag":"a","props":{"href":"https://codesandbox.io/s/white-cherry-g4ixt","rel":["nofollow"]},"children":[{"type":"text","value":"https://codesandbox.io/s/white-cherry-g4ixt"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"build-it-yourself-or-use-cloudinary","depth":2,"text":"Build it yourself or use Cloudinary","children":[{"id":"how-adaptive-video-delivery-works","depth":3,"text":"How adaptive video delivery works"},{"id":"about-hls-and-mpeg-dash","depth":3,"text":"About HLS and MPEG-DASH"},{"id":"doing-it-yourself","depth":3,"text":"Doing it yourself"}]}]}},"_type":"markdown","_id":"content:4.writing:how-to-dynamically-stream-video.md","_source":"content","_file":"4.writing/how-to-dynamically-stream-video.md","_extension":"md"},{"_path":"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to get your webcam to look decent in a few simple steps","description":"If you have used a webcam before you know what it means to look like shit on camera. Even the most...","id":1407808,"slug":"how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","date":"2023-03-20T13:01:35Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finfev45k3ve6i4dgtu2r.png","canonical_url":"https://dev.to/timbenniks/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps-5eo4","tags":["webcam"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have used a webcam before you know what it means to look like shit on camera. Even the most expensive consumer webcams produce a “meh” result. So why do webcams suck? It’s their design. The webcam form factor has a bunch physical challenges that limits them from producing a good looking picture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Beware, the ideas outlined below are based on my experience and are by far not comprehensive or complete. That is not the idea of this post. Someone in the field of cameras will probably pick this apart on details. The global ideas stand, however."}]},{"type":"element","tag":"h3","props":{"id":"why-webcams-suck"},"children":[{"type":"text","value":"Why webcams suck"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Let’s get a bit technical. Almost all webcam "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Image_sensor","rel":["nofollow"]},"children":[{"type":"text","value":"image sensors"}]},{"type":"text","value":" are somewhere between 1/4\" and 1/3\" in size and they have a crop factor of around 7. Crop factor is a term that describes the difference between your camera’s sensor size and a traditional 35mm film frame. In the case of a webcam’s image sensor size and its crop factor a normal 18mm lens is the equivalent of a 126mm zoom lens. I might be a bit off here. The idea is that the crop factor plays a huge role."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A webcam tends to be positioned around 40cm (1.3 feet) from your face. Due to the high crop factor an extremely wide angle lens is needed to get a good visual at that distance. Think about it. If a 18mm lens is the equivalent of an 126mm lens it means that something we consider normal on a SLR camera is extremely zoomed in on a webcam. So, we need to zoom it out. BY A LOT. To do that, we use a wide angle lens."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Sensor explanation","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16nf6fvk0v76s11zb1ph.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The problem is, the wider you go, the less sharp the picture gets. If there wasn’t enough against the webcam form factor: the lenses in webcams are generally cheap and shitty. The webcam’s physical limitations make it terrible in low light situations. Even with studio lighting the image can appear grainy."}]},{"type":"element","tag":"h4","props":{"id":"there-are-more-issues-yikes"},"children":[{"type":"text","value":"There are more issues. Yikes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you check out high quality content there is always a nice "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Bokeh","rel":["nofollow"]},"children":[{"type":"text","value":"bokeh effect"}]},{"type":"text","value":". The more light a lens can capture (aperture) and the bigger the image sensor, the more bokeh you can expect. Bokeh is awesome, everybody needs bokeh."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In webcams autofocus works from about 1cm until 60cm (2feet). After that everything is always sharp. Webcams have a shallow depth of field. No bokeh. Not even close."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Combine a small sensor, a crappy wide angle lens and a shallow depth of field and you have the average webcam. A 200 euro webcam isn’t that much better than a 50 euro webcam. Sad but true."}]},{"type":"element","tag":"h4","props":{"id":"but-why-does-my-phone-camera-look-so-good"},"children":[{"type":"text","value":"But why does my phone camera look so good?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A real camera or a phone have much more computational power. The camera on a phone is almost its main feature nowadays. It’s where all the advertisement dollars go. Phones have bigger sensors, better lenses and sometimes even a dedicated hardware chip just for image processing."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most webcams also have some sort of processing power on board but it always kind of sucks. It mainly compresses the video feed so it’s streamable over the USB connection. Due to the compressed stream the PC hardly needs any processing to show the video. You have no access to aperture, shutter speed or ISO though."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can only post process the signal. But the damage is usually already done at this stage."}]},{"type":"element","tag":"h4","props":{"id":"but-why-arent-there-any-amazing-webcams-out-there"},"children":[{"type":"text","value":"But why aren’t there any amazing webcams out there?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s definitely possible and there are niche brands that build 1000 euro webcams. But if you have to spend that much, why not just buy a real camera? The actual market for webcams is likely just for conference calls, skype with family (if you don’t have a laptop or a phone) or content creators who are starting out. If webcams get too expensive, nobody will buy them."}]},{"type":"element","tag":"h3","props":{"id":"you-can-make-it-work-however"},"children":[{"type":"text","value":"You can make it work however"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In this post I’ll outline some tips and tricks you can apply to make your webcam look better. All techniques described below are applicable to any sort of camera setup. If you have a proper camera it just works better. We will be covering two topics. Lighting and post processing settings."}]},{"type":"element","tag":"h4","props":{"id":"lighting"},"children":[{"type":"text","value":"Lighting"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Lighting is by far the most important part of your setup if you want to make your webcam image look good. As mentioned before, webcams are not great in low light situations. To overcome this limitation you have to blast the filming subject (you) with light."}]},{"type":"element","tag":"h5","props":{"id":"light-temperatures"},"children":[{"type":"text","value":"Light temperatures"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are different types of light that need different white balance settings. Generally light bulbs are yellow and sun light is blue. When combining both you can green a green overtone. White balancing your camera in software is very important in this case."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I’d suggest not to use sunlight as it is hard to control. Close your blinds and go for light bulbs or LED lights only. There are many cheap options out there. Most lights can deliver different color temperatures ranging from 2500 (sunset) to 10000 (blue sky). Generally 5500 is considered noon daylight."}]},{"type":"element","tag":"h5","props":{"id":"shadows-diffusion"},"children":[{"type":"text","value":"Shadows & diffusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Light can be cast in different ways. Harder shadows and lighting from the top is used to depict movie villains for example. If you want an dramatic look, use hard shadows and light yourself from one side. If you want to look more mainstream use softer shadows and light yourself from more angles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To generate softer shadows you have to diffuse your light. The more focused a light source is, the harder the shadows. The more diffusion is added, the softer the shadows. I personally use a couple of cloths of white t-shirt fabric stretched over my lights. Obviously there are also more professional ways to diffuse light but these are not available to everyone."}]},{"type":"element","tag":"h5","props":{"id":"your-light-setup"},"children":[{"type":"text","value":"Your light setup"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that we have our color temperatures and diffusion out of the way, let’s talk about how to set up your lights so you are lit properly for the webcam. If you have very limited options, just put a big light behind your camera and blast your face with white light. This will give you a 100% quality boost over having no lights."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have a little bit more flexibility I suggest using a three point light setup. The three point light setup is considered industry standard and will generally give you great results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Lighting setup","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/keef3ou8sbzpg24acrzj.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The three point light setup assumes you have a “key light”, a “fill light” and a “hair light”."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Key light: This is the main light source. It shines directly on the subject, usually from the front right or front left. It establishes the overall look and feel of the shot."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Fill light: The fill light provides balance to the key light by “filling in” the rest of the subject’s face with softer light. It should be positioned to the side opposite side of the key light."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hair light: Also called “back light” or “rim light”. This light creates a flattering rim of light around the subject, separating him or her from the background."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is how to set up your lights. To start turn all lights off so you are in a dark room."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Turn on your key light. Your key light is the brightest light in the scene and the one that creates the overall feel of the shot. Adjust its brightness to your liking. You should position the key light in a relatively high spot to reduce shadows on the face."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Add your fill light. The fill light should be on the opposite side of the key light, but still in front of the subject. Don’t make the key and fill lights symmetrical. The fill should be at the subject’s face level, and should get rid of any remaining shadows. The intensity of the fill light should be about half that of the key light."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Bring in the hair light. The back light separates you from the background. It can be placed anywhere behind the subject. Make sure to keep it out of the shot. Angle it down from a high position to achieve a sharp outline on the edge of the subject."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If there are lights behind you, make sure these have a very low intensity so they do not distract from you, the subject of the shot. To make the shot more interesting you can add some fun colored lights behind you as long as they are not too distracting. This is obviously not needed but it’s a fun thing to add."}]},{"type":"element","tag":"h3","props":{"id":"application-settings"},"children":[{"type":"text","value":"Application settings"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We are almost there! Let’s tweak some settings to make the camera quality appear much higher."}]},{"type":"element","tag":"h4","props":{"id":"turn-things-off"},"children":[{"type":"text","value":"Turn things off."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have a Logitech webcam. This camera comes with a little control panel that allows for some post process tweaking of the camera feed. If you are well lit you can turn off a bunch of things in this interface. First of all, keep the settings for brightness, contrast, saturation and sharpness at the default. We will fix these at a later stage."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Set the white balance on a fixed setting and make sure it is not set to auto. For my setup a white balance at around 4000 works."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make sure to turn off Backlight compensation and Gain. We do not need these as we are well lit."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"In the next tab make sure exposure is set to “auto”. If you attempt to expose yourself manually with a Logitech webcam all hell brakes loose. The image either looks like crap or your framerate will drop significantly."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make sure to turn off Low Light compensation. There is no need for this as you are well lit."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Webcam settings","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rktns1m78yyy1owfexqd.png","width":1280},"children":[]}]},{"type":"element","tag":"h4","props":{"id":"color-correction"},"children":[{"type":"text","value":"Color correction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I use OBS, which comes with a great plugin to color correct the video feed from your webcam. The smallest adjustments give a great result. Stay subtle with the changes and your video will look a lot better fast."}]},{"type":"element","tag":"h4","props":{"id":"lut"},"children":[{"type":"text","value":"LUT"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Instagram filters can make a simple picture of food look like a very fancy picture of food. You can use these same kinds of filters on webcams too! It’s amazing what a little cosmetic tweak can do to your video quality. The filters I’m talking about are called "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/3D_lookup_table","rel":["nofollow"]},"children":[{"type":"text","value":"LUT"}]},{"type":"text","value":". LUT’s are generally used in the professional film world to color grade a movie."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"LUT’s are simple, easy-to-use filters that can be applied directly into "},{"type":"element","tag":"a","props":{"href":"https://obsproject.com/","rel":["nofollow"]},"children":[{"type":"text","value":"OBS"}]},{"type":"text","value":" allowing your webcam presentation to become brighter or more cinematic. For a great free pack of LUT’s go here: "},{"type":"element","tag":"a","props":{"href":"https://gamingcareers.com/guides/30-free-webcam-filters-obs/","rel":["nofollow"]},"children":[{"type":"text","value":"https://gamingcareers.com/guides/30-free-webcam-filters-obs/"}]}]},{"type":"element","tag":"h4","props":{"id":"you-can-try-one-more-thing"},"children":[{"type":"text","value":"You can try one more thing"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have a cheap camera with a shallow depth of field and your lights are set up well, you can use a program called xsplit vcam to create a software bokeh effect! Beware, you need a relatively strong graphics card and the lighting needs to be spot on. Also, the program is not free."}]},{"type":"element","tag":"h3","props":{"id":"thats-it"},"children":[{"type":"text","value":"That's it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is the result I got after a bit of research and tweaking settings."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Before","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53ums57svft6zuza79l9.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"After","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h293vez6piv68hyzfy98.png","width":1280},"children":[]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-webcams-suck","depth":3,"text":"Why webcams suck"},{"id":"you-can-make-it-work-however","depth":3,"text":"You can make it work however"},{"id":"application-settings","depth":3,"text":"Application settings"},{"id":"thats-it","depth":3,"text":"That's it"}]}},"_type":"markdown","_id":"content:4.writing:how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","_source":"content","_file":"4.writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","_extension":"md"},{"_path":"/writing/how-to-sniff-out-the-glue-monster","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to sniff out the Glue Monster","description":"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic...","id":1405727,"slug":"how-to-sniff-out-the-glue-monster","date":"2023-03-18T13:00:21Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8mwj68dscwvzuvcdd4y.png","canonical_url":"https://uniform.dev/blogs/how-to-sniff-out-the-glue-monster","tags":["javascript","architecture","composable","devops"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic platforms to "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architectures"}]},{"type":"text","value":", glue code that connects to systems or cleanses data has grown exponentially. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reality is, you as developers must connect headless systems for a cohesive, feature-complete architecture, but that’s a messy task. The amount of glue you must create hinges on deadlines, the potential need to switch systems later, and the answers to these questions:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you clean up that messy API response so its data fits the front end?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you adapt your front-end components to specific API output and add logic locally?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you separate domain data with design-related data, or mix up everything in data models in different headless systems?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue Code SPREAD","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5iPWgs3hiyQZb1O7cZECJt/671395cc3852d456f1dc02d34d6d5b2c/GlueCode_Blog_SPREAD.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Glue code is a nightmare of technical debt that leads to less innovation, more development effort, and, ultimately, higher expense on hidden requirements."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Types of glue"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue code Icon","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5n8VoHX3RPLBLFWg2IJsYP/f2e9ccc22bd7541b352b7bf19d24ffcb/GlueCode_Blog_Images_Glue_code_Icon.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else"},"children":[{"type":"text","value":"Code that queries a source or receives data that maps the input to fit something else. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example is code that queries an API endpoint and retrieves a huge yet incomplete dataset for the following steps:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Map the initial result into a more specific object. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enrich that object by querying another endpoint and add the result to the original. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Tidy up the code and create a final data set."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here’s a real-world use case: queries on a YouTube playlist and retrieval of the metadata on the videos there. The process runs as follows:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The code traverses the response to identify and arrange the video IDs in an array. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You query the YouTube video API for each video ID for all the needed data. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Given the massive amount of data that results, you go through the response for the exact data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the case of a less reputable source than YouTube or a legacy API, any changes could break the data structure you assume is returned. Not only that, since you have no inkling of the type of the returned data, your data-mapping code must be defensive. Some fields might be empty or even nonexistent sometimes. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Plus, placing all that code in your front end spells complexity. What to do when you’re building another front end like a mobile app or an Apple TV app? Do you duplicate the code in all the new channels?"}]},{"type":"element","tag":"h3","props":{"id":"polluting-stable-domain-data-with-volatile-design-data"},"children":[{"type":"text","value":"Polluting stable domain data with volatile design data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Generally, a data model for videos contains the following fields: "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"titleClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"descriptionClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"poster imageClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"durationClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"upload dateClick to copy"}]},{"type":"text","value":", and "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"video fileClick to copy"}]},{"type":"text","value":". But what to do if the product owner wants to highlight this video as “featured” for the week? You would add a “featured” checkbox to the data model and ask content editors to check “featured” in the CMS. In the front-end code, you would look for the “featured” flag and show a bigger version of the video card along with a boldfaced title. If the video appears in another context, like a search result or on another website, that “featured” flag has no meaning."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In time, you would add other checkboxes and dropdowns to show the content differently in various contexts, causing the content model to grow. At that point, if an architect who’s cleaning house removes a checkbox, multiple projects that leverage the video would crash and burn."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To sustain a setup with data models that are regularly polluted in that manner, you must build a plethora of defensive code that catches all the additional data. That’s how undesirable glue code and tech debt build up."}]},{"type":"element","tag":"h3","props":{"id":"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers"},"children":[{"type":"text","value":"Creating glue layers by vendors to stay sticky (pun intended) with customers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue Code STICKY architecture","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5zwPAAafgm4qZpoU9H2Bbw/8d4928142367cd19f8b76528bfc61ef0/GlueCode_Blog_STICKY.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The more “official” glue vendors add to a composable system, the harder it is for their customers to perform updates, or switch or add components. The more tech debt, the more support hours vendors can sell. Also, since modern, more agile vendors are bound to outpace the less competitive ones in time, the wise thing for the latter to do is adopt solutions that offer hyperflexible systems at lower cost, enabling their customers to focus on storytelling and solving business problems for their audience without sticky glue."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Ways to deglue"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Unglue Icon","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/16F6FELfCSkZjE8cCuRauw/2c81553462dd1d16be36b2a56dffd443/GlueCode_Blog_Images_Unglue_Icon.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The new product category digital experience composition facilitates degluing. Typically, you create pages on "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platforms (DXCPs)"}]},{"type":"text","value":" with data from numerous headless sources without having to understand how those sources work. With the DXCP hosting a brand’s design system in page components, you can drag and drop them onto the page and connect data from external sources to them. No need to write connection code at all. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXCPs map component properties to specific data fields of APIs. That means you could add to your video component an image from a DAM, a title and description from YouTube, and viewer metadata from an ERP system. Want to feature the video somewhere? Simply add a checkbox in the DXCP in the context of the component in question without affecting the data model of external systems. As a last step, add the data attached to the component to the CDN edge for caching. Alternatively, grab the information on the data source and query it yourself. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The front end contains a light and fast SDK that can query component compositions in the CDN-edge cache. With the content mapped explicitly to your component properties in the DXCP, no data mapping is required. And you are now deglued!—with no need to build code to straighten up data or query external systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Want to add a tiny bit of glue nonetheless? The SDK also contains hooks through which you can enrich or map data from the API before sending the data to the components."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the meantime, content editors can take advantage of the DXCP’s live-preview feature to contextually edit the website by connecting new headless sources and mapping API responses to the components you created. Updating a CMS or adding a legacy source takes only a few clicks, code free. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, content editors can manually type in content on the DXCP and, later on, attach a CMS or commerce system that replaces the static copy with dynamic pointers from component fields to API responses. Again, no code is required to accommodate those functions."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else","depth":3,"text":"Code that queries a source or receives data that maps the input to fit something else. "},{"id":"polluting-stable-domain-data-with-volatile-design-data","depth":3,"text":"Polluting stable domain data with volatile design data"},{"id":"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers","depth":3,"text":"Creating glue layers by vendors to stay sticky (pun intended) with customers"}]}},"_type":"markdown","_id":"content:4.writing:how-to-sniff-out-the-glue-monster.md","_source":"content","_file":"4.writing/how-to-sniff-out-the-glue-monster.md","_extension":"md"},{"_path":"/writing","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Writing","description":"Writing desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Writing"},"children":[]},{"type":"element","tag":"articles","props":{":small":"false"},"children":[]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:index.md","_source":"content","_file":"4.writing/index.md","_extension":"md"},{"_path":"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Level up your collaboration game: Developer insights for winning with marketing pros","description":"Building outstanding user experiences takes, first and foremost, effective collaboration between...","id":1456239,"slug":"level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","date":"2023-05-03T15:49:29Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhfuu567f1khlxvglcn0.png","canonical_url":"https://uniform.dev/blogs/level-up-your-collaboration-game-developer-insights-for-winning-with","tags":["webdev","marketing","collaboration"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Building outstanding user experiences takes, first and foremost, effective collaboration between marketing and development teams. Oftentimes, however, those teams’ different perspectives lead to misunderstandings and opacity, which could seriously impact progress and revenue. Over the last two years of interacting and working within a marketing department as a seasoned technical leader, I've developed strategies to enhance collaboration, boost cross-team communications, and promote project success. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Below are the steps to take."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Set clear objectives"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Since both development and marketing play vital roles in implementing user experiences that drive business goals, the contributors in question must share clear, common objectives, e.g., projected sales, number of service signups, and brand messaging. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reaching those goals sometimes requires both technical and marketing-driven activities, such as code refactoring, site-performance boosts, messaging-success measurements, and analytics gathering. Those work streams, whose specifics are highly contextual to the specific job marketers or developers do, could easily cause conflict."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid miscommunication, do the following:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Invite participation from all team members."}]},{"type":"text","value":" Involve them in planning sessions, explain the background of the strategies to be built, and ascertain that everyone is on the same page."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Set SMART goals."}]},{"type":"text","value":" Create specific, measurable, attainable, relevant, and time-bound objectives."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Plan together"}]},{"type":"text","value":". Align schedules based on the teams’ different workflows."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Understand how the other discipline works"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A healthy dose of the qualities below is key:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Respect."}]},{"type":"text","value":" To minimize friction, respect for each other's operating methods, styles, and process is essential. Besides acquiring an understanding of the various workflows, team members must be willing to compromise for alignment’s sake."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Patience."}]},{"type":"text","value":" Be accommodating, thoughtful, and tolerant when explaining processes to the other team. A unified approach like Agile project management can forge collaboration by breaking projects into stages, constantly engaging with stakeholders, and enabling both teams to simultaneously track goals and meet objectives."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Remember, a world of difference exists in how developers and marketers think. Establishing a mechanism through which they can learn about one another's tasks and routines goes a long way in championing collaboration."}]},{"type":"element","tag":"h2","props":{"id":"leverage-each-others-skills"},"children":[{"type":"text","value":"Leverage each other’s skills"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Developers and marketers contribute unique, value-add skills:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Developers"}]},{"type":"text","value":" can offer product or technical insights by clarifying why certain code approaches and rendering modes help reach marketing goals."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Marketers"}]},{"type":"text","value":" can share user feedback, messaging learnings, and test data with developers as support for spiffing up the UI and product features."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Essentially, developers work in the context of the “how,” and marketers, of the ”why.” Both are equally valuable for successful projects."}]},{"type":"element","tag":"h2","props":{"id":"make-data-based-decisions"},"children":[{"type":"text","value":"Make data-based decisions"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Data is crucial for measuring success. Developers and marketers play a different role vis-à-vis data:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers create technology for harnessing data that marketers need to optimize conversion."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Marketers collect data and strategize campaigns accordingly. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Using analytics tools and personalization engines is instrumental for fulfilling project goals. Ultimately, developers must find a way to integrate “hated tools” so that both teams are happy."}]},{"type":"element","tag":"h2","props":{"id":"use-the-tools-that-appeal-to-both-teams"},"children":[{"type":"text","value":"Use the tools that appeal to both teams"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tools that propel collaboration fall into different categories. For example, Jira and Linear are process systems, and Figma and Zeplin are design devices. Other tools are slated for website architecture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though developers love the freedom to choose the tools they prefer to build websites, it comes at the price of abstract interfaces and many open tabs for marketers. As technology evolves, techies must keep up with industry trends without being bogged down by marketers’ tool choices. That’s where headless has failed us: The pendulum of architecture choices to build websites has swung too far. Developers love it, yet marketers hate it. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":" affords both developers and marketers control of features, content, and the ever-ticking clock. Though technically agnostic, a DXCP—"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Helps developers funnel data to a front-end channel of their choice without compromises. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enables marketers to independently and visually edit content in a no-code environment without having to seek developer assistance."}]}]},{"type":"element","tag":"h2","props":{"id":"faithfully-perform-the-paramount-steps"},"children":[{"type":"text","value":"Faithfully perform the paramount steps"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By setting clear objectives, understanding each other's processes, leveraging each other’s unique skills, making data-driven decisions, and adopting tools that cater to both parties, marketing and development teams can cooperate smoothly, eliminate roadblocks, and deliver phenomenal projects. With the right strategies and mindset, the sky's the limit for the potential of those high-performing teams to achieve exceptional results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://uniform.dev/demo","rel":["nofollow"]},"children":[{"type":"text","value":"Check out Uniform DXCP"}]},{"type":"text","value":", on which developers and business teams can access all the tools they need to deliver well and fast."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"leverage-each-others-skills","depth":2,"text":"Leverage each other’s skills"},{"id":"make-data-based-decisions","depth":2,"text":"Make data-based decisions"},{"id":"use-the-tools-that-appeal-to-both-teams","depth":2,"text":"Use the tools that appeal to both teams"},{"id":"faithfully-perform-the-paramount-steps","depth":2,"text":"Faithfully perform the paramount steps"}]}},"_type":"markdown","_id":"content:4.writing:level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","_source":"content","_file":"4.writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","_extension":"md"},{"_path":"/writing/mach-versus-monolithic-suites","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"MACH versus monolithic suites","description":"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are...","id":1399552,"slug":"mach-versus-monolithic-suites","date":"2023-03-13T20:37:36Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfwuyqdwlw3du1k96z1l.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/mach-versus-monolithic-suites#mach-as-an-evolution-of-monoliths","tags":["mach","composable","architecture","webdev"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are no longer viable and that companies must evolve continually to keep up with consumer expectations. However, making technology decisions can be difficult, confusing, and stressful, especially since you might have to live with them for years. You also run the risk of being locked into products that cannot keep up with your organization's changing needs or, even worse, products that were never a good fit in the first place. No wonder that when an architecture emerges that promises to reduce that risk, people pay attention."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reality is, monolithic suites are no longer the safest choice. In their quest to stay agile, nimble, customer-centric, and future-proof, businesses must find more effective ways for transforming digital experiences and are turning to the increasingly popular MACH architecture."}]},{"type":"element","tag":"h2","props":{"id":"mach-architecture-explained"},"children":[{"type":"text","value":"MACH architecture explained"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MACH stands for microservices, API-first, cloud-based, and headless, comprising decoupled, modular, self-contained, and independent components that work together as one, as explained below:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Microservices"}]},{"type":"text","value":": These are individual business capabilities that are independently built, deployed, and managed."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"API-first"}]},{"type":"text","value":": APIs function as the pipeline through which applications interact, resulting in a microservices-based architecture that activates data exchange among the services."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Cloud-native"}]},{"type":"text","value":": Since cloud computing offers scalability and adaptability, cloud-native applications foster innovation, accelerating the creation and optimization of microservices and, in turn, the process of project initiation through delivery."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Headless"}]},{"type":"text","value":": This approach of decoupling the front-end user experience from the back-end logic spells complete freedom in building omnichannel digital experiences."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Together, those four components promise to reduce the risk of product lock-in and enable enterprises to adopt technologies that best meet their needs in a timely manner. As a response to the monolithic architectures that have long dominated enterprise applications, MACH addresses the limitations of legacy technologies while staying flexible for businesses to adapt to changes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Understanding MACH requires coming to grips with its two foundational concepts, integration and composability, as well as the advantages and disadvantages of its monolithic predecessor."}]},{"type":"element","tag":"h2","props":{"id":"mach-as-an-evolution-of-monoliths"},"children":[{"type":"text","value":"MACH as an evolution of monoliths"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Though costly, monoliths are convenient because, being from a single vendor, their components are likely to work well together. Additionally, since most monolithic vendors are well-established market players, they offer all the features required for building and maintaining digital experiences and serve as a single contact for businesses to call on in case of issues."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Encompassing its services in one interdependent package, MACH evolves from a monolithic, tightly coupled system. Those services, frequently called a “best-of-need” stack, comprise robust APIs for facilitating data exchange among services along with the best tools for experience creation without incurring expenses on unnecessary features. Another benefit is that businesses need not depend on a single vendor’s roadmap for new channels or technologies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, businesses might find it difficult to evaluate the array of MACH vendors and tools and make the right decisions. Also, given MACH’s multivendor setup, teams might need to perform their tasks with several tools instead of one, as in the case of a monolithic system. Another major challenge is that integration of the tools often requires heavy custom coding."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To decide which system, MACH or monolithic, to opt for, businesses must find out if the advantages are real and whether the advantages surpass the disadvantages."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Suites versus MACH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The difference between a suite and MACH comes down to choice. In the case of a suite, the vendor selects the products for you. With MACH, you pick the products you want from the vendors you prefer."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Back when suites were popular, building a stack was just not practical for most businesses. Nowadays, vendors are building products with the expectation that companies will integrate them with other products. Moreover, delivering those products through a cloud-based infrastructure means that businesses need not support multiple products built with different technologies. That’s the world enabled by MACH."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For businesses that aim at building a technology stack of products that meet their unique requirements, MACH provides the foundational architecture. Therefore, if you buy a CMS, a personalization tool, and an enterprise module built on MACH principles, you can seamlessly and consistently connect them all."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Still, the suite approach continues to predominate, and businesses often adopt it even while designing a modern, composed architecture. That practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Uniform as the infrastructure of composable systems"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform offers a fast track to composability by handling all the difficult and time-consuming integration tasks, personalization settings, etc., so that you can focus on critical undertakings like web design and content creation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Remarkably, Uniform offers composability right out of the box. You get to select the components that you want in your stack, and we handle all the connections and orchestration. You need not build this complex but valuable integration yourself."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To recap, building composable systems on a MACH architecture is a modern, sustainable approach that resolves the difficult problems organizations have accepted as a natural part of working with enterprise software. With composability, you can build stacks with tools of your choice. The MACH architecture makes all that happen in a sustainable, scalable manner, and Uniform provides the infrastructure for orchestration across your MACH platforms."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mach-architecture-explained","depth":2,"text":"MACH architecture explained"},{"id":"mach-as-an-evolution-of-monoliths","depth":2,"text":"MACH as an evolution of monoliths"}]}},"_type":"markdown","_id":"content:4.writing:mach-versus-monolithic-suites.md","_source":"content","_file":"4.writing/mach-versus-monolithic-suites.md","_extension":"md"},{"_path":"/writing/make-the-web-greener-luxury-edition","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Make the Web Greener, Luxury Edition","description":"If the internet were a country, it would be the world’s sixth biggest polluter. The...","id":1406180,"slug":"make-the-web-greener-luxury-edition","date":"2023-03-18T22:30:27Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3e00qrk4jojitb5tu06.jpg","canonical_url":"https://www.valtech.com/insights/make-the-web-greener-luxury-edition/","tags":["webdev","environment"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter"},"children":[{"type":"text","value":"If the internet were a country, it would be the world’s sixth biggest polluter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The internet consumes around 416TWh per year in electricity. That number does not say much until you compare it to the 300TWh the United Kingdom consumes. These are staggering numbers, and they will only go up as the internet keeps growing. Whether you realize it or not, carbon emissions are generated all over the place."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that is 211 kg CO2 per year or about twice the weight of a professional basketball player. This is more carbon than ten trees can absorb. If you think about how many websites we have on the internet, this comparison paints a pretty scary picture."}]},{"type":"element","tag":"h3","props":{"id":"the-luxury-dilemma-the-rich-experience-and-fast-page-loads"},"children":[{"type":"text","value":"The Luxury Dilemma: The Rich Experience and Fast Page Loads"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every web page is crafted with art-directed elements that tell the right story. Luxury product pages are rich experiences that make the user linger and enjoy the ride. This approach is great for the potential customer, but there is a dark undertone when we consider the environment. These pages are full of heavy images, videos and animations. The heavier the page, the more carbon is emitted. If pages take longer to load, the emissions go up due to more device usage–and the antenna and screen are used for a longer period too."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are some conflicting goals within luxury on the web. We want a rich experience, but we also want hyper-fast page loads. We all know that slow pages mean more user drop-off. And to make matters worse, we also need to think about the environment. We need to contain how much carbon is blasted into the atmosphere when someone visits a page."}]},{"type":"element","tag":"h3","props":{"id":"how-to-reduce-carbon-emissions-from-your-website"},"children":[{"type":"text","value":"How to Reduce Carbon Emissions from Your Website"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The above describes a complicated mix of problems to solve. We know that carbon emissions are lowest if:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A page is fast to find"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The page loads fast and with little resources"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Users stay on a page for a very short time"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"These three points are hard to carry out in the current way of working in luxury. That is not because we do not know how to build websites but because the goals are different. We want visitors to explore the brand, linger and become influenced by the product story. They should become lifelong customers. Sadly, this goes against what is best practice for websites with a low carbon footprint."}]},{"type":"element","tag":"h3","props":{"id":"being-sustainable-without-compromising-quality"},"children":[{"type":"text","value":"Being Sustainable Without Compromising Quality"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But fear not: There is a solution that can get us much closer to being sustainable. We can even keep the same level of quality we have now. In addition to being greener, this solution makes our websites more accessible to people in upcoming markets. The answer is: optimization of image and video delivery. We solve the problem by reducing excess and only loading what is needed in the context of the user."}]},{"type":"element","tag":"h3","props":{"id":"are-we-there-yet-optimizing-media-asset-delivery"},"children":[{"type":"text","value":"Are We There Yet? Optimizing Media Asset Delivery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most traditional CMS systems focus on content editing or cataloguing of content and not on serving of content per se. Serving the content is part of the suite of tools in the platform, but the focus tends to be on other aspects. We call this the “best-of-suite” approach where one vendor deals with all aspects of the website."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nowadays, there are companies that solve specific problems within the eco-system of websites. We call these “best-of-breed” solutions, and they tend to be cloud native SaaS companies. Among these companies, there is a category that only deals with media asset delivery."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Images and videos are particularly hard. If we ask a content editor, filmmaker, or web developer how to optimize assets for the web, they generally do not know. The same goes for the best-of-suite CMS systems. They do not specifically optimize assets for the web—they serve them as is."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This leaves the responsibility to the content editor. We have seen people struggle with photoshop and not know how to optimize an image. Teaching courses and paying for Adobe licenses is commonplace and awfully expensive."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Fortunately, there is a plethora of ways to optimize images and videos for the web—and the SaaS solutions mentioned above take care of the problem for you. They serve assets in the right format for the user’s context (browser, device, resolution). And they reduce the file size with AI to be indistinguishable from the original—doing this by hand as a content editor is impossible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We have had projects where the page weight dropped by 90 percent without loss of quality. Content editors would only upload the original image and the system did the rest."}]},{"type":"element","tag":"h3","props":{"id":"loading-the-right-assets-in-the-context-of-the-user"},"children":[{"type":"text","value":"Loading the Right Assets in the Context of the User"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to serving optimized assets, the most gain is made when not serving them at all. As funny as this may sound, it is the most effective way to have a low-carbon website. If a user never scrolls down or never opens the big mega menu, what is the use in loading these assets in the first place? You should only load assets you know the user will see. We call this “lazy loading,” and it is one of the most powerful tools in the bag of tricks of web developers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to lazy loading, it is also important to load assets in the right context. If a user visits your website on a phone, make sure to load an image with the same resolution the phone has. Loading bigger assets unnecessarily degrades the user experience. It also makes the website have a higher carbon footprint due to excessive file size."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The same goes for file types. If you want an animated background image on the hero banner (we all do), do not use a GIF, but rather a video. GIF’s are about five times as big as videos and tend to not work well on mobile devices."}]},{"type":"element","tag":"h3","props":{"id":"looking-ahead-on-website-sustainability"},"children":[{"type":"text","value":"Looking Ahead on Website Sustainability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We cannot always optimize our web pages according to the best practices for low-carbon websites. This is just the nature of luxury. But we can focus on smaller parts of the equation that have a huge influence on how sustainable the website is. All of this can be accomplished without compromising on quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Look at the future and choose a best-of-breed solution that handles one of the most complex parts of the web: images and media. By combining optimized assets and lazy loading we make our pages lighter. This means they are more accessible to new customers in emerging markets."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And wouldn’t it be nice if content editors did not need photoshop licenses anymore? The overhead of training and the extra process is not worth it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Instead, have your media delivered by a specialized solution—Mother Nature will thank you for having a low-carbon website."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter","depth":2,"text":"If the internet were a country, it would be the world’s sixth biggest polluter.","children":[{"id":"the-luxury-dilemma-the-rich-experience-and-fast-page-loads","depth":3,"text":"The Luxury Dilemma: The Rich Experience and Fast Page Loads"},{"id":"how-to-reduce-carbon-emissions-from-your-website","depth":3,"text":"How to Reduce Carbon Emissions from Your Website"},{"id":"being-sustainable-without-compromising-quality","depth":3,"text":"Being Sustainable Without Compromising Quality"},{"id":"are-we-there-yet-optimizing-media-asset-delivery","depth":3,"text":"Are We There Yet? Optimizing Media Asset Delivery"},{"id":"loading-the-right-assets-in-the-context-of-the-user","depth":3,"text":"Loading the Right Assets in the Context of the User"},{"id":"looking-ahead-on-website-sustainability","depth":3,"text":"Looking Ahead on Website Sustainability"}]}]}},"_type":"markdown","_id":"content:4.writing:make-the-web-greener-luxury-edition.md","_source":"content","_file":"4.writing/make-the-web-greener-luxury-edition.md","_extension":"md"},{"_path":"/writing/my-fitness-story","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"My Fitness Story","description":"From fat and sick to slim and happy Aside from a short period in high school I have always...","id":1406186,"slug":"my-fitness-story","date":"2023-03-18T22:39:46Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86xayxbotaqwk8get75h.jpg","canonical_url":"https://dev.to/timbenniks/my-fitness-story-1p97","tags":["fitness","personal"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"from-fat-and-sick-to-slim-and-happy"},"children":[{"type":"text","value":"From fat and sick to slim and happy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Aside from a short period in high school I have always been a chubby kid. When I lived at home my mom made sure I didn’t go overboard with food. She stopped me here and there when needed and always made sure we had healthy food on the table."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After highschool I started living on my own and became a lot more active as a musician. I got used to a very burgundian lifestyle and started eating all kinds of junk. The free drinks for musicians also didn’t help."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have always been interested in muscles and posture but never had the discipline to change myself into something I liked. I quickly turned into a lazy musician. Beer and fast food, either before or after a gig, were the norm. I didn’t know any better and ate highly refined foods containing a shitload of ingredients with long and incomprehensible names. Looking back it’s unbelievable how little I knew about stuff I put in my body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Being fat was always in the back of my mind and it nagged at me. When I reached 120kg I felt horrible and knew change was needed. I was always sweating, tired and out of breath. I had high blood pressure and was often feeling ill. Diabetes type 2 was creeping up on me."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"fat","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z7h5x2kxppg53w4is65y.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even after this turning point I was still completely inadequate at sports and I didn’t have any discipline. I didn’t even know how to properly contract my muscles to lift something. I had no body sense at all."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I asked my mate "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/chrisfinch","rel":["nofollow"]},"children":[{"type":"text","value":"Chris"}]},{"type":"text","value":" to help me out. He was (is) a complete legend and instantly jumped at the chance to help a friend. We started doing his “half hour of power”, lifted weights and ran as often as possible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Well, I tried."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I had excuses. Many of them. “But I had a gig last night” or “I’m still too sore from last week”. I was a complete pussy and it must have frustrated Chris. But he was strong and pulled me through."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As I finally saw some results I overcame my disciplinary problems step by step. I changed my diet and the fat started coming of quickly. I even gained some muscle."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started researching and a whole world of bro-science opened up to me. I did programs like P90X, 5x5, and 4-hour body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"weightloss","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0wcd7nly7arzfjs9glt.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The thing that helped me most was my Facebook activity. I posted my weight daily. People would respond if it went up or down and it kept me motivated. This was the first time in my life peer pressure actually had a positive influence on my state of mind."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"weightloss","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8oa7r37rqrhgldhtegpd.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"guitars","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4yyrv0qc0q0r59piv0n.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In April 2014 my wife and I moved to Paris. At that point I was vegan for half a year and I was at my lightest weight since I started training. We had to deal with different stress factors when we arrived and I let go of the strict livestyle a little and gained some weight again. The cheese, wine and French baguettes are too awesome not to enjoy. In January 2014 I got up to ~95kg and Paris had officially turned me into a croissant."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But I wasn’t a croissant for long. I started lifting some weights again and slowely started to get back into it. When the marathon passed by our apartment in Rue Saint-Antoine in April 2014 I signed up on the spot. I became a long distance runner over night. New goals were set, and crushed over the proceeding six months."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oph2vujeha2kjojtab6i.jpg","width":1280},"children":[]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"from-fat-and-sick-to-slim-and-happy","depth":2,"text":"From fat and sick to slim and happy"}]}},"_type":"markdown","_id":"content:4.writing:my-fitness-story.md","_source":"content","_file":"4.writing/my-fitness-story.md","_extension":"md"},{"_path":"/writing/new-job-alert","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"New job alert!","description":"After an exciting journey at Uniform, it's time for a new adventure. At Uniform, we thrived during...","id":1569148,"slug":"new-job-alert","date":"2023-08-16T13:42:10Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadfg5ciysfamka395zir.png","canonical_url":"https://dev.to/timbenniks/new-job-alert-443n","tags":["career","webdev","devrel"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After an exciting journey at "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"]},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":", it's time for a new adventure."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At Uniform, we thrived during the pandemic, hiring the best talent remotely and finding success in a new product category. I not only learnt a lot but also created value towards company perception and trust along the way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Inspired by the startup life, I wanted a new challenge at a company further along their journey. "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"]},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" caught my attention with its product-led growth, open source SDKs, solid product-market fit, and strong fit for developer relations."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I'm excited to join Hygraph as the Developer Relations Lead for Outreach and Awareness. With 15 years of agency experience, deep knowledge of the developer space, and connections within the MACH alliance, I'm confident in bringing my skills to this product-led growth company."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Working alongside experienced professionals like "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/bryanlrobinson/","rel":["nofollow"]},"children":[{"type":"text","value":"Bryan Robinson"}]},{"type":"text","value":" (Orbit, Algolia, Sanity) and "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/lowisren/","rel":["nofollow"]},"children":[{"type":"text","value":"Lo Etheridge"}]},{"type":"text","value":" (Sanity, and many other dev gigs), I'll be part of Hygraph's developer relations team within the larger marketing organization led by "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/omergokcetumer/","rel":["nofollow"]},"children":[{"type":"text","value":"Omer Gokce Tumer"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph is at the forefront of the composability and content federation space. They provide a solution to the challenges faced by scaled headless architectures, bringing stability and flexibility. Companies like Netlify, Conscia, and Octoo have embraced Hygraph's approach to content federation, validating the category."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you're seeking content federation at scale, Hygraph has a remarkable head start and addresses the current code-first problems in the MACH architecture space."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I'm eager to get started and can't wait for what lies ahead. See you soon!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Cheers,\nTim"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:new-job-alert.md","_source":"content","_file":"4.writing/new-job-alert.md","_extension":"md"},{"_path":"/writing/the-2015-paris-maratho","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The 2015 Paris marathon","description":"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue...","id":1406188,"slug":"the-2015-paris-maratho","date":"2023-03-18T22:45:48Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furlbqaankzj82uhwrfq7.jpg","canonical_url":"https://dev.to/timbenniks/the-2015-paris-marathon-i0l","tags":["personal","fitness"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue Saint-Antoine. Seeing all these people swooshing by impressed me so much that I signed-up for the 2015 marathon on the spot. The goal was set, the easy part was over."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gu3psk58kwz3gfppsmc8.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I gave myself five months to conquer the beast. 42.195 kilometres. After running on and off for a couple of years it was time to get serious. As I work for AKQA I naturally chose to train with the Nike+ app and all the related products."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nike’s marathon training program was brutal. Even at the rookie level it made me run five times a week from the get-go. After living the good life for eight months in Paris both my endurance and cardio vascular strength were shit. It’s safe to say I was happy that the distances were short for the first couple of weeks."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I didn’t have any specific goals in mind, just general stuff like: “I want to get a bit lighter so the running gets easier” or “I’d love to set a new half marathon personal best at one point”. I trusted the rigorous training schedule would get me there eventually."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It didn’t. The training was so intense that I had skip workouts and I had to start experimenting with food to figure out how I could get my legs ready for the next run. My body could just not cope with the sheer amount of kilometres I had to run each week."}]},{"type":"element","tag":"h3","props":{"id":"january"},"children":[{"type":"text","value":"January"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After two months of pain I had finally found a balance. Turns out that eating super low fat and high carb was the best for my recovery. I was basically eating according to the 80/10/10 principle. 80% carbs, 10% fats, 10% protein. I’m not preaching this way of eating, it was just great for me."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"January","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9z60d58hzj247adpsmsn.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To achieve eating this macro ratio I had to cut out all animal products. If I ate too much fat on a rest day, like when you go out to dinner and you don’t want to be the asshole who can’t eat anything, I would have heavy legs the next day."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started eating copious amounts of fruit, rice, pasta, quinoa and veggies. My brain started functioning ten times better and I didn’t even think about coffee anymore. January was awesome. I ran pain free and the long distances started to become enjoyable. Good times. I ran 147km that month. This might not seem a lot to seasoned runners but I came from ~50km a month. I started a new chapter in my running career."}]},{"type":"element","tag":"h3","props":{"id":"february"},"children":[{"type":"text","value":"February"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We went on a ski trip in the beginning of February. I was an amazing holiday with loads of skiing, good food and laughs. I did some workouts in the gym and a proper mountain walk. I really hoped I hadn’t lost my running gains."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"February","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etfg0xoxax0zbyzrmcig.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first Monday back I had a nasty cough but decided to at least try my fast 8km run I had planned for that day. Bad decision. Over the course of the week I developed a bronchitis and both the doctor and my wife (the boss and a bad ass physiotherapist) forbade me to run the following two weeks."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I slept a lot and kept on eating well and as soon as the illness lifted I started running short distances again. I cursed my way through the first week. Even though the running hurt, my pace was still fast."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In February I ran the awesome amount of 37.98km over five runs. The last of the five was the most painful 15km run of my life. We’d strolled around “Le Salon d’Agriculture” for three hours before. We tasted wines and tried cheeses. I had forgotten to drink any water. Rookie mistake. Lactic acid legs for days!"}]},{"type":"element","tag":"h3","props":{"id":"march"},"children":[{"type":"text","value":"March"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Back to awesome. I ran 181km in 4 weeks. An absolute record month in my book. I had an amazing run in Amsterdam on which my whole family followed me by bike. I also ran personal bests on the 5km, 10km, 15km and 21km. I decided to drop the Nike+ program as I had missed too much the month before. This was a smart move. The Nike+ program would have burnt me out."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I had been in training for 4 months by now and I had been sick the month before. The exhaustion was setting in a bit. I didn’t particularly feel it in my legs, but I started having problems staying focused on evening runs. One time I had to jump aside while a policeman was arresting someone. I flipped my ankle and had to walk home for an hour."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"March","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r8u4pxda4nalwwa4x0o.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I felt stupid for being distracted. Even though I had super light shoes without much cushioning I stopped being in touch with the ground I was running on. Sounds like I’m a hippy aye? It’s a runners thing."}]},{"type":"element","tag":"h3","props":{"id":"april"},"children":[{"type":"text","value":"April"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Only two weeks left. I did a 27km run in a very busy, rainy and hilly Paris. After that I was so exhausted that I decided to start my tapering period a week early. I thought I’d hurt my feet too much and suddenly got very nervous. My marathon veteran colleagues told me this is normal and I should just chill out."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I only ran a handful of runs up until the big day. The thing I liked most about the tapering period was the carbo-loading. My food intake doubled in the week before the big race. #CTFU. I felt amazing and started dropping weight. I should have eaten much more the past four months."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"April","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4p4xky34q3vxlhfcgfg6.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"d-day"},"children":[{"type":"text","value":"D-DAY"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I was so nervous I hardly even looked at the enormous amount of runners around me. I was standing on the Champs-Elysees with 50.000 other athletes. This was going to be the most epic challenge of my life."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"D-DAY","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qsgkyqt7mudojkqok6z.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first bit felt like heaven. Especially because my mate "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/chrisfinch","rel":["nofollow"]},"children":[{"type":"text","value":"Chris"}]},{"type":"text","value":" had just given me an amazing pep-talk over the phone. The Champs Elysees was mine and mine alone. Turns out I clocked the first kilometre at a 6:12 pace. Slow as fuck but a nice start to a long day. After that I slowly picked up the pace to a nice average between 5:25 and 5:35."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Around the 7km point my awesome friend "},{"type":"element","tag":"a","props":{"href":"https://www.instagram.com/henrike.theda.klug/","rel":["nofollow"]},"children":[{"type":"text","value":"Henrike"}]},{"type":"text","value":" spotted me from the sidelines and joined me for about 1.5km. We picked up the pace and race had properly started."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It was super warm so I drank water every chance I got. My training had been during winter time so I was used to running with a maximum temperature of 10 degrees celcius. Even though it was warm I ran a great half marathon (for me at least, 01:52:34)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The heat had silently sneaked up on me and at kilometre 22 the wall hit me like a hammer."}]},{"type":"element","tag":"h3","props":{"id":"the-wall"},"children":[{"type":"text","value":"The Wall"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The wall is really the biatch people say she is. I could not even put one foot in front of the other anymore. It took me half an hour to stumble to the next food station. It took 35 minutes to run 3km. I had some water, a sugar cube, a GU gel and a slice of mandarin. Obviously this was way too much so I felt sick for the next 5km. My brain was telling me to stop but I just couldn’t let go."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the following kilometres it didn’t get any better. I managed to find a happy medium in between running and walking. My nike+ app was all over the place and wasn’t accurate at all anymore. At one point I just turned it off and upped my Spotify volume. The next song was by Motörhead and I felt my heart skip a beat. The race was back on.For 2km.After that I went back to my previous state."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"During the five months I trained my wife had always been there for me. She gave me tips and picked me back up when I had hit a low point. When I saw her at kilometre 30 I couldn’t be happier. I gave her a quick kiss and a smile and I was on my way again."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Just before hitting the Bois de Boulogne I became captain slow. I was having a real rough patch when I heard people shout my name. These people were "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/photo.php?fbid=10153775712979392&set=a.10151354689589392&type=1&theater","rel":["nofollow"]},"children":[{"type":"text","value":"Marie and her son Adrian."}]},{"type":"text","value":" It’s great to have the support of your friends. It made me start running again. As it turns out, my wife had been sending loads of photo’s to my family back in Amsterdam. They had been following my every move."}]},{"type":"element","tag":"h3","props":{"id":"bois-de-boulogne"},"children":[{"type":"text","value":"Bois de Boulogne"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Bois de Boulogne was truly intense. They call it “the march of the death” and rightfully so. It starts at kilometre 35, there are hardly any supporters and it’s mostly uphill."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I did the “pain shuffle” for the last 7km. The pain shuffle means that you can’t really bent your legs anymore but you still run. In my case, stumbling without falling. I ran from km sign to km sign without even hearing my music."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When I saw the 40km sign I decided to not walk anymore and I did whatever it took to make that happen. At kilometre 41 I noticed that a lot of the faster runners were coming back to show us their medals and cheer us on. There was an amazing feeling of companionship in the pack of runners."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At kilometre 42 I saw the finish AND my wife at the same time. It was finally over. I didn’t even bother to sprint."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It took me four hours and forty six minutes. A total pain train. While riding home on the metro I felt a little shit because I walked so much. Should I have gone deeper? But while writing this piece, pride is taking over. I actually did this. My first marathon in the heat in under five hours. #putain."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"finisher","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdxzyzf1wztrl220nwa4.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"some-numbers"},"children":[{"type":"text","value":"Some Numbers"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ran 615.14km over 67 runs with an average pace of 05:42"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average distance was 9.18km per run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I went from 95 to 86.7 kilos (and lost all gains)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I slept 7h 50m a night on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ate 1840kcal a day on average (probably not enough)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I took 12609 steps a day on average"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"january","depth":3,"text":"January"},{"id":"february","depth":3,"text":"February"},{"id":"march","depth":3,"text":"March"},{"id":"april","depth":3,"text":"April"},{"id":"d-day","depth":3,"text":"D-DAY"},{"id":"the-wall","depth":3,"text":"The Wall"},{"id":"bois-de-boulogne","depth":3,"text":"Bois de Boulogne"},{"id":"some-numbers","depth":3,"text":"Some Numbers"}]}},"_type":"markdown","_id":"content:4.writing:the-2015-paris-maratho.md","_source":"content","_file":"4.writing/the-2015-paris-maratho.md","_extension":"md"},{"_path":"/writing/the-content-graph-is-the-future","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The content Graph is the future","description":"Content management is as essential as it is complex, especially at scale. As brands grow, they often...","id":1683758,"slug":"the-content-graph-is-the-future","date":"2023-12-05T10:40:00Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ilcbgm74yygk14s4g7.png","canonical_url":"https://hygraph.com/blog/the-content-graph-is-the-future","tags":[],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph."}]},{"type":"element","tag":"h2","props":{"id":"the-emergence-of-new-buzzwords-best-of-breed-and-composable"},"children":[{"type":"text","value":"The emergence of new buzzwords: best-of-breed and composable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you want to learn more details about industry buzzwords, check out this "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords","rel":["nofollow"]},"children":[{"type":"text","value":"blog post"}]},{"type":"text","value":"."}]}]},{"type":"element","tag":"h2","props":{"id":"its-not-all-sunshine-and-rainbows"},"children":[{"type":"text","value":"It’s not all sunshine and rainbows"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Composable challenges","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgy63rwzc7dm5mnmk9wl.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"introducing-the-content-graph"},"children":[{"type":"text","value":"Introducing the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"The Contwnt Graph","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qngsih12lys9s6yww0j.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-benefits"},"children":[{"type":"text","value":"The benefits"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use these one-liners when you talk about this subject to your boss."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"With the content graph, you query only what you need from any source and in the same unified way."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple."}]}]},{"type":"element","tag":"h2","props":{"id":"challenges-and-considerations"},"children":[{"type":"text","value":"Challenges and considerations"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph."}]},{"type":"element","tag":"h2","props":{"id":"the-tech-behind-the-content-graph"},"children":[{"type":"text","value":"The tech behind the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it."}]},{"type":"element","tag":"h2","props":{"id":"a-real-life-use-case-for-the-content-graph"},"children":[{"type":"text","value":"A real-life use case for the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-emergence-of-new-buzzwords-best-of-breed-and-composable","depth":2,"text":"The emergence of new buzzwords: best-of-breed and composable"},{"id":"its-not-all-sunshine-and-rainbows","depth":2,"text":"It’s not all sunshine and rainbows"},{"id":"introducing-the-content-graph","depth":2,"text":"Introducing the content graph"},{"id":"the-benefits","depth":2,"text":"The benefits"},{"id":"challenges-and-considerations","depth":2,"text":"Challenges and considerations"},{"id":"the-tech-behind-the-content-graph","depth":2,"text":"The tech behind the content graph"},{"id":"a-real-life-use-case-for-the-content-graph","depth":2,"text":"A real-life use case for the content graph"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:the-content-graph-is-the-future.md","_source":"content","_file":"4.writing/the-content-graph-is-the-future.md","_extension":"md"},{"_path":"/writing/the-future-of-headless-cms-content-federation-with-graphql","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of headless CMS: Content Federation with GraphQL","description":"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing...","id":1614623,"slug":"the-future-of-headless-cms-content-federation-with-graphql","date":"2023-09-28T14:39:16Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pk8b2ihfddxqlt3w4tu.jpg","canonical_url":"https://hygraph.com/blog/content-federation-with-graphql","tags":["headless","cms","graphql","federation"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing amount of fragmentation in tooling, it offers a way to decouple data and systems, giving organizations more flexibility and agility."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Despite the promise of headless architecture, data, and systems easily become tightly coupled. Whether through custom middleware or frontend stitching, one system can have ripple effects on all others. This can make it difficult to manage and update content and causes technical debt. In the past, I called this the"},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/","rel":["nofollow"]},"children":[{"type":"text","value":" MACH Monolith"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A federated architecture, on the other hand, truly decouples data and systems. Federation is a technique of using autonomous systems to work with the data and logic they’re best suited for. What differentiates that from the MACH Monolith is how the data comes back together. Federation takes these autonomous services and crafts a unified, standardized, and powerful API for use in any application."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While there are many patterns for accomplishing federation, one architecture is Content Federation. Content federation is the process of bringing together content from multiple sources into a single, unified view that can be accessed both at the API layer, as well as at the editor level."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In a federated architecture, the content federation layer brings together content from the different systems. This layer acts as a single point of access for data, making it easy for users to get the content they need, regardless of where it is stored."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A few benefits of a federated architecture include:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increased flexibility and agility: Each system is responsible for its data and logic, which gives them more autonomy and flexibility. This makes it easier to manage and update systems and makes it easier to add new systems to the architecture."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Improved security: A federated architecture can reduce the attack surface. When data and systems are tightly coupled, a vulnerability in one system can compromise other systems. A federated architecture reduces the risk of this happening by decoupling data and systems."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reduced complexity: A federated architecture can simplify how data is managed. In a traditional architecture, data is often stored in multiple systems, making it difficult to keep track of. A federated architecture brings together data from different systems into a single, unified view, which makes it easier to manage, inspect, and use data. The implementation layer has one standardized, unified way to ask for the content."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Overall, a federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Federated Content Platform","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/4wC9B4MBSaZDeQvB26QA","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-importance-of-autonomy-in-a-federated-architecture"},"children":[{"type":"text","value":"The importance of autonomy in a federated architecture"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While most federation articles focus on the benefits of unification, system autonomy is really the key benefit. This autonomy means that systems can be developed and managed independently without worrying about the other systems in the architecture. This can be a major advantage, as it allows organizations to be more agile and responsive to change while still maintaining standards."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This enforced autonomy increases the reach of standardization. In an e-commerce application, product information — pricing, description, categorization — should be standardized wherever it’s used. Without Content Federation, the product data would be re-entered in the systems that don’t house it. When an editor of the blog goes to create a post about a product, they introduce the human potential for error. If they merely select a product from the e-commerce system, they can rely on the owners of that data to keep their data standardized."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When the standards for a particular piece of data changes, the data is changed in the home system, and each other system is ready to receive that change. No additional work necessary."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security. Federation brings autonomy to the data layer while also giving rise to a unification layer Content Federation brings a deeper sense of standardization through systemic change instead of human change. Without autonomy, we have complexity; without unification and standardization, we have glue code. We need both in the modern stack."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-importance-of-autonomy-in-a-federated-architecture","depth":2,"text":"The importance of autonomy in a federated architecture"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-headless-cms-content-federation-with-graphql.md","_source":"content","_file":"4.writing/the-future-of-headless-cms-content-federation-with-graphql.md","_extension":"md"},{"_path":"/writing/the-future-of-jamstack-is-composable","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of jamstack is composable","description":"This post is either for developers who want an “at-scale” overview of modern architecture or for...","id":998786,"slug":"the-future-of-jamstack-is-composable","date":"2022-02-23T13:04:08Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso0lvl9w5rea6i7sfp6u.jpeg","canonical_url":"https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g","tags":["jamstack","architecture","composable","orchestration"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This post is either for developers who want an “at-scale” overview of modern architecture or for technical decision-makers looking at a great way to build a digital pipeline in this new composable world."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire."}]},{"type":"element","tag":"h2","props":{"id":"in-this-article"},"children":[{"type":"text","value":"In this article"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Use the Jamstack with your favourite framework and host on your favourite CDN."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Combining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future."}]},{"type":"element","tag":"h2","props":{"id":"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures"},"children":[{"type":"text","value":"The Jamstack: why it sits front and centre in modern architectures"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sites built with the Jamstack approach are a combination of static files generated by the CI/CD pipeline of your choice. Most dynamic stuff happens in the generation step, where the codebase reaches out to APIs and services to render all pages statically."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Jamstack: build time vs runtime","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpp5kpu4k3wxs91wne0b.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The performance gains alone justify this approach. There is no runtime page generation, and the app doesn’t have to connect to an origin server to figure out what content to serve. If you want to scale up for Black Friday, just put the static files in more places on the CDN edge, and all is well. Next to the performance gains, you also have a much more secure system. If your architecture has an origin server with all the knowledge of the system, that is a weak point for security."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Traditional web vs Jamstack","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp86io6058n938u4dw70.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can add dynamic data as well. CDN providers have built the ability to run code on the edge, implementing serverless functions and edge workers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A serverless function is a service that lets you run code without provisioning or managing servers. Serverless functions tend to be simple and do not have a state. They require an input, and they will give an output. After use, they will not stay up unless you request them to do that. The benefit is that the cost is low and that these functions are not running if not needed - consuming less energy. You can use them when compiling your Jamstack site, but they also work well at runtime."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Edge workers (as Cloudflare calls them) are pieces of code that live on the CDN edge close to the user and execute when a user visits a URL. This is ideal for reading cookie values and changing the stream of HTML that the CDN renders for that page. With this approach, you can dynamically manipulate what the user sees in their context while still serving a static page initially created by your Jamstack site. This approach is excellent for rendering personalised content based on user actions without the need for JavaScript hydration or an origin server."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Add dynamic parts to the Jamstack with serverless and edge compute","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfn819631e7mvnau8mwl.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-orchestration-how-to-cable-manage-your-architecture"},"children":[{"type":"text","value":"The orchestration: how to cable manage your architecture"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How you connect things up before the site is rendered is vital for the platform you are building. There are many technical and organisational problems to address when you scale a composed architecture to big organisations."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Choices, choices, choices: CMS, Commerce, CDN, Marketing clouds, DAM, Personalization, A/B testing, CRM, etc."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration is complex, and orchestration is hard to build."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Often there is a lack of intuitive tools for non-devs to build and manage experiences."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Early implementation decisions can limit the ability to change and evolve."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Wrong choices can create developer bottlenecks and hinder time to market and agility."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The bigger the organisation, the more critical this statement becomes: "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"To achieve true value, you need to orchestrate technology, people, and processes."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The digital pipeline can be stalled at many places. You’ll need a platform to help you orchestrate the whole architecture into a usable system for all stakeholders. A cohesive system has the ability for multiple systems to work together as one - for each system to have an awareness of what the other systems are doing. This same story goes for the practitioners in the system. From developers to content editors and from marketers to data analysts. All these people play a vital role in your online success."}]},{"type":"element","tag":"h3","props":{"id":"the-platform-we-need"},"children":[{"type":"text","value":"The platform we need"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The platform we need has to be “opinionless” and technology agnostic. Its primary goal is to cater to all stakeholders and prevent re-platforming."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Services integrators or agencies often use the “re-platform” model. Out with the old monolith and in with the new monolith. This way, they can sell their business transformation story and do a big bang release. The drawback here is that re-platforming takes a long time and is costly. It is also the complete opposite of an agile approach to a project. Agencies tend to be \"platform partners\" and sell in a platform first solution rather than a specific value solution to a brand. This is logical as they can hire specialists that retain their value project after project. However, modern architectures demand making choices for the business's needs, not what the agency or software vendors want to sell in. Square pegs and round holes could work for a while until it’s too hard to manage, and then you re-platform. Again…"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The orchestration platform should support end-to-end delivery of digital products:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Development"}]},{"type":"text","value":": developers build components that incorporate content from multiple sources without building custom integrations."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Authoring"}]},{"type":"text","value":": practitioners build personalised digital experiences using no-code tools, including instant preview without involving developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Deployment"}]},{"type":"text","value":": developer and practitioner activities automatically trigger deployments to your CDN of choice to ensure digital experiences are always current."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Delivery"}]},{"type":"text","value":": Personalization and experimentation is delivered from the edge for the fastest possible performance."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The key is the “power of choice” for the tech stack, hosting / CDN, data fetching and what integrations are used. The point is that you as a technical stakeholder can choose when to add, remove or scale something without being held back by the system. There is no vendor lock-in, roadmap constraints, and re-platforming (swap an integration, migrate the data, and change some data mapping code)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"What a composable orchestration platform looks like","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvs9u5inctpg4f7iiu9h.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"data-fetching-approaches"},"children":[{"type":"text","value":"Data fetching approaches"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flexibility in how data is fetched from different sources is vital for the longevity of an orchestration platform. The platform SDK should not apply any opinion on how data is fetched. It offers an SDK that helps developers fetch it the way they want."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s essential that page compositions only point to data sources and that the platform itself does not store anything except for the identification of the component it references. The benefits are:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t store potentially sensitive data;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t duplicate content;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t have to know when data changes in the external source;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The platform does not have to serve the data and ingest the SLA provided by the source data it delivers."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s up to the developer to use the platform SDK to retrieve the compositional data and use platform provided helper tools to query the different API endpoints. The beauty of this approach is that the SDK and how the data is fetched can live anywhere. From the local codebase to an external middleware layer or a serverless function. There are some benefits to positioning the data fetching outside of your codebase:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You can hire separate developers who only focus on the API and the data mapping to the desired format. This separates concerns between disciplines, and back-end developers now have a place where they can feel at home."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The front-end application doesn’t need to know what external sources are queried. It queries one endpoint that returns the desired format for the front-end components to render."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A standalone front-end without knowledge of what external APIs feed it is highly flexible, future-proof, and hard to hack. Imagine a design system full of components with excellent documentation of what properties they need and a simple SDK to query data and map it directly to these properties. If you have to switch CMS or commerce engine, it’s a matter of remapping the data to the component properties and you are done."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data fetching in a composable orchestration platform","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u75kbivciz0ayqg3t7fd.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"concluding"},"children":[{"type":"text","value":"Concluding"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To successfully manage your digital pipeline, we need orchestration that adds structure to the stack, making it easier to align API first sources toward the same business goal and empowering all of the various teams contributing to the end product - developers, content authors and marketers. To keep the digital pipeline productive as new technologies emerge, you need orchestration that gives freedom of choice in every aspect of the architecture both today and tomorrow."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Imagine if marketers and developers could be friends again and work together to create the best experience for their website visitors?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"in-this-article","depth":2,"text":"In this article"},{"id":"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures","depth":2,"text":"The Jamstack: why it sits front and centre in modern architectures"},{"id":"the-orchestration-how-to-cable-manage-your-architecture","depth":2,"text":"The orchestration: how to cable manage your architecture","children":[{"id":"the-platform-we-need","depth":3,"text":"The platform we need"},{"id":"data-fetching-approaches","depth":3,"text":"Data fetching approaches"}]},{"id":"concluding","depth":2,"text":"Concluding"}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-jamstack-is-composable.md","_source":"content","_file":"4.writing/the-future-of-jamstack-is-composable.md","_extension":"md"},{"_path":"/writing/the-future-of-managing-projects-at-agencie","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of managing projects at agencies","description":"Calling for a revolution in how agencies run tech projects I spent a lot of time working...","id":1405725,"slug":"the-future-of-managing-projects-at-agencie","date":"2023-03-18T12:56:10Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipu6a76iegjp4d19mb0u.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/the-future-of-managing-projects-at-agencies","tags":["composable","architecture","agency","process"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"calling-for-a-revolution-in-how-agencies-run-tech-projects"},"children":[{"type":"text","value":"Calling for a revolution in how agencies run tech projects"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I spent a lot of time working through messy production processes during my years at digital agencies. From single campaigns to building 800+ websites for a brand and its sub-brands, easier processes would have been better for the final result and my hairline. I’m so excited to work with new technology that will change the game for managing agency processes—making everything from delivery to collaboration much easier and faster."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have no illusions that I can fix everything—but I hope that you read this with an open mind and see that a better way is possible. Agency processes are ever-changing, and things always seem to fall apart as deadlines near. Nonetheless, by following what I describe below, you can deliver faster from day one and show results to clients for better feedback, all while setting up brands with a future-proof architecture. And yes, you can stay agile at the same time!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Why agencies embracing composable architectures face challenges"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Agencies that start working with "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architectures"}]},{"type":"text","value":" quickly see the benefits during the pitch stage, but when the work starts, so do the problems—mainly when you connect services and when content editors or marketers start working. Because projects are complex, agencies generally sell discovery phases, workshops, and agile methodologies. That’s a great practice, but one that also runs face-first into the challenge of building composable projects at scale."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here are two key issues:"}]},{"type":"element","tag":"h3","props":{"id":"the-way-agencies-work-makes-parallel-collaboration-difficult"},"children":[{"type":"text","value":"The way agencies work makes parallel collaboration difficult."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, choosing a CMS or front-end framework depends on the discovery phase or finalization of a client contract. When a CMS or a design is ready, front-end developers can start building the interface, and back-end developers can commence data modeling. QA always happens at the end, inevitably spilling over into the next sprint."}]},{"type":"element","tag":"h3","props":{"id":"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way"},"children":[{"type":"text","value":"The architecture is code-first, i.e., composed of glue code that works in only one way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As you scale that up, things get very painful very fast. "}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Abstract, code-first systems aren’t built for content editors. At best, they tolerate them. Given that it’s hard to deliver great work while constantly fighting with your own tools, people become upset and less productive, or they leave. Either result can cause major project delays."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers are constantly involved with the publication process because content editors need technical support to create experiences. That means that developers are kept from building new, value-adding features and pursuing innovation, and every sprint is filled with unpredictable disruption."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A tech stack connected through tightly-coupled integration code is way worse than the legacy monoliths. If things go wrong, no sole organization is at fault. Instead, the people with the overall responsibility—the agency—are held accountable."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"That glue code I mentioned before? It sticks "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"hard"}]},{"type":"text","value":". You must prepare for pain when you try to replace a single headless source in a web of hard-integrated sources and front-end code. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There is a better way, but it requires a major shift in your thinking."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How a great DXCP unlocks parallel workflows"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Time-to-value is much more critical than time-to-market. Going to market quickly with a terrible product doesn’t do much more than damage your reputation and annoy customers. The fact you least did it quickly won’t be much consolation to anyone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The secret for time to value is working more in parallel. Of course, that’s much easier said than done for difficult tasks like ideation of page composition, component definition, data-model design, CI/CD setup, and, concurrently, choice of the front-end framework. Fortunately, cool new tools are around to make it much easier. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To work in parallel, first, integrate design-related data into your process with a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":". Design data presents your content in a certain way in the context of each page and potentially for each audience. For example, a featured product shows as being featured because you tell the page to feature it in that specific way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On the other hand, the product data comes from your commerce engine, which just serves the product info and has no knowledge of whether the product is featured on a page. The DXCP orchestrates and links your design to the external source(s) that hold your data. This crucial context step allows you to work effectively in parallel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note the difference between domain data and design data. With a DXCP, you design pages based on the components that make up a page. You can link each component to a resource, i.e., an external API like a headless CMS, DAM, PIM, or a legacy system. Your domain data resides in those systems. You then bind the external API data to parameters and fields on the components in the DXCP to create the final experience for your audience on a channel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can set up connections with DXCP so that the system acts as an API data aggregator that loosely couples to external sources. Additionally, you can establish access rules that define which users can add resources and bind to components. For example, content editors could add the Instagram API and feed that data to a component for campaign pages without developer assistance. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once resources are bound, API results are cached at the CDN edge for fast and easy querying. Developers only need to connect to the CDN endpoint to access the data from all the sources that channel data to the components on the page."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even without a CMS, content editors can fill in the component fields with content, accelerating the UX and prototyping phases of a project. Once a CMS is in place, the content connects as a resource to a component without the need to rebuild the component. For efficiency, you can configure the fields to be dynamic. No coding is required."}]},{"type":"element","tag":"h3","props":{"id":"how-a-dxcp-enables-parallel-collaboration"},"children":[{"type":"text","value":"How a DXCP enables parallel collaboration"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you know what kind of components you need or have a library like "},{"type":"element","tag":"a","props":{"href":"https://www.kickstartds.com/","rel":["nofollow"]},"children":[{"type":"text","value":"kickstartDS"}]},{"type":"text","value":" or "},{"type":"element","tag":"a","props":{"href":"https://tailwindui.com/","rel":["nofollow"]},"children":[{"type":"text","value":"Tailwind UI"}]},{"type":"text","value":", you can configure them in the DXCP and start composing pages—with no need for a CMS initially. Simultaneously, the back-end team can select the headless tool while the front-end team can choose a front-end framework and start querying the composed pages. The QA team can start testing the front end as soon as the first few pages have been created with the component library."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Since the DXCP does not dictate what kind of hosting or CI/CD stack is needed, the DevOps team can work on the setup while the rest of the process is proceeding. Once you install the CDN integration, anyone with the appropriate access privileges can handle releases. Can’t find the prebuilt integration? Build your own, or just add a few webhooks for communication."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On top of that, DXCPs also feature a project map as a basis for creating pages and subpages. The product owner can start building user journeys in the same system while all the other operations are going on. Say goodbye to journey spreadsheets because you can now use the tool you will also use when teh project is in production."}]},{"type":"element","tag":"h3","props":{"id":"how-to-ensure-the-architecture-is-divisible-and-maintainable"},"children":[{"type":"text","value":"How to ensure the architecture is divisible and maintainable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Due to the nature of DXCP, you don’t need to interconnect external tools; they all talk directly to the DXCP. Likewise, changing or adding headless sources does not affect developers in nearly the same way. Without developer involvement in the no-code editor, universal previews, and project maps, content editors are much more productive. Business users don’t need to ‘publish and pray’ when they build a page from multiple sources—it’s all right there."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, since the no-code editor integrates flawlessly with external sources and normalizes their interfaces, content editors don’t need to understand how those systems work—making it far easier to onboard new team members. Add that to the freedom of grouping components together and easily personalizing those sources; business users are empowered to own their workflows and results without depending on overworked devs. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given that DXCP is front-end, hosting, and CDN agnostic, developers can use the tools they love, which makes the most sense for the job at hand. No more compromising with the whims of legacy tech! Even though DXCP has an opinion on the direction of the architecture, once developers go down that road, they have complete freedom to do their job in the way they prefer."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How DXCP transforms the project-development process"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Adopting DXCP can revolutionize how you build projects—if you let it. With traditional blockers out of the way, teams can accomplish more in parallel and show value much faster. For all that composable architecture at scale is generally messy and chaotic, forcing agencies and brands to work around issues never seen before: digital experience composition adds structure while staying tech-agnostic and accelerates time-to-value."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter how much things change, some things stay the same. The agencies that best embrace new technologies and new mindsets to maximize their impact will gain an edge in the market. As the market gets less certain, finding ways to deliver more value for clients faster and effectively showcase it will be crucial. When that also creates a platform that will deliver in the long term and position your agency as a key strategic partner—that’s where the magic happens. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"calling-for-a-revolution-in-how-agencies-run-tech-projects","depth":2,"text":"Calling for a revolution in how agencies run tech projects","children":[{"id":"the-way-agencies-work-makes-parallel-collaboration-difficult","depth":3,"text":"The way agencies work makes parallel collaboration difficult."},{"id":"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way","depth":3,"text":"The architecture is code-first, i.e., composed of glue code that works in only one way."},{"id":"how-a-dxcp-enables-parallel-collaboration","depth":3,"text":"How a DXCP enables parallel collaboration"},{"id":"how-to-ensure-the-architecture-is-divisible-and-maintainable","depth":3,"text":"How to ensure the architecture is divisible and maintainable"}]}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-managing-projects-at-agencie.md","_source":"content","_file":"4.writing/the-future-of-managing-projects-at-agencie.md","_extension":"md"},{"_path":"/writing/the-lost-promise-of-headless","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The lost promise of headless","description":"In recent years, headless technology, which boosts performance, developer experience, and...","id":1517485,"slug":"the-lost-promise-of-headless","date":"2023-06-26T18:18:19Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrvfb6a8wh5lt0mbyzat.png","canonical_url":"https://uniform.dev/blogs/the-lost-promise-of-headless","tags":["headless","architecture","mach"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In recent years, headless technology, which boosts performance, developer experience, and best-of-breed headless systems, has gained significant traction in web development. At its core, headless streamlines and accelerates the process of building and delivering web experiences  through APIs, which separates content creation and management from presentation. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, despite the excitement and promise, headless technology has fallen short in living up to its potential in several key areas."}]},{"type":"element","tag":"h2","props":{"id":"technical-complexity"},"children":[{"type":"text","value":"Technical complexity"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The primary appeal of headless technology lies in decoupling content creation and presentation, as a result of which developers can work on the presentation layer with their preferred tools and frameworks while content editors can focus on building and managing content. However, that separation comes at a cost. Specifically:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To connect the multiple layers, a significant amount of code must be written, which leads to technical debt, a heavier workload, and inflexibility. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Adding data to content models to address design-driven choices for an output channel, e.g., checkboxes to enlarge an image, pollutes the data model. The more design-related and channel-specific data you add to content models, the more technical debt you create."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"If you must connect a different data source to the same front-end component, but the content models do not align, issues arise. "}]}]},{"type":"element","tag":"h2","props":{"id":"content-editing-challenges"},"children":[{"type":"text","value":"Content-editing challenges"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another major challenge with headless technology is the disconnect between content editors and the systems they work with. Due to the abstract nature of headless CMS, content editors often struggle to pinpoint how their content will be displayed on the front end, leading to confusion, frustration, and a steep learning curve for novices."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, the lack of a clear connection between content and presentation makes it difficult for content editors to preview their work and ensure that it looks and functions as intended. A suboptimal user experience results, let alone a time sink for revisions and troubleshooting."}]},{"type":"element","tag":"h2","props":{"id":"the-way-forward-dxcp"},"children":[{"type":"text","value":"The way forward: DXCP"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Without question, despite the promise of headless technology for revolutionizing the way we build web experiences, serious hurdles remain. To overcome them, tools and processes that facilitate team collaboration and streamline the development process are necessary so that developers and content editors can work closely together to bridge the gap between content creation and presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A proven solution is a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":", which seamlessly integrates content and presentation. While on that platform, nondevelopers can visually create and manage digital experiences with content from multiple sources, delivering those experiences agnostically to a front-end of choice, significantly reducing technical debt, and gaining flexibility. Businesses can then adapt and innovate much faster, especially since the connection to all headless systems and APIs occurs in the DXCP, and the code remains clean."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What’s more, the incorporation of a DXCP into the development process affords content editors a clear view of how their content will be displayed and the ability to interact with the presentation layer. Plus, the absence of data silos means a more streamlined and efficient workflow as well as a more intuitive user experience for both content creators and developers."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"technical-complexity","depth":2,"text":"Technical complexity"},{"id":"content-editing-challenges","depth":2,"text":"Content-editing challenges"},{"id":"the-way-forward-dxcp","depth":2,"text":"The way forward: DXCP"}]}},"_type":"markdown","_id":"content:4.writing:the-lost-promise-of-headless.md","_source":"content","_file":"4.writing/the-lost-promise-of-headless.md","_extension":"md"},{"_path":"/writing/the-mach-monolith","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The MACH monolith","description":"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take...","id":1399535,"slug":"the-mach-monolith","date":"2023-03-13T20:20:45Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdj396fv4iyh8zce4rsg.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/the-mach-monolith","tags":["architecture","composable","webdev","javascript"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take action. Now that everybody is jumping on the bandwagon, interesting developments have surfaced: Traditional monoliths have adopted new messaging with the terms “composable” and “headless” in it, and headless systems are integrating more monolithic-like features. Meanwhile, at a loss as to what to do to ensure that their architecture is scalable, secure, and future-proof, brands make decisions out of sheer FOMO. All that has created the beast I call the MACH Monolith."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The MACH approach for building digital architecture is the way to go, and it can be an amazing journey. However, you must apply the MACH principles correctly. This article explains what that means."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We can agree on one thing: web development is complex, hence the word "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"development"}]},{"type":"text","value":". For years, software vendors tried to simplify the job by creating suites with all the features businesses would need, from front-end accelerators to editing capabilities for rich content. Such an approach of having one platform to tackle all digital-business challenges worked pretty well."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, drawbacks do exist. For one thing, businesses must buy into how the suite is developed as a product. Additionally, they’re stuck with vendor lock-in and dependent on the suite’s roadmap, which holds back innovation and causes developers to break out of the system with customization. When updates are necessary to the underlying monolith, the architecture becomes flawed."}]},{"type":"element","tag":"h2","props":{"id":"a-paradigm-shift"},"children":[{"type":"text","value":"A paradigm shift"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The general mindset in web development is that even though everything is headless and API-first, we are still operating in the “suite” paradigm. Even the technical people who tried to break away from the monolith approach in the recent past still have that frame of mind. Paradigm shifts take time, and we are currently in the middle of one."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In today’s composable world, where architectures are crafted with best-of-breed tools, we must recognize the fact that no software can take the sting out of the challenges involved. Reality is, no full-chain covering pieces of software exist in the SaaS world even though that’s a bitter pill to swallow because that’s what we were used to with suites."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hence, the suite approach continues to predominate, and people often tend to adopt that even while designing a modern composed architecture. As reflected across disciplines, such a practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures. Let’s talk about how the MACH monolith surfaced."}]},{"type":"element","tag":"h2","props":{"id":"monolith-like-features-from-headless-first-products"},"children":[{"type":"text","value":"Monolith-like features from headless-first products"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Because only techies like the headless space, the market doesn’t seem ready to fully embrace API-first designs and composable architectures. After all, APIs are techspeak, and since architectures are created with a tech hat on, the experience is unfriendly to practitioners like content editors and marketers. For details on this phenomenon, see this "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/digital-experience-composition-dxc/tame-the-martech-chaos-with-dxc-and-mach","rel":["nofollow"]},"children":[{"type":"text","value":"article"}]},{"type":"text","value":" on orchestrating MACH architectures."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also, because headless systems are built by and for techies, API-first products are ahead of their time with no connecting mechanism for the composing elements to benefit all stakeholders. A way to resolve that is described later in this article."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid losing market share, headless systems must have the following features to become more usable to practitioners:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration fields into the CMS and other headless systems, e.g., search, DAM, PIM, commerce, CRM, and personalization, to unify the editing experience and offer a singular API for developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An ability to preview functionalities, tightly coupling the front end to the preview SDK of the CMS."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An ability to compose pages inside the CMS data model to add contextualized data for compositions to the clean data model of the CMS content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Routing and sitemap-related content mapping in the CMS that gives practitioners a clear overview of the system."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"All those features put the CMS in the center of the universe of digital architecture. Questions come to mind, however:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you have multiple CMS systems?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you want to switch your commerce engine but it’s tightly coupled to the CMS?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you'd like to switch to another CMS?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you must add another channel like a TV app, yet the data models with desktop presentational context cannot accommodate that?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The answers to those questions result in a load of pain for developers, who often must wrestle with a system replatform every few years. With things becoming too interconnected and concerns not separated, the ultimate choice is usually to discard the old architecture and start anew. Doing that gets very expensive very fast."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Surprisingly, since the paradigm shift is as yet incomplete, the original, highly innovative API-first companies are now adding other semi headless products to their portfolio so as to stay relevant in a slightly lagging market. Consequently, software vendors must serve the mid-market tier of businesses with accelerated product launches and ease of use. Otherwise, website-in-a-box systems like WordPress or Shopify will outperform them."}]},{"type":"element","tag":"h2","props":{"id":"hybrid-headless-and-pretend-composability-from-suites"},"children":[{"type":"text","value":"Hybrid headless and pretend composability from suites"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To stay relevant in the interim, traditional suite vendors are implementing a form of hybrid headless products. You can use their system in a headless, API-first manner but must stick to their way of operations. The fact that you need specialized knowledge of the system to work with it goes against the API-first proposition of total developer freedom. Still, you now have an API and, therefore, a headless system."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suite vendors are splitting up the suite or buying additional service providers and selling their products as composable pieces to their platform. That’s not real composability because you’re not free to choose your best-of-breed tools and can only select from the vendor’s pool of services, which are generally tightly coupled to the suite's core and, therefore, challenges filled. Being interconnected and indivisible is typical of monolithic software, not composable software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I call that approach compostable architecture."}]},{"type":"element","tag":"h2","props":{"id":"the-mach-monolith"},"children":[{"type":"text","value":"The MACH monolith"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We’re seeing a couple of patterns over and over again."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"MACH Monolith","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fp3gnzgd3unj8tbvru3c.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If the separation of concerns is not respected, software vendors create an indivisible and interconnected bundle of best-of-breed tools—a complicated scenario that makes it tough to discern what’s connected to what, not to mention that you have created your very own vendor lock-in. Things work in only one way, and only the original build team understands how they work. Onboarding of new team members becomes complicated and burdensome, leading to frustration among developers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Separately, contextual composition data is often stored in the CMS and mixed with the clean data model you started with, such as adding a checkbox to spotlight an item on a page, which is a design decision for the item in a specific context. What if that context changes when the item is shown in a different place on the website? Composing pages with specific user contexts is problematic in a CMS, invariably generating dirty data over time. Instead, page composition in the context of a user must occur in the front end or a composition platform."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another approach is not to fully interconnect the systems. That’s a great start, but where does that connection usually occur? In the front end. As a result, the front-end application contains all the knowledge of the link to all the systems that compose your website, generating a considerable risk for maintenance and security, let alone that it’s not future-proof. To be effective, a front end must be \"stupid\" and \"stateless\" for updates."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Besides, business problems also exist:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if the architecture does not behave the way it’s supposed to? Determining where it went wrong is complicated."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who do you seek help after pinpointing the issue? The best-of-breed tool, your team who made architecture decisions, or the agency that built the system? Businesses with a failing architecture that can’t point the liability finger eventually replatform and start the process from scratch. The MACH monolith thus ends up being much more inferior to the traditional suite with only one vendor."}]}]},{"type":"element","tag":"h2","props":{"id":"the-solution"},"children":[{"type":"text","value":"The solution"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What businesses need is an opinionless platform that does the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Orchestrates best-of-breed tools."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers a user-friendly interface to developers and practitioners alike."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers an entirely tech-agnostic SDK."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers no-code tools for practitioners to work with in such a way that they do not notice they are composting pages with different headless sources."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though the paradigm shift to truly composable architectures is still ongoing, the platform described above already exists. Enter "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"]},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":", on which developers and marketers have complete control of their digital-experience stack, and I’m proud to run its developer relations team. Uniform is slated to solve many issues developers, architects, and practitioners will face in the coming years."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"a-paradigm-shift","depth":2,"text":"A paradigm shift"},{"id":"monolith-like-features-from-headless-first-products","depth":2,"text":"Monolith-like features from headless-first products"},{"id":"hybrid-headless-and-pretend-composability-from-suites","depth":2,"text":"Hybrid headless and pretend composability from suites"},{"id":"the-mach-monolith","depth":2,"text":"The MACH monolith"},{"id":"the-solution","depth":2,"text":"The solution"}]}},"_type":"markdown","_id":"content:4.writing:the-mach-monolith.md","_source":"content","_file":"4.writing/the-mach-monolith.md","_extension":"md"},{"_path":"/writing/the-move-from-monolithic-to-composable-architectures","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The move from monolithic to composable architectures","description":"Success in business can be attributed to many factors, notably team talent and efficacy of products...","id":1399554,"slug":"the-move-from-monolithic-to-composable-architectures","date":"2023-03-13T20:42:55Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56u97go8avwyexrr01nx.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/composable-architectures-are-the-future-of-the-digital-sphere","tags":["mach","webdev","composable","monolith"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Success in business can be attributed to many factors, notably team talent and efficacy of products or services. What also counts in this digital age are immersive and performant online experiences. Realistically, delivering engaging experiences is a never-ending undertaking. To avoid lagging behind rivals, brands must do that time and again in all their interactions with consumers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can you adapt and iterate as rapidly as necessary? Can you quickly respond to current trends and launch digital experiences without tech support? When it comes to digital capabilities and speed to market, technology makes all the difference. This post explains why the industry is moving from monolithic to composable architectures and how those two architectures can actually work together."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##What are monolithic applications?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Built as a single unit, monolithic applications (aka monolithic architectures) are all-in-one, self-contained suites with robust features. Known as legacy systems, monolithic applications occupy a long-standing place in today’s makeup of businesses as the easy way to acquire digital capabilities. You go through one purchase for all your business needs and sign a contract with one solution provider, who would make it all happen and support you along the way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Such a mono approach might not be the best for the long haul, however. In a free-market economy, monopolies are generally frowned upon because of the guardrails put up by those dominant players, who would enforce rules and regulations to stifle or eliminate competition altogether. What’s more, monopolies have no incentives for innovation or improvements in efficiency."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That’s not a direct comparison to monolithic solutions in tech per se since competition does exist among tech solution providers. Rather, a brief assessment of monopolies is helpful context for why stand-alone architectures aren't ideal for businesses. If one vendor has all the say about the ways your tech stack is used and adapted, you are limited in many ways."}]},{"type":"element","tag":"h2","props":{"id":"why-are-monolithic-applications-not-the-way-forward"},"children":[{"type":"text","value":"Why are monolithic applications not the way forward?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A pro-con analysis shows real—or at least perceived—benefits in relying on a monolithic architecture for your tech stack. If your IT team is well versed in the vendor along with its code and operating system, an established ease of use exists. Furthermore, it feels simple to keep and manage everything in one place and to have, theoretically, one source of truth, with all the tools housed together under the purview of one provider. Not to mention that you have one all-knowing point of contact or support team to call on in case of issues."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nonetheless, given the future of business and the digital experiences consumers demand, the cons of monolithic applications far outweigh the pros in three key areas:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Customization"}]},{"type":"text","value":". Limited is the ability to tailor monolithic applications to meet business needs. Also, even though those applications offer wide-reaching features, you might not ever use some of the features. And you’re at the whims of the monolith’s technology roadmap for innovation. For example, something you need to meet customer needs might not be available until the application’s next software update, potentially months away. In addition, in contrast to today’s fast market changes, upgrades can be time-consuming and slow with a need for developers to make changes or adaptations. With those modifications come complexities, third-party add-ons, or new applications that developers must painstakingly build themselves."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Agility"}]},{"type":"text","value":". Trends change and new opportunities emerge more rapidly than monolithic applications can keep up. Adaptability becomes a struggle, especially if you’re locked into the suite on contract."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Scalability"}]},{"type":"text","value":". Businesses that aspire to be fast-moving and competitive are hindered by monolithic technologies that are difficult to scale. Accordingly, growth is hampered because of the slow and heavy lift for developers to morph one monolithic architecture into an all-things-for-all-people stack."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another hurdle businesses face is adapting a monolithic application to be composable or as a “"},{"type":"element","tag":"a","props":{"href":"https://dev.to/timbenniks/the-mach-monolith-2knd","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":".” Rather than replatforming or ditching an established monolithic architecture to build a new microservices-centric one, brands apply API-first and composable solutions to an existing framework by integrating a host of composable products. Doing so could seriously muddy the waters, however, creating a beast of an architecture that’s not composable, sustainable, or agile."}]},{"type":"element","tag":"h2","props":{"id":"how-can-monoliths-and-composable-work-together"},"children":[{"type":"text","value":"How can monoliths and composable work together?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Legacy monolithic architectures can, in fact, work with composable applications through digital experience composition platform (DXCP), which acts as composable’s opinionless foundation by doing the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offer the prebuilt system integrations and tools business users need, lightening the burden of innovation through new features."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enable teams to merge their legacy platform with a composable approach, orchestrating best-of-need tools and offering a user-friendly interface for developers and practitioners alike."}]}]},{"type":"element","tag":"h2","props":{"id":"how-does-dxcp-help-make-composable-mainstream"},"children":[{"type":"text","value":"How does DXCP help make composable mainstream?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Without doubt, monolithic architectures are no longer ideal for brands that are focused on creating digital experiences that drive impact and conversions. Composable architectures give control of the experience-creation process to the brands responsible for the end results, instead of one tech vendor."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Despite the promise of future-ready composable stacks, building them can be a slow and expensive process, with weeks of custom glue code needed to integrate the multiple services. They are often also incredibly frustrating for marketing teams, content writers, graphic designers, and other business users, as previously simple tasks require multiple tools and developer support."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is where DXCP and companies like Uniform enter the picture. With rapid integration tools that dramatically speed system build and maintenance and powerful no-code interfaces for marketers and other business users to create engrossing experiences in a single, integrated environment using every tool they need."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-are-monolithic-applications-not-the-way-forward","depth":2,"text":"Why are monolithic applications not the way forward?"},{"id":"how-can-monoliths-and-composable-work-together","depth":2,"text":"How can monoliths and composable work together?"},{"id":"how-does-dxcp-help-make-composable-mainstream","depth":2,"text":"How does DXCP help make composable mainstream?"}]}},"_type":"markdown","_id":"content:4.writing:the-move-from-monolithic-to-composable-architectures.md","_source":"content","_file":"4.writing/the-move-from-monolithic-to-composable-architectures.md","_extension":"md"},{"_path":"/writing/the-real-deal-about-content-management-buzzword","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The real deal about content management buzzwords","description":"Buzzwords are labels that describe tech approaches that become so commonplace over time that the...","id":1614626,"slug":"the-real-deal-about-content-management-buzzword","date":"2023-09-28T14:43:37Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr5frm3ra3q3liidcpev.jpg","canonical_url":"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords","tags":["buzzwords","dxp","composable","cms"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Do you like watching more than reading? Watch this "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=EXzp3OkQTXk","rel":["nofollow"]},"children":[{"type":"text","value":"YouTube video"}]},{"type":"text","value":" instead."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"{% embed "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=EXzp3OkQTXk","rel":["nofollow"]},"children":[{"type":"text","value":"https://www.youtube.com/watch?v=EXzp3OkQTXk"}]},{"type":"text","value":" %}"}]},{"type":"element","tag":"h2","props":{"id":"mach"},"children":[{"type":"text","value":"MACH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/mach-architecture","rel":["nofollow"]},"children":[{"type":"text","value":"MACH architecture"}]},{"type":"text","value":" comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Microservices"}]},{"type":"text","value":" are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"API-first"}]},{"type":"text","value":" means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Cloud-native"}]},{"type":"text","value":" means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Headless"}]},{"type":"text","value":" means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"mach","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/jZfjXdJMSGTG1gLrwGQQ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"composable"},"children":[{"type":"text","value":"Composable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/composable-architecture","rel":["nofollow"]},"children":[{"type":"text","value":"Composable architecture"}]},{"type":"text","value":" refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first \"A\" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"composable","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/D2oCAxwTpuhKfZ5xwEB0","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxp-digital-experience-platform"},"children":[{"type":"text","value":"DXP (Digital Experience Platform)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/what-is-a-dxp","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience platform (DXP)"}]},{"type":"text","value":" is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxp","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/rIUS6taoQJ2pcvTDA2YZ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxc-digital-experience-composition"},"children":[{"type":"text","value":"DXC (Digital Experience Composition)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"Digital experience composition"}]},{"type":"text","value":" refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxc","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/irNrx7isRUKaZ0QoDnzQ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxo-digital-experience-orchestration"},"children":[{"type":"text","value":"DXO (Digital Experience Orchestration)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxo","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/WgGDwsNLTTa4wAoL7WVd","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"why-you-dont-have-to-care-about-the-buzzwords"},"children":[{"type":"text","value":"Why you don’t have to care about the buzzwords"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Ultimately, it is up to "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"you"}]},{"type":"text","value":" to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before."}]},{"type":"element","tag":"h3","props":{"id":"company-maturity"},"children":[{"type":"text","value":"Company maturity"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, as companies mature, they may struggle with the "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/monolithic-cms-limitations","rel":["nofollow"]},"children":[{"type":"text","value":"limitations of these monoliths"}]},{"type":"text","value":". Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry."}]},{"type":"element","tag":"h3","props":{"id":"connecting-it-all"},"children":[{"type":"text","value":"Connecting it all"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture."}]},{"type":"element","tag":"h3","props":{"id":"content-federation"},"children":[{"type":"text","value":"Content federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid a "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":" or "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=so7-c2bOXpA","rel":["nofollow"]},"children":[{"type":"text","value":"MACHlash"}]},{"type":"text","value":", you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"content federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/fbNw1hhTSHykSwk19ggJ","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information."}]},{"type":"element","tag":"h3","props":{"id":"after-content-federation-is-in-place"},"children":[{"type":"text","value":"After Content federation is in place"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"after content federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/4xZbpHRgTI2CzXQ88GG7","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"concluding"},"children":[{"type":"text","value":"Concluding"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mach","depth":2,"text":"MACH"},{"id":"composable","depth":2,"text":"Composable"},{"id":"dxp-digital-experience-platform","depth":2,"text":"DXP (Digital Experience Platform)"},{"id":"dxc-digital-experience-composition","depth":2,"text":"DXC (Digital Experience Composition)"},{"id":"dxo-digital-experience-orchestration","depth":2,"text":"DXO (Digital Experience Orchestration)"},{"id":"why-you-dont-have-to-care-about-the-buzzwords","depth":2,"text":"Why you don’t have to care about the buzzwords","children":[{"id":"company-maturity","depth":3,"text":"Company maturity"},{"id":"connecting-it-all","depth":3,"text":"Connecting it all"},{"id":"content-federation","depth":3,"text":"Content federation"},{"id":"after-content-federation-is-in-place","depth":3,"text":"After Content federation is in place"}]},{"id":"concluding","depth":2,"text":"Concluding"}]}},"_type":"markdown","_id":"content:4.writing:the-real-deal-about-content-management-buzzword.md","_source":"content","_file":"4.writing/the-real-deal-about-content-management-buzzword.md","_extension":"md"},{"_path":"/writing/this-is-headless-20","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"This is headless 2.0","description":"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about...","id":1533031,"slug":"this-is-headless-20","date":"2023-07-11T07:48:19Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4ykeb6acv0q288ygpaj.png","canonical_url":"https://www.linkedin.com/pulse/headless-20-tim-benniks/","tags":["webdev","mach","headless","architecture"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about the "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":" before. Here, I’ll describe how to avoid ending up in a codebase full of technical debt, aka glue code—chores that overburden and frustrate developers."}]},{"type":"element","tag":"h3","props":{"id":"the-why"},"children":[{"type":"text","value":"The why"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Headless technology has gained prominence in web development, offering benefits like higher performance, front-end freedom, DX features, and management through APIs—a thrill for techies. However, at scale, complexities arise due to an endless need for glue code for connecting content sources, let alone authoring issues caused by disconnects between content editors and front-end presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In particular, separation of content authoring and presentation results in a steep learning curve for content editors, who would need help to preview their work and ensure a correct display. But how do you preview content that connects to multiple sources, all offering some form of preview capability? As a fix, people do either of the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Connect to the sources via CMS plugins and add data-modeling capabilities for page layouts unrelated to core CMS functionalities. For more details, read my article on the "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":". "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hard-code all the connections in the front end, forcing content editors to file IT tickets for updates."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For web projects to succeed, since developers, marketers, and content editors boast "},{"type":"element","tag":"a","props":{"href":"https://dev.to/timbenniks/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pros-17k","rel":["nofollow"]},"children":[{"type":"text","value":"different strengths"}]},{"type":"text","value":", teams must be able to collaborate harmoniously and seamlessly. For all that headless promises freedom and excellent developer experience, it pushes the pain threshold of marketers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Connecting lots of services creates glue code and technical debt.","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7a0lii31280n03qva7v.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connecting lots of services creates glue code and technical debt."}]},{"type":"element","tag":"h3","props":{"id":"the-how"},"children":[{"type":"text","value":"The how"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Two things are paramount as a fix:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple, easy-to-maintain front-end codebases that contain minimal glue code and technical debt. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Elimination of the need for content editors to tackle the abstractness of a composable architecture populated by a plethora of different tools. Content editors need a visual-editing capability across headless sources to ensure the display is exactly what they desire without giving up on a solid technical architecture."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In other words, content editors need a page-composition process similar in concept to that of GraphQL, i.e., one that returns only the needed properties and content of all page components. All the editors need to do is add the component props with data from external sources—with no need to know the data’s origin. The result is curated, page-specific JSON output that can be consumed by the front end, which need not connect to external data sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually.","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fu1m8gqp9r20nq7fx7dy.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What emerges is a transparent and simple platform on which to compose pages based on design components, whose props point to a field in an external API endpoint. That platform would "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" be a CMS or data-federation tool. All it needs to know is which component points to which data source for a specific page composition."}]},{"type":"element","tag":"h3","props":{"id":"a-visual-workspace"},"children":[{"type":"text","value":"A visual workspace"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Therefore, the job of the platform, which represents all the design components with linked data sources (CMS, PIM, DAM), is to connect them and store the result like a curated GraphQL query on a CDN edge. The only data this platform would potentially store are one-off content strings like “latest blog posts” or the fact that a particular component variant, e.g., the image on the left or right, is shown in a specific context."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That setup gives rise to a streamlined workflow:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To publish content, editors visually connect external data to components properties. That data can come from any source."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Editors compose their design-system components visually to represent the page design they want."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A curated JSON structure of the composition is saved to the CDN edge."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The front end connects to the API endpoint of the platform. An intuitive and light SDK connects to the CDN edge, keeping the front end code simple."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To make it all visual for content editors, match the naming of the design-system components in the codebase to the ones in the platform and have the SDK show the components in a preview window. Simultaneously, content editors can bind data from external sources to the props and design how the components should look and behave."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With solid cache purging for data sources, you can create dynamic pages that connect to any amount of data and deliver in less than 50ms from a CDN edge near you. In case of external data-source changes, the TTL on the field or a webhook purges the cache, resulting in fresh data. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If used in conjunction with the latest Next, NuxtJS, or Astro features, this approach leads to a robust yet no-frills front end with no need to connect to data sources in code or mapping their data to component props. Talk about happy developers!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Image description","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gxchvyapco21ibgpkxl9.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Map design system component props to individual API response fields to create a visual editor that works across headless sources."}]},{"type":"element","tag":"h3","props":{"id":"a-recap"},"children":[{"type":"text","value":"A recap"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connecting everything code-first at scale is painful for developers and content editors alike, the former having to maintain the connections and content mappings, and the latter getting lost in the abstract tools with no clues of what happens on a click to publish."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A composable architecture of headless sources must be a team buy, not just a developer choice. What’s needed is a visual workspace that’s—"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Friendly to content editors but also feature-rich for developers while maintaining excellent technical architecture without compromises. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Agnostic and not a one-size-fits-all offering from a single CMS vendor. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In other words, we need a modern, composable form of the old-school DXPs like Adobe AEM. I believe what I described above resembles digital experience composition as coined by Gartner."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"This is Headless 2.0"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-why","depth":3,"text":"The why"},{"id":"the-how","depth":3,"text":"The how"},{"id":"a-visual-workspace","depth":3,"text":"A visual workspace"},{"id":"a-recap","depth":3,"text":"A recap"}]}},"_type":"markdown","_id":"content:4.writing:this-is-headless-20.md","_source":"content","_file":"4.writing/this-is-headless-20.md","_extension":"md"},{"_path":"/writing/uniform-dxcp-the-what-why-and-how","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Uniform DXCP: the what, why, and how","description":"Nowadays, you’re hard pressed to find an application with all the functionalities you need for...","id":1405728,"slug":"uniform-dxcp-the-what-why-and-how","date":"2023-03-18T13:03:16Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0iccm5uux0ndu9ulnc2g.png","canonical_url":"https://uniform.dev/blogs/uniform-dxcp-the-what-why-and-how","tags":["cdn","edge","sitecore","headless"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nowadays, you’re hard pressed to find an application with all the functionalities you need for delivering personalized digital experiences. Even though with headless solutions, you can select the best options for your goals, you can, through composability, easily connect the applications that drive personalized experiences. Still, simply adopting headless technologies isn’t enough; you also need a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architecture"}]},{"type":"text","value":" that fosters innovation and a seamless authoring experience for business users. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The answer is Uniform "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"Digital Experience Composition Platform (DXCP)"}]},{"type":"text","value":", whose vendor-agnostic capabilities scale to your needs, enabling you to assemble, change, and reassemble your tools as requirements evolve. But what is Uniform DXCP and why does it exist? Read on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##What is Uniform DXCP?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform DXCP is a new, unique product category with which you can effortlessly integrate legacy and composable services with your design system and front end of choice. In particular, you can switch to and maintain composable systems without having to build and support the connections among those systems. In a composable architecture, that means adding and removing the tools without breaking your personalized, omnichannel digital experience. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Why is now the time to move beyond the modern tech stack?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Similar to a composer who arranges the notes of a musical score, you’re the composer of your project’s tech stack. Say, your stack comprises various tools—a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/headless-cms/uniform-for-headless-cms","rel":["nofollow"]},"children":[{"type":"text","value":"headless content management system (CMS)"}]},{"type":"text","value":", a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/uniform-for-headless-commerce","rel":["nofollow"]},"children":[{"type":"text","value":"commerce platform"}]},{"type":"text","value":", a digital asset management (DAM) system, and so on—from different vendors. By combining those technologies and hosting them on a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/sitecore/deliver-better-digital-experiences-with-a-cdn","rel":["nofollow"]},"children":[{"type":"text","value":"content delivery network (CDN)"}]},{"type":"text","value":", you render a webpage. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nonetheless, connecting headless tools with APIs doesn’t necessarily produce a high-quality or "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/headless-versus-composable-everything-you-need-to-know","rel":["nofollow"]},"children":[{"type":"text","value":"composable experience"}]},{"type":"text","value":". As your enterprise scales up, your business must grow as well, meaning that you must incorporate more and more applications into your tech stack, all of which are hard coded into one another through their app stores or your front-end technology. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What you end up with is a messy, unwieldy, and inflexible tech stack—a maintenance headache  for your developers. Not to mention that "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/switching-vendors-for-digital-architectures-without-replatforming","rel":["nofollow"]},"children":[{"type":"text","value":"replatforming"}]},{"type":"text","value":" or rebuilding your project from scratch can be nightmarish and expensive. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How do you transform your tech stack from a cacophony of integrations connected by endless "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/glue-code","rel":["nofollow"]},"children":[{"type":"text","value":"glue code"}]},{"type":"text","value":" into a composable architecture that bridges your tools into a harmonious experience? You do it with digital experience composition.  "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How do you transition from chaos to composable with DXCP"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With Uniform DXCP, you need not create and maintain the custom code that connects your APIs and front-end layers. Instead, you can compose and organize headless solutions in your tech stack without the exorbitant costs, laborious upgrades, and complexities. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here are the major benefits of moving to composable with Uniform DXCP: "}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Remember the messy tech stack we cited earlier? "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/the-mach-monolith","rel":["nofollow"]},"children":[{"type":"text","value":"Monolithic architectures"}]},{"type":"text","value":" require development of new features or investment in complicated integrations. Not so with Uniform DXCP, whose API-orchestration layer handles the connections among your digital experiences and the applications that power them."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"No more “publish and pray” moments. Uniform DXCP’s no-code orchestration layer accords business users an editor with which to drag and drop components wherever they want and preview the resultant display."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"In DXCP, your front end is unaware of your connections so no proprietary limitations exist, and you can select any front-end technology you desire. Whether you choose Java or PHP, your digital experience remains consistent and seamless."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCP offers a new paradigm for page creation around where data lives and how you manage that data. No more worries about product information being displayed outside the context of its intended design and user experience. With Uniform sitting on the end of your design data and keeping domain data intact, you’re free to deliver digital experiences through multiple services at scale. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How do you fuel your stack with digital experience composition?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After you’ve built a composable architecture in DXCP:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your developers can easily add features and swap out tools from the stack individually."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your stack stays organized with no need for those time-consuming, costly integrations that impede your speed to market."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your marketers can drag and drop the components they need to create personalized omnichannel experiences without developer assistance. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The result is less code, greater agility and flexibility, and a more smooth approach for handling orchestration and integrating new tools into your tech stack. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:uniform-dxcp-the-what-why-and-how.md","_source":"content","_file":"4.writing/uniform-dxcp-the-what-why-and-how.md","_extension":"md"},{"_path":"/writing/uniform-is-nuxt-3-read","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Uniform is Nuxt 3 ready","description":"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with Vue...","id":1405730,"slug":"uniform-is-nuxt-3-read","date":"2023-03-18T13:10:06Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96gzr0p69e9frwbj3i8w.png","canonical_url":"https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3","tags":["webdev","javascript","nuxt","vue"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with "},{"type":"element","tag":"a","props":{"href":"https://blog.vuejs.org/posts/vue-3-as-the-new-default.html","rel":["nofollow"]},"children":[{"type":"text","value":"Vue 3"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"https://v3.nuxtjs.org/","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt 3"}]},{"type":"text","value":". "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nuxt 3 is fast approaching GA. To ensure that Vue.js enthusiasts can build next-generation web experiences with the awesome features offered by Nuxt 3, our new SDK fully supports all Uniform capabilities: from no-code presentation management by Uniform Canvas, complete with web-socket-based live previews, to edge-side personalization and A/B testing through Uniform Context. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With the Nuxt 3 Nitro engine, developers can now run an entire site on the edge or combine personalization on the edge with delivery of the remaining content in SSG mode through a CDN. Even for highly dynamic pages, the latter choice results in blazing-fast page loads. We’re talking sub 50 milliseconds!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nuxt 3 is truly game changing, and Uniform takes full advantage of that with an easy-to-install SDK that follows Nuxt’s no-config ethos."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Features of Uniform’s Nuxt 3 module"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is what the module can do:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Auto-registers the required Uniform components."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Auto-creates a Uniform Canvas client."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Creates a Uniform Context instance (for personalization) and makes it available throughout the app without the need for a wrapping component."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Builds a handy "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"$useCompositionClick to copy"}]},{"type":"text","value":" composable on top of Nuxt's "},{"type":"element","tag":"a","props":{"href":"https://v3.nuxtjs.org/api/composables/use-async-data","rel":["nofollow"]},"children":[{"type":"text","value":"useAsyncData"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Displays live previews seamlessly."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Monitors query-string changes, which Nuxt doesn't do by default."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Benefits of using Uniform with Nuxt 3"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As a rule, no single system offers all the functionalities you need for an app. Instead, multiple systems must work together for the app to run smoothly. A "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architecture"}]},{"type":"text","value":" is one in which you can pick and choose the components for your technology stack, but getting them to work together well can be challenging. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Modern headless systems can connect with other systems as part of a composable architecture. However, using some composable services doesn’t give you a full composable architecture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Real composability means that you can add or remove components easily as your needs evolve. That’s what Uniform offers. With Uniform’s composition layer, you can build and maintain a modern stack with composable services without tightly coupling them. As a result, developers, content creators, and marketers alike can create and deliver experiences quickly, independently and without vendor lock-in."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers can add or change services any time, assured that their tools will work well together without the need for time-consuming and expensive replatforming and reintegration."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content creators can build engaging experiences with a consistent, no-code approach through which they can readily leverage all the tools in their stack."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Marketers can promote conversions through intent-based personalization and experimentation mechanisms that integrate with customer data and that are simple and intuitive for implementation by developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"As internal needs or consumer tastes change, the organization can be agile enough to meet these challenges, without extensive background work that doesn’t deliver direct value to end users."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:uniform-is-nuxt-3-read.md","_source":"content","_file":"4.writing/uniform-is-nuxt-3-read.md","_extension":"md"},{"_path":"/writing/what-type-of-content-organization-do-you-need","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"What type of content organization do you need?","description":"Different ways of working require different approaches to content design. In this post, I will...","id":1664371,"slug":"what-type-of-content-organization-do-you-need","date":"2023-11-12T09:03:33Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd58lvz3nrm8lre4gdtuw.png","canonical_url":"https://hygraph.com/blog/what-type-of-content-organization-do-you-need","tags":[],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Centralized / Decentralized","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xioylw3zkxljytzhwtft.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly."}]},{"type":"element","tag":"h2","props":{"id":"how-to-organize-your-content-without-going-crazy"},"children":[{"type":"text","value":"How to organize your content without going crazy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your content flows between different systems, federation is one of the most effective ways to manage it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements."}]},{"type":"element","tag":"h2","props":{"id":"forms-of-federation"},"children":[{"type":"text","value":"Forms of federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns."}]},{"type":"element","tag":"h3","props":{"id":"data-stitching-and-custom-middleware"},"children":[{"type":"text","value":"Data stitching and custom middleware"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data stitching","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iacwgoeaolz9znalbc56.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"content-hub"},"children":[{"type":"text","value":"Content Hub"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Content Hub","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc8fp49qbswr93cg5r62.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"data-lake"},"children":[{"type":"text","value":"Data Lake"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data lake","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u388o0c1oy5p0m31afl0.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"content-federation"},"children":[{"type":"text","value":"Content Federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Content Federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wsbl6uzmoscfxq31yrv.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"dxo-digital-experience-orchestration"},"children":[{"type":"text","value":"DXO (digital experience orchestration)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"DXO","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfrsz1i6hjq68mbsmrui.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"graphql-federation"},"children":[{"type":"text","value":"GraphQL Federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"GraphQL Federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rtx6y1lqmon1nhe6c4t0.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"which-federation-is-for-you"},"children":[{"type":"text","value":"Which federation is for you?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions."}]},{"type":"element","tag":"h3","props":{"id":"what-is-your-digital-organization-direction-centralized-or-decentralized"},"children":[{"type":"text","value":"What is your digital organization direction: centralized or decentralized?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Federation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Hub"}]}]},{"type":"element","tag":"h3","props":{"id":"how-much-cleanup-does-your-data-need"},"children":[{"type":"text","value":"How much cleanup does your data need?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: DXO, Content Federation"}]}]},{"type":"element","tag":"h3","props":{"id":"how-autonomous-do-your-data-sources-need-to-be"},"children":[{"type":"text","value":"How autonomous do your data sources need to be?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"autonomy"}]},{"type":"text","value":" to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Federation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Hub"}]}]},{"type":"element","tag":"h3","props":{"id":"are-you-dealing-with-big-data"},"children":[{"type":"text","value":"Are you dealing with big data?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Lake"}]}]},{"type":"element","tag":"h3","props":{"id":"are-you-a-saas-with-multiple-tech-silos"},"children":[{"type":"text","value":"Are you a SaaS with multiple tech silos?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: GraphQL Federation"}]}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As always, the answer is: \"It depends\". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"how-to-organize-your-content-without-going-crazy","depth":2,"text":"How to organize your content without going crazy"},{"id":"forms-of-federation","depth":2,"text":"Forms of federation","children":[{"id":"data-stitching-and-custom-middleware","depth":3,"text":"Data stitching and custom middleware"},{"id":"content-hub","depth":3,"text":"Content Hub"},{"id":"data-lake","depth":3,"text":"Data Lake"},{"id":"content-federation","depth":3,"text":"Content Federation"},{"id":"dxo-digital-experience-orchestration","depth":3,"text":"DXO (digital experience orchestration)"},{"id":"graphql-federation","depth":3,"text":"GraphQL Federation"}]},{"id":"which-federation-is-for-you","depth":2,"text":"Which federation is for you?","children":[{"id":"what-is-your-digital-organization-direction-centralized-or-decentralized","depth":3,"text":"What is your digital organization direction: centralized or decentralized?"},{"id":"how-much-cleanup-does-your-data-need","depth":3,"text":"How much cleanup does your data need?"},{"id":"how-autonomous-do-your-data-sources-need-to-be","depth":3,"text":"How autonomous do your data sources need to be?"},{"id":"are-you-dealing-with-big-data","depth":3,"text":"Are you dealing with big data?"},{"id":"are-you-a-saas-with-multiple-tech-silos","depth":3,"text":"Are you a SaaS with multiple tech silos?"}]},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:what-type-of-content-organization-do-you-need.md","_source":"content","_file":"4.writing/what-type-of-content-organization-do-you-need.md","_extension":"md"},{"_path":"/writing/why-i-didnt-run-the-2016-marathon","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Why I didn't run the 2016 marathon","description":"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on...","id":1406190,"slug":"why-i-didnt-run-the-2016-marathon","date":"2023-03-18T22:52:37Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafpsw3jbsie5bf7w8wp9.jpg","canonical_url":"https://dev.to/timbenniks/why-i-didnt-run-the-2016-marathon-57e3","tags":["personal","fitness","running"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on October 16th 2016. I’ve learnt a life lesson about the balance between the load and capacity of the body while training for a marathon."}]},{"type":"element","tag":"h3","props":{"id":"tldr"},"children":[{"type":"text","value":"tl;dr"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won't be able to cope with the added stress."}]},{"type":"element","tag":"h3","props":{"id":"the-load-capacity-model"},"children":[{"type":"text","value":"The Load-Capacity Model"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Load-Capacity model was created in 1990 by A.T.M Bernards and L.H.A Hagenaars, two Dutch physiotherapists. The MDBB (Dutch abbreviation) model is meant to be a conceptual model for physiotherapy. "},{"type":"element","tag":"a","props":{"href":"https://www.researchgate.net/publication/224983108_Het_meerdimensionale_belasting-belastbaarheidsmodel_een_conceptueel_model_voor_de_fysiotherapie","rel":["nofollow"]},"children":[{"type":"text","value":"This is one of their publications from 1999"}]},{"type":"text","value":". They created this model to add the "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Biopsychosocial_model","rel":["nofollow"]},"children":[{"type":"text","value":"biopsychosocial"}]},{"type":"text","value":" element to physiotherapy treatments."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"I just want to caveat that even though there is some merit to the claims made in this post, the Load-Capacity model is generally taught at physiotherapy school, most of the conclusions I ended up with are anecdotal. I’ll be using the Load-Capacity model specifically for my personal experience so my writing will be somewhat one-sided."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On the physical side, the Load-Capacity model is a key concept in preventing and managing running injuries. It is all about understanding the balance between training load and the body’s capacity to handle that load. In a nutshell it’s a case of working within your limits and not pushing the training beyond what the body can cope with."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then there is the mental side. External stressors will also impact the balance between capacity and load. If you keep the load the same but your capacity goes down due to grief or work stress, the body will be pushed over the edge of what the it would normally tolerate."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The load-capacity balance is different for everybody and could also change over time. As it did for me. I upped the load in a steady way by training for the marathon but my body’s capacity went down due to external stressors which I wasn’t able to identify. For one, I have a thick skull but I also wasn’t used to the fact that my body would tell me to stop. I could do whatever I wanted to it without stretching or any kind of warm up. If I twisted my ankle the pain would go away in a day."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtcthucv7qthp2sra697.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This year I was always stiff and I had to concentrate way harder to stick to proper form. Suddenly I got little pains like plantar fasciitis and an inflamed Achilles tendon. Even after stretching out my hips and calves it felt like I was running on stilts. The pains and stiffness started two months into training. Four months in, I started to get extremely tired, I developed a rash and I my IBS started to play up way more often. I also got sick after doing longer runs at marathon pace."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The things I just described start to happen when the load is surpassing the capacity of the body for a length of time. I slowly got "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Overtraining","rel":["nofollow"]},"children":[{"type":"text","value":"overtrained"}]},{"type":"text","value":". As my body could normally handle anything I threw at it, I was a bit oblivious towards the symptoms of over training."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"My sweet wife is a physiotherapist and saw me coming from a mile away. Classic. I needed my wife and many of my peers to tell me that I was over trained. The cause was a combination of training and external circumstances."}]},{"type":"element","tag":"h3","props":{"id":"this-is-what-happened"},"children":[{"type":"text","value":"This is what happened"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started off well and I was determined to make less mistakes in the preparation this time around. I had plans to have my diet in check from day one. I would go to the gym as well. Next to this I kept a record of everything. Training sessions with Strava, sleep analysis and heart rate with Sleepcycle and food and weight with MyFitnessPal."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This year I decided to go for a training plan which let me train five times per week. Of these five sessions only three where running. The other two were either biking or a gym session. Running only three times per week meant that I could be flexible with the days as I sometimes work nights or have social events to attend. The plan had me running more miles each run but at a slow pace."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first couple of months everything went well. I actually beat my personal bests on the 5km and 10km quite easily."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/628465080","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" Strava run and "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/655258214","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" one."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And I also found back my love for cycling. I bought the cheapest bike with the best reviews. It has a Microshift group set which isn’t as precise but works very well if maintained properly."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Two and a half months in, things started to feel a bit painful, especially after running. I realise now that the stress I experienced outside of training impacted my capacity to handle the increased training load."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A couple of things happened at the same time. We had a cancer scare in the family for which I went to Amsterdam for a while. Things are better now but I’ve had a lot to worry about. Right after I came back to Paris my wife miscarried. We’ve been trying to have a baby for a long time and each time it fails it’s like getting hit in the face."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On top of these two things I found out that I have "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Irritable_bowel_syndrome","rel":["nofollow"]},"children":[{"type":"text","value":"IBS"}]},{"type":"text","value":". I’ve probably had it for a long time but it started to flare up around March this year. I’ve been trying to find the right diet and it’s not easy."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It seems that the absorption of nutrients isn’t working well due to the inflammation in my gut. I had to try to eat less foods that contains "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/FODMAP","rel":["nofollow"]},"children":[{"type":"text","value":"FODMAPs"}]},{"type":"text","value":" so that my insides would relax a bit. Having a constant belly ache and bad sleep as a result does not help the capacity of the body to deal with an increased training load. I made a little "},{"type":"element","tag":"a","props":{"href":"https://timbenniks.nl/fodmap","rel":["nofollow"]},"children":[{"type":"text","value":"tool"}]},{"type":"text","value":" to see which foods are allowed on the low FODMAP diet."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Funnily enough I felt quite good during runs. Well, except when it was hot. I hate warm humid weather and have I trouble training in it. It was usually after the runs that I would suddenly feel the pain my body was in. Willpower is an amazing thing. I think I could actually run the marathon on sheer brain juice tomorrow. It would do horrible things to my body though."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The run below seems to have gone very well but I got sick after and couldn’t train for a week. My whole body ached and I slept all weekend."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/683549355/","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" Strava run."}]},{"type":"element","tag":"h3","props":{"id":"what-i-have-learnt"},"children":[{"type":"text","value":"What I have learnt"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won’t be able to cope with the added stress."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It took 20 years to start enjoying sports. I lost a "},{"type":"element","tag":"a","props":{"href":"https://timbenniks.dev/articles/my-fitness-story","rel":["nofollow"]},"children":[{"type":"text","value":"lot of weight"}]},{"type":"text","value":" and got hooked. I could throw anything at my body and it would bounce back. Now it doesn’t and I have to accept that. This summer of training thought me to be humble and to listen both my peers (my wife mainly, as she is always right) and my body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Not running this race was a hard decision for me as I always stick to the challenges I set for myself. I’ve decided that feeling good is more important than running a marathon. I’ve done it once before and have proven that I can do it. My body can deal with running but it’s not comfortable doing it. I have my build against me. I’m going to focus on being flexible and strong. I’ll be running shorter distances and I’ll be cycling way more. Also, I’m going back to the gym to do what my body was build to do. Lift iron. I might even try yoga…"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt09jc5r7w862n5smsas.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"some-numbers"},"children":[{"type":"text","value":"Some Numbers"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ran 483.4km over 51 runs with an average pace of 05:40"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average distance was 9.5km per run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I went from 96.1 to 92.9 kilos"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I slept 8h 20m a night on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ate 2258kcal a day on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I took 9565 steps a day on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I had an average resting HR of 63.5bpm"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average food macro balance was 62.2% carbs, 16,2% fat, 21,5% protein."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"tldr","depth":3,"text":"tl;dr"},{"id":"the-load-capacity-model","depth":3,"text":"The Load-Capacity Model"},{"id":"this-is-what-happened","depth":3,"text":"This is what happened"},{"id":"what-i-have-learnt","depth":3,"text":"What I have learnt"},{"id":"some-numbers","depth":3,"text":"Some Numbers"}]}},"_type":"markdown","_id":"content:4.writing:why-i-didnt-run-the-2016-marathon.md","_source":"content","_file":"4.writing/why-i-didnt-run-the-2016-marathon.md","_extension":"md"},{"_path":"/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","description":"","conference":"vuejs.amsterdam 2019","talk":"Vue.js for L'Oreal. A case study.","location":"Amsterdam, The netherlands","date":"2019-02-14","id":"clifq5gzg40j20bw9ne2mh9n6","link":"https://vuejs.amsterdam","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md","_source":"content","_file":"5.speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md","_extension":"md"},{"_path":"/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","description":"","conference":"vuejs.amsterdam 2019","talk":"Vue.js for L'Oreal. A case study.","location":"Amsterdam, the Netherlands","date":"2019-02-26","id":"clifq5gns3xhu0buv6a8th0jk","link":"https://vuejs.amsterdam","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-02-26-clifq5gns3xhu0buv6a8th0jk.md","_source":"content","_file":"5.speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk.md","_extension":"md"},{"_path":"/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 04 19 Clifq5gd63xhq0buvufv6nagk","description":"","conference":"VueDay 2019","talk":"Vue.js for L'Oreal. A case study.","location":"Verona, Italy","date":"2019-04-19","id":"clifq5gd63xhq0buvufv6nagk","link":"https://2019.vueday.it/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-04-19-clifq5gd63xhq0buvufv6nagk.md","_source":"content","_file":"5.speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk.md","_extension":"md"},{"_path":"/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","description":"","conference":"Vue.js roadtrip 2019 - Paris","talk":"Team First. A framework to lead a team of developers to success in a high-pressure environment","location":"Paris, France","date":"2019-05-17","id":"clifq5g1f3wh90bw81u5sa0ai","link":"https://eventil.com/events/frontend-vuejs-roadtrip-paris","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md","_source":"content","_file":"5.speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md","_extension":"md"},{"_path":"/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 05 25 Clifq5fpd3xt00aw4grnzft29","description":"","conference":"Vue.js roadtrip 2019 - Barcelona","talk":"Team First. A framework to lead a team of developers to success in a high-pressure environment","location":"Barcelona, Spain","date":"2019-05-25","id":"clifq5fpd3xt00aw4grnzft29","link":"https://discover.events.com/es/catalunya/ciutat-vella/e/business/vuejs-frontend-roadtrip-barcelona-holaluz-office-294857096","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-05-25-clifq5fpd3xt00aw4grnzft29.md","_source":"content","_file":"5.speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29.md","_extension":"md"},{"_path":"/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","description":"","conference":"Vue.js Paris meetup","talk":"Vue.js for L'Oreal. A case study","location":"Paris, France","date":"2019-09-04","id":"clifq5fer3xhl0buvzzgwqg1k","link":"https://www.meetup.com/fr-FR/Vuejs-Paris/events/263934300/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md","_source":"content","_file":"5.speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md","_extension":"md"},{"_path":"/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","description":"","conference":"EXDS#19","talk":"Delivery guidelines for creative assets","location":"Amsterdam, The Netherlands","date":"2019-09-09","id":"clifq5f1b3wh10bw8ftmppjkc","link":"https://www.valtech.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md","_source":"content","_file":"5.speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md","_extension":"md"},{"_path":"/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 09 27 Clifq5eos3xhh0buvewly5gxs","description":"","conference":"Budapest VUE.JS meetup VueAnd.Me edition","talk":"Team First. A framework to lead a team of developers to success in a high-pressure environment","location":"Budapest, Hungary","date":"2019-09-27","id":"clifq5eos3xhh0buvewly5gxs","link":"https://www.meetup.com/Vue-js-Budapest/events/263805562/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-09-27-clifq5eos3xhh0buvewly5gxs.md","_source":"content","_file":"5.speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs.md","_extension":"md"},{"_path":"/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","description":"","conference":"The evolution of modern web development on monolithic platforms","talk":"JAMstack is the future. I think. Maybe.","location":"Paris, France","date":"2019-11-28","id":"clifq5ebo3wgx0bw8vno5ce0d","link":"https://www.meetup.com/Meet-up-at-Valtech-Front-Platform/events/265587330/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md","_source":"content","_file":"5.speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md","_extension":"md"},{"_path":"/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 12 17 Clifq5dyh40ij0bw9oquw072b","description":"","conference":"Vue.js Paris Meetup","talk":"JAMstack is the future. I think. Maybe.","location":"Paris, France","date":"2019-12-17","id":"clifq5dyh40ij0bw9oquw072b","link":"https://www.meetup.com/Vuejs-Paris/events/266953797/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-12-17-clifq5dyh40ij0bw9oquw072b.md","_source":"content","_file":"5.speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b.md","_extension":"md"},{"_path":"/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 02 18 Clifq5dk940if0bw9ok9achtj","description":"","conference":"Vue.js Amsterdam 2020","talk":"Team First. A framework to lead a team of developers to success in a high-pressure environment","location":"Amsterdam, The Netherlands","date":"2020-02-18","id":"clifq5dk940if0bw9ok9achtj","link":"https://vuejs.amsterdam/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-02-18-clifq5dk940if0bw9ok9achtj.md","_source":"content","_file":"5.speaking/2020-02-18-clifq5dk940if0bw9ok9achtj.md","_extension":"md"},{"_path":"/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","description":"","conference":"Front-end Love virtual Meetup","talk":"JAMstack is the future. I think. Maybe.","location":"Virtual","date":"2020-03-19","id":"clifq5dal3xsn0aw49a9wad1n","link":"https://youtu.be/Wq2AqONg7rs?t=5307","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-03-19-clifq5dal3xsn0aw49a9wad1n.md","_source":"content","_file":"5.speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n.md","_extension":"md"},{"_path":"/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","description":"","conference":"MallorcaJS meetup","talk":"Team First - Corona edition","location":"Virtual","date":"2020-04-22","id":"clifq5czw3wgs0bw8srwiffx1","link":"https://www.meetup.com/MallorcaJS/events/270156286","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-04-22-clifq5czw3wgs0bw8srwiffx1.md","_source":"content","_file":"5.speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1.md","_extension":"md"},{"_path":"/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","description":"","conference":"VueJS Olso Virtual Meetup","talk":"JAMstack is the future. I think. Maybe.","location":"Virtual","date":"2020-05-06","id":"clifq5cpx40hk0bw9odxcxt0q","link":"https://www.meetup.com/VueJS-Oslo/events/270218508/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md","_source":"content","_file":"5.speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md","_extension":"md"},{"_path":"/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","description":"","conference":"Talent.io talks Online","talk":"Team First - Corona edition","location":"Virtual","date":"2020-05-13","id":"clifq5cfw3xh00buvhyslf4s3","link":"https://www.eventbrite.com/o/talentio-16600656820","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-05-13-clifq5cfw3xh00buvhyslf4s3.md","_source":"content","_file":"5.speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3.md","_extension":"md"},{"_path":"/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","description":"","conference":"We Belong Here Podcast Interview","talk":"How I moved into tech from being a Nurse and Musician","location":"Virtual","date":"2020-05-25","id":"clifq5c5u3wgo0bw8g8yudazp","link":"https://webelongpodcast.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md","_source":"content","_file":"5.speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md","_extension":"md"},{"_path":"/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","description":"","conference":"That's my JAMstack podcast interview","talk":"JAMstack is my JAM. I guess...","location":"Virtual","date":"2020-05-28","id":"clifq5bvw40h20bw92kt7pmp1","link":"https://thatsmyjamstack.com/posts/tim-benniks/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-05-28-clifq5bvw40h20bw92kt7pmp1.md","_source":"content","_file":"5.speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1.md","_extension":"md"},{"_path":"/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 06 09 Clifq5bj73xrj0aw42st3pna4","description":"","conference":"ReactiveConf","talk":"Team First - Corona edition","location":"Virtual","date":"2020-06-09","id":"clifq5bj73xrj0aw42st3pna4","link":"https://www.meetup.com/ReactiveMeetupsPrague/events/270869144/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-06-09-clifq5bj73xrj0aw42st3pna4.md","_source":"content","_file":"5.speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4.md","_extension":"md"},{"_path":"/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","description":"","conference":"Prismic webinar","talk":"Why go headless? Steps to go from a monolithic CMS to a decoupled one.","location":"Virtual","date":"2020-07-21","id":"clifq5b6s3xrf0aw4s8ml5qjb","link":"https://www.youtube.com/watch?v=wVyMYGrI0hM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md","_source":"content","_file":"5.speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md","_extension":"md"},{"_path":"/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","description":"","conference":"ImageCon 2020","talk":"A Developers Guide To Lowe Carbon Websites","location":"Virtual","date":"2020-07-27","id":"clifq5axb3xgw0buvy6hrvpv2","link":"https://www.imagecon.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md","_source":"content","_file":"5.speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md","_extension":"md"},{"_path":"/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","description":"","conference":"Views on Vue Podcast Interview","talk":"My views on Vue at scale and on enterprise level","location":"Virtual","date":"2020-08-05","id":"clifq5anp3xrb0aw4jxeipa7e","link":"https://devchat.tv/views-on-vue/vov-116-using-vue-at-scale-at-loreal-with-tim-benniks/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md","_source":"content","_file":"5.speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md","_extension":"md"},{"_path":"/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","description":"","conference":"JS Monthly Online","talk":"A Developers Guide To Low Carbon Websites","location":"Virtual","date":"2020-08-26","id":"clifq5a9x3wgk0bw8x8qfl5rk","link":"https://www.meetup.com/js-monthly/events/272459669/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md","_source":"content","_file":"5.speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md","_extension":"md"},{"_path":"/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","description":"","conference":"Vue.js Global Conference 2020","talk":"An introduction to Vite and VitePress","location":"Virtual","date":"2020-09-17","id":"clifq59zj3wgg0bw8xmh09vvm","link":"https://vuejs.amsterdam","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md","_source":"content","_file":"5.speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md","_extension":"md"},{"_path":"/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 10 14 Clifq59mp3wgc0bw82qykah6x","description":"","conference":"Vue.js Antwerp - October 2020","talk":"The magical combination for creating a modern website.","location":"Virtual","date":"2020-10-14","id":"clifq59mp3wgc0bw82qykah6x","link":"https://www.meetup.com/vue-antwerp/events/273585859/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-10-14-clifq59mp3wgc0bw82qykah6x.md","_source":"content","_file":"5.speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x.md","_extension":"md"},{"_path":"/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 10 29 Clifq59b83xr60aw45w2sqa1g","description":"","conference":"JS Monthly Online #07, Oct Meetup","talk":"I will take you through the new features of Webpack 5 and also provide some examples where we could benefit in your day to day development live","location":"Virtual","date":"2020-10-29","id":"clifq59b83xr60aw45w2sqa1g","link":"https://www.meetup.com/js-monthly/events/273843246/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-10-29-clifq59b83xr60aw45w2sqa1g.md","_source":"content","_file":"5.speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g.md","_extension":"md"},{"_path":"/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 11 10 Clifq590340gy0bw9onnmgr7y","description":"","conference":"Live coding for the Prismic Slice Contest","talk":"Lucie and Tim will connect to build a simple Slice Library for 1 hour.\nThey will be using the New Slice Builder for that, which also generates Storybook stories for each of their components.","location":"Virtual","date":"2020-11-10","id":"clifq590340gy0bw9onnmgr7y","link":"https://www.youtube.com/watch?v=p3Wih8zOfI8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-11-10-clifq590340gy0bw9onnmgr7y.md","_source":"content","_file":"5.speaking/2020-11-10-clifq590340gy0bw9onnmgr7y.md","_extension":"md"},{"_path":"/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 11 11 Clifq58oo40gu0bw9iffiakmh","description":"","conference":"Podcast: RETHINK Luxury - Ep 2: Sustainability","talk":"We’ll be diving into ethical sourcing in luxury, the challenges of implementing sustainable businesses practices, and envisioning a better world forward","location":"Podcast","date":"2020-11-11","id":"clifq58oo40gu0bw9iffiakmh","link":"https://www.rethink.industries/podcast/rethink-luxury-sustainability/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-11-11-clifq58oo40gu0bw9iffiakmh.md","_source":"content","_file":"5.speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh.md","_extension":"md"},{"_path":"/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","description":"","conference":"Zeplin ZAM JAM round table discussion","talk":"In this discussion between multiple agencies we try to provide real world insight into how teams are using Zeplin.","location":"Virtual","date":"2020-12-01","id":"clifq58cz3xr10aw4n6qndf3s","link":"https://www.youtube.com/channel/UCM2z6CHM4wvmlB9qo_dq0dg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-01-clifq58cz3xr10aw4n6qndf3s.md","_source":"content","_file":"5.speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s.md","_extension":"md"},{"_path":"/speaking/2020-12-02-clifq582i3wg80bw8rszss5am","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 02 Clifq582i3wg80bw8rszss5am","description":"","conference":"Cloudinary Webinar: Road to headless","talk":"Join us to learn how a headless architecture can help you streamline content delivery through an integration of composed components with best-of-breed vendors.","location":"Virtual","date":"2020-12-02","id":"clifq582i3wg80bw8rszss5am","link":"https://cloudinary.com","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-02-clifq582i3wg80bw8rszss5am.md","_source":"content","_file":"5.speaking/2020-12-02-clifq582i3wg80bw8rszss5am.md","_extension":"md"},{"_path":"/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","description":"","conference":"Tech Talks with Santosh ","talk":"Santosh: In this talk show, we will have some awesome developers, sharing content from the programming language they work on.","location":"Virtual (Youtube Livestream)","date":"2020-12-11","id":"clifq57o03xgp0buvlvdxm5l9","link":"https://www.youtube.com/c/TechTalksWithSantosh","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-11-clifq57o03xgp0buvlvdxm5l9.md","_source":"content","_file":"5.speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9.md","_extension":"md"},{"_path":"/speaking/2020-12-16-clifq57c43wg40bw81h7fr291","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 16 Clifq57c43wg40bw81h7fr291","description":"","conference":"Zeplin ZAM JAM","talk":"In this first ever Zam Jam session, we’re talking to 3 digital leaders about how Zeplin helps their agency foster deep customer engagement and multi-disciplined team collaboration to build beautiful products and deliver on the promise of design.","location":"Virtual (YouTube Livestream)","date":"2020-12-16","id":"clifq57c43wg40bw81h7fr291","link":"https://www.youtube.com/watch?v=tUc9CKiC0Go","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-16-clifq57c43wg40bw81h7fr291.md","_source":"content","_file":"5.speaking/2020-12-16-clifq57c43wg40bw81h7fr291.md","_extension":"md"},{"_path":"/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 18 Clifq571z40gq0bw9b62wbowr","description":"","conference":"Environmentally Sustainable Websites","talk":"Digital's Carbon Footprint, Green Development Choices and Options, Sustainable Shortcuts, Optimised User Experiences, MACH/Composable Architecture","location":"Virtual","date":"2020-12-18","id":"clifq571z40gq0bw9b62wbowr","link":"https://www.valtech.com/podcasts/digital-transformation-podcast-environmentally-sustainable-websites","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-18-clifq571z40gq0bw9b62wbowr.md","_source":"content","_file":"5.speaking/2020-12-18-clifq571z40gq0bw9b62wbowr.md","_extension":"md"},{"_path":"/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 01 12 Clifq56q43xgk0buv4hu04quz","description":"","conference":"Vue.js // Berlin","talk":"The magical combination for creating a modern website.","location":"Virtual","date":"2021-01-12","id":"clifq56q43xgk0buv4hu04quz","link":"https://www.meetup.com/Vue-js-Berlin/events/wwtgqrycccbqb/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-01-12-clifq56q43xgk0buv4hu04quz.md","_source":"content","_file":"5.speaking/2021-01-12-clifq56q43xgk0buv4hu04quz.md","_extension":"md"},{"_path":"/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","description":"","conference":"Web Dev x Sustainability ","talk":"BOECKBX - Let's Talk About Eco-Friendliness in Web Development","location":"YouTube","date":"2021-02-01","id":"clifq56gq3xqx0aw47qor4w9s","link":"https://www.youtube.com/watch?v=LcUaUC6BxUk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-02-01-clifq56gq3xqx0aw47qor4w9s.md","_source":"content","_file":"5.speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s.md","_extension":"md"},{"_path":"/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 02 02 Clifq56623xqt0aw44sbds5cn","description":"","conference":"The Power of Cross-Technology Innovation","talk":"#21 with Peggy, Tim, and Idoia","location":"Virtual","date":"2021-02-02","id":"clifq56623xqt0aw44sbds5cn","link":"https://www.linkedin.com/video/live/urn:li:ugcPost:6762404029302640640/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-02-02-clifq56623xqt0aw44sbds5cn.md","_source":"content","_file":"5.speaking/2021-02-02-clifq56623xqt0aw44sbds5cn.md","_extension":"md"},{"_path":"/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 02 22 Clifq55tf40gk0bw9vofea3yp","description":"","conference":"JS World Conference","talk":"The Modern DXP. How JAMstack will change the world.","location":"Virtual","date":"2021-02-22","id":"clifq55tf40gk0bw9vofea3yp","link":"https://frontenddeveloperlove.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-02-22-clifq55tf40gk0bw9vofea3yp.md","_source":"content","_file":"5.speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp.md","_extension":"md"},{"_path":"/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","description":"","conference":"GatsbyConf 2021","talk":"A workshop on connecting ContentStack, Gatsby and Uniform","location":"Virtual","date":"2021-03-03","id":"clifq55jz3xqp0aw4je7y5sw1","link":"https://gatsbyconf.com/event/easily-build-a-dynamic-and-personalized-website-with-contentstack-gatsby-and-uniform/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md","_source":"content","_file":"5.speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md","_extension":"md"},{"_path":"/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 03 24 Clifq559p3xgf0buvzch9im3l","description":"","conference":"City JS Conf 2021","talk":"A developers guide to low carbon websites","location":"Virtual","date":"2021-03-24","id":"clifq559p3xgf0buvzch9im3l","link":"https://cityjsconf.org/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-03-24-clifq559p3xgf0buvzch9im3l.md","_source":"content","_file":"5.speaking/2021-03-24-clifq559p3xgf0buvzch9im3l.md","_extension":"md"},{"_path":"/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","description":"","conference":"Before Devbreak","talk":"Dynamic personalization on JAMstack websites","location":"Virtual","date":"2021-04-07","id":"clifq54zf3wfz0bw80v5gzndk","link":"https://www.devbreak.io/before-devbreak","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-04-07-clifq54zf3wfz0bw80v5gzndk.md","_source":"content","_file":"5.speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk.md","_extension":"md"},{"_path":"/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 04 20 Clifq54na3xgb0buvrvmbamxf","description":"","conference":"Vue Storefront Summit 2021","talk":"Hyper fast personalization for modern e-commerce","location":"Virtual","date":"2021-04-20","id":"clifq54na3xgb0buvrvmbamxf","link":"https://hopin.com/events/vue-storefront-summit-2021","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-04-20-clifq54na3xgb0buvrvmbamxf.md","_source":"content","_file":"5.speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf.md","_extension":"md"},{"_path":"/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","description":"","conference":"2021 VueDay Italy","talk":"MC & talk: Magical combination to build a modern website","location":"Virtual","date":"2021-04-29","id":"clifq54ct3wfu0bw8zsr9mejw","link":"https://2021.vueday.it/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md","_source":"content","_file":"5.speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md","_extension":"md"},{"_path":"/speaking/2021-07-27-clifq542s3xg60buvdk199xtq","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 07 27 Clifq542s3xg60buvdk199xtq","description":"","conference":"Programmed in Pencil Meetup","talk":"This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","location":"Virtual","date":"2021-07-27","id":"clifq542s3xg60buvdk199xtq","link":"https://www.programmedinpencil.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-07-27-clifq542s3xg60buvdk199xtq.md","_source":"content","_file":"5.speaking/2021-07-27-clifq542s3xg60buvdk199xtq.md","_extension":"md"},{"_path":"/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 09 07 Clifq53so3wfq0bw81xni3t7x","description":"","conference":"DevBreak - The ultimate tech festival","talk":"JAMstack is the future. I think. Maybe.","location":"Bouville, France","date":"2021-09-07","id":"clifq53so3wfq0bw81xni3t7x","link":"https://www.devbreak.io/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-09-07-clifq53so3wfq0bw81xni3t7x.md","_source":"content","_file":"5.speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x.md","_extension":"md"},{"_path":"/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","description":"","conference":"Fast Forward 2021","talk":"This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","location":"Virtual","date":"2021-11-04","id":"clifq53ib40gf0bw9c3mxprzu","link":"https://www.contentful.com/fast-forward/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-11-04-clifq53ib40gf0bw9c3mxprzu.md","_source":"content","_file":"5.speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu.md","_extension":"md"},{"_path":"/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 11 10 Clifq536v3xg20buvlz1n7ddw","description":"","conference":"Kontent Horizons","talk":"This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","location":"Virtual","date":"2021-11-10","id":"clifq536v3xg20buvlz1n7ddw","link":"https://horizons.kontent.ai/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-11-10-clifq536v3xg20buvlz1n7ddw.md","_source":"content","_file":"5.speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw.md","_extension":"md"},{"_path":"/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","description":"","conference":"VueConf Toronto 2021","talk":"Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again...","location":"Virtual","date":"2021-11-22","id":"clifq52wr3wfm0bw83eawjx9x","link":"https://www.vuetoronto.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-11-22-clifq52wr3wfm0bw83eawjx9x.md","_source":"content","_file":"5.speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x.md","_extension":"md"},{"_path":"/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","description":"","conference":"E-Commerce tech summit 21 by Geekle","talk":"Modern Commerce - How Jamstack will change the world","location":"Virtual","date":"2021-12-01","id":"clifq52jm3xqj0aw4mxuyuaey","link":"https://geekle.us/e-commerce","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md","_source":"content","_file":"5.speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md","_extension":"md"},{"_path":"/speaking/2021-12-14-clifq528940gb0bw9bok0o68k","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 12 14 Clifq528940gb0bw9bok0o68k","description":"","conference":"Vue.js Berlin","talk":"Vue js round-table discussion","location":"Virtual","date":"2021-12-14","id":"clifq528940gb0bw9bok0o68k","link":"https://www.meetup.com/Vue-js-Berlin/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-12-14-clifq528940gb0bw9bok0o68k.md","_source":"content","_file":"5.speaking/2021-12-14-clifq528940gb0bw9bok0o68k.md","_extension":"md"},{"_path":"/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","description":"","conference":"The Jam.dev 2022","talk":"Cable Managing the Jamstack","location":"Virtual","date":"2022-01-27","id":"clifq51vy3wf30bw8qsv8nsv9","link":"https://cfe.dev/events/the-jam-2022/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md","_source":"content","_file":"5.speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md","_extension":"md"},{"_path":"/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 02 08 Clifq51j53wez0bw8cd1znjmi","description":"","conference":"Kontent Rocks podcast","talk":"Personalisation in the Jamstack with Kentico Kontent","location":"virtual","date":"2022-02-08","id":"clifq51j53wez0bw8cd1znjmi","link":"https://podcasts.apple.com/us/podcast/kontent-rocks-podcast/id754786884","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-02-08-clifq51j53wez0bw8cd1znjmi.md","_source":"content","_file":"5.speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi.md","_extension":"md"},{"_path":"/speaking/2022-02-10-clifq515940g70bw9yu0ltedp","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 02 10 Clifq515940g70bw9yu0ltedp","description":"","conference":"LAB Group Round Table","talk":"Stick or Twist: Monolith v.s Microservices","location":"virtual","date":"2022-02-10","id":"clifq515940g70bw9yu0ltedp","link":"https://lab.co.uk/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-02-10-clifq515940g70bw9yu0ltedp.md","_source":"content","_file":"5.speaking/2022-02-10-clifq515940g70bw9yu0ltedp.md","_extension":"md"},{"_path":"/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 03 01 Clifq50sj40g30bw9rqy825mb","description":"","conference":"Vue Storefront Hackathon - Flash Talk","talk":"Modern Commerce - How Jamstack will change the world","location":"Virtual","date":"2022-03-01","id":"clifq50sj40g30bw9rqy825mb","link":"https://www.youtube.com/watch?v=1lhZqBvgoxU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-03-01-clifq50sj40g30bw9rqy825mb.md","_source":"content","_file":"5.speaking/2022-03-01-clifq50sj40g30bw9rqy825mb.md","_extension":"md"},{"_path":"/speaking/2022-03-02-clifq50g53xfr0buv56km2voa","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 03 02 Clifq50g53xfr0buv56km2voa","description":"","conference":"GatsbyConf 2022","talk":"The Modern DXP: How Jamstack will change the world","location":"Virtual","date":"2022-03-02","id":"clifq50g53xfr0buv56km2voa","link":"https://www.gatsbyconf.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-03-02-clifq50g53xfr0buv56km2voa.md","_source":"content","_file":"5.speaking/2022-03-02-clifq50g53xfr0buv56km2voa.md","_extension":"md"},{"_path":"/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 05 26 Clifq506e3wev0bw88q2lf63q","description":"","conference":"Vue.js Global Summit'22","talk":"The future of Jamstack is composable","location":"virtual","date":"2022-05-26","id":"clifq506e3wev0bw88q2lf63q","link":"https://events.geekle.us/vuejs/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-05-26-clifq506e3wev0bw88q2lf63q.md","_source":"content","_file":"5.speaking/2022-05-26-clifq506e3wev0bw88q2lf63q.md","_extension":"md"},{"_path":"/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","description":"","conference":"Vue.js Global 2022","talk":"Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again","location":"Theater Amsterdam, The Netherlands","date":"2022-06-02","id":"clifq4zvh40fz0bw986sdpv5u","link":"https://vuejs.amsterdam/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-06-02-clifq4zvh40fz0bw986sdpv5u.md","_source":"content","_file":"5.speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u.md","_extension":"md"},{"_path":"/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","description":"","conference":"MACHathon LinkedIn Live","talk":"Presenting MACHathon Uniform Entry","location":"Linkedin","date":"2022-06-13","id":"clifq4z8o3xqf0aw49q8f55f9","link":"https://www.linkedin.com/video/event/urn:li:ugcPost:6940601525266206720/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md","_source":"content","_file":"5.speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md","_extension":"md"},{"_path":"/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","description":"","conference":"The state of Jamstack by Kentico","talk":"Discussion on state of Jamstack 2022","location":"Virtual","date":"2022-06-13","id":"clifq4zjc40fv0bw95ufcly4y","link":"https://kontent.ai/webinars/state-of-jamstack-2022-report-emea/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-06-13-clifq4zjc40fv0bw95ufcly4y.md","_source":"content","_file":"5.speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y.md","_extension":"md"},{"_path":"/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","description":"","conference":"Vue.js Roadtrip Barcelona","talk":"The future of Jamstack is composable","location":"Barcalonam Glovo HQ, Barcelona, Spain","date":"2022-07-01","id":"clifq4ywg3xq60aw48tkujxyl","link":"https://www.eventbrite.co.uk/e/vuejs-roadtrip-barcelona-tickets-339022735127","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-07-01-clifq4ywg3xq60aw48tkujxyl.md","_source":"content","_file":"5.speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl.md","_extension":"md"},{"_path":"/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 07 27 Clifq4yep3xf20buv5vorwrl5","description":"","conference":"Composability Summit 2022","talk":"The modern digital pipeline, the future is composable","location":"Virtual","date":"2022-07-27","id":"clifq4yep3xf20buv5vorwrl5","link":"https://composability.dev/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-07-27-clifq4yep3xf20buv5vorwrl5.md","_source":"content","_file":"5.speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5.md","_extension":"md"},{"_path":"/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 08 10 Clifq4xw640fr0bw9po5n2nug","description":"","conference":"Netlify Live Stream","talk":"Live: Creating a Composable Site with Personalization on the Edge","location":"Virtual","date":"2022-08-10","id":"clifq4xw640fr0bw9po5n2nug","link":"https://www.youtube.com/watch?v=mntPUZRy3wA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-08-10-clifq4xw640fr0bw9po5n2nug.md","_source":"content","_file":"5.speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug.md","_extension":"md"},{"_path":"/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 08 11 Clifq4xdz3wek0bw862z7knrr","description":"","conference":"Agility CMS Webinar","talk":"How can enterprises move from monolithic solutions to composability","location":"Virtual","date":"2022-08-11","id":"clifq4xdz3wek0bw862z7knrr","link":"https://agilitycms.com/resources/events/how-can-enterprises-move-from-monolithic-solutions-to-composability","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-08-11-clifq4xdz3wek0bw862z7knrr.md","_source":"content","_file":"5.speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr.md","_extension":"md"},{"_path":"/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","description":"","conference":"Swipe Con 2022","talk":"The power of personalization in composable architectures","location":"Virtual","date":"2022-08-25","id":"clifq4x0z3xq20aw48a1n9hxy","link":"https://uandi.com/swipe-con","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md","_source":"content","_file":"5.speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md","_extension":"md"},{"_path":"/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","description":"","conference":"Cloudinary Podcast","talk":"Benefits and Factors to Consider with MACH Architecture","location":"Virtual","date":"2022-09-14","id":"clifq4wqo40fh0bw9sifjtw70","link":"https://www.youtube.com/watch?v=uC1iD_Sq_Bo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-09-14-clifq4wqo40fh0bw9sifjtw70.md","_source":"content","_file":"5.speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70.md","_extension":"md"},{"_path":"/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","description":"","conference":"Javascript Global Summit'22","talk":"The modern digital pipeline, the future is composable","location":"virtual","date":"2022-09-27","id":"clifq4wef3xpx0aw4l7ueiqwb","link":"https://events.geekle.us/js/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md","_source":"content","_file":"5.speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md","_extension":"md"},{"_path":"/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 10 14 Clifq4w263xet0buv0mzqzfre","description":"","conference":"Strapi live stream","talk":"Composability with Strapi and Uniform","location":"Virtual","date":"2022-10-14","id":"clifq4w263xet0buv0mzqzfre","link":"https://lu.ma/strapi-uniform-magic","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-10-14-clifq4w263xet0buv0mzqzfre.md","_source":"content","_file":"5.speaking/2022-10-14-clifq4w263xet0buv0mzqzfre.md","_extension":"md"},{"_path":"/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 11 02 Clifq4vps3xep0buvimxfntyq","description":"","conference":"VueConf Toronto 2022","talk":"The modern digital pipeline, the future of the jamstack is composable","location":"Metro Toronto Convention Centre","date":"2022-11-02","id":"clifq4vps3xep0buvimxfntyq","link":"https://www.vuetoronto.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-11-02-clifq4vps3xep0buvimxfntyq.md","_source":"content","_file":"5.speaking/2022-11-02-clifq4vps3xep0buvimxfntyq.md","_extension":"md"},{"_path":"/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","description":"","conference":"JamstackConf 2022","talk":"The modern digital pipeline, the future of the jamstack is composable","location":"San Fransisco, United States","date":"2022-11-08","id":"clifq4vdb40el0bw9il2y3pb4","link":"https://jamstack.org/conf/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-11-08-clifq4vdb40el0bw9il2y3pb4.md","_source":"content","_file":"5.speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4.md","_extension":"md"},{"_path":"/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","description":"","conference":"Vuejs Amsterdam","talk":"Alive and Kicking - a Vue into Rock & Roll","location":"Amsterdam","date":"2023-02-08","id":"clifq4uz43xpt0aw4mw4awvuj","link":"https://vuejs.amsterdam/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md","_source":"content","_file":"5.speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md","_extension":"md"},{"_path":"/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","description":"","conference":"CityJS Conf London","talk":"The modern tech stack is composable","location":"London","date":"2023-03-29","id":"clifq4ul43we80bw8ihhkw7qr","link":"https://cityjsconf.org/speakers","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-03-29-clifq4ul43we80bw8ihhkw7qr.md","_source":"content","_file":"5.speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr.md","_extension":"md"},{"_path":"/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","description":"","conference":"Cloudinary User Summit London","talk":"Alive and Kicking, a Vue into Rock & Roll","location":"London","date":"2023-04-20","id":"clifq4u9b3xpm0aw45vj51alh","link":"https://events.cloudinary.com/cloudinaryusersummitlondon","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-04-20-clifq4u9b3xpm0aw45vj51alh.md","_source":"content","_file":"5.speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh.md","_extension":"md"},{"_path":"/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 05 12 Clifq4tw33we40bw8jxhaaroo","description":"","conference":"Vue.js London Life Conference","talk":"Alive and Kicking, a Vue into Rock & Roll","location":"London","date":"2023-05-12","id":"clifq4tw33we40bw8jxhaaroo","link":"https://vuejslive.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-05-12-clifq4tw33we40bw8jxhaaroo.md","_source":"content","_file":"5.speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo.md","_extension":"md"},{"_path":"/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","description":"","conference":"CityJS Athens","talk":"Alive and Kicking, a Vue into Rock & Roll as MC","location":"Athens","date":"2023-05-29","id":"clifq4thm3xel0buvdpqx8bdm","link":"https://greece.cityjsconf.org/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-05-29-clifq4thm3xel0buvdpqx8bdm.md","_source":"content","_file":"5.speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm.md","_extension":"md"},{"_path":"/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","description":"","conference":"Vue.js Global Summit '23","talk":"The modern front end is composable","location":"Virtual","date":"2023-06-06","id":"clifq4t4w40dr0bw98f7p9zrq","link":"https://events.geekle.us/vuejs23/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md","_source":"content","_file":"5.speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md","_extension":"md"},{"_path":"/speaking/2023-07-27-clifq4sto3xph0aw4letve613","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 07 27 Clifq4sto3xph0aw4letve613","description":"","conference":"WeAreDevelopers World Congress","talk":"Alive and Kicking, a Vue into Rock & Roll","location":"Berlin","date":"2023-07-27","id":"clifq4sto3xph0aw4letve613","link":"https://www.wearedevelopers.com/world-congress","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-07-27-clifq4sto3xph0aw4letve613.md","_source":"content","_file":"5.speaking/2023-07-27-clifq4sto3xph0aw4letve613.md","_extension":"md"},{"_path":"/speaking/2024-02-29-clkzot86xire30aujuy08465e","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2024 02 29 Clkzot86xire30aujuy08465e","description":"","conference":"DEVworld Conference 2024","talk":"Alive and Kicking - a vue into rock & roll","location":"Amsterdam","date":"2024-02-29","id":"clkzot86xire30aujuy08465e","link":"https://devworldconference.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2024-02-29-clkzot86xire30aujuy08465e.md","_source":"content","_file":"5.speaking/2024-02-29-clkzot86xire30aujuy08465e.md","_extension":"md"},{"_path":"/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","description":"","conference":"ContentCon 2024","talk":"Alive and Kicking","location":"Austin, Texas","date":"2024-06-05","id":"clqdq6ui7ts730bvzmk1xw47t","link":"https://www.contentstack.com/contentcon","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","_source":"content","_file":"5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","_extension":"md"},{"_path":"/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","description":"","conference":"CMSCamp Mallorca","talk":"Alive and Kicking","location":"Catalonia Majorica Palma Mallorca","date":"2024-09-27","id":"clqdq87gltsup0bvztwqw2f1v","link":"https://mallorca.cmscamp.eu/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","_source":"content","_file":"5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","_extension":"md"},{"_path":"/speaking","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Speaking","description":"Speaking desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Speaking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"VUEJS AMSTERDAM 2023"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","fit":"crop","height":618,"loading":"eager","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741136/Tim/332051017_2552795964930421_7872527921593081497_n.jpg","width":1440},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Presskit"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Looking for my bio, talk information or pictures? Go to the presskit page to find different varieties of my bio, headshots and past talks I have done. This page also includes slides and other info needed to add me as a speaker to your conference."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Emcee"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Masters of ceremonies, commonly called emcees, offer a profound value at conferences. As a seasoned emcee, I usually start with an anecdote as introduction, followed by an in-depth Q&A session that truly features the speakers and their content. Over the past few years, my emcee gigs have been largely virtual. Starting 2022, however, I've also acted as emcee at in-person conferences, such as Vuejs Amsterdam."}]}]}]}]}]},{"type":"element","tag":"talks","props":{":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:index.md","_source":"content","_file":"5.speaking/index.md","_extension":"md"},{"_path":"/livestreams","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"live streams","description":"live streams desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Live streams"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Live streams are the cornerstone of learning in public, gaining social trust and engaging with the community."}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"live-hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph Streams"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"misc-streams"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Personal Streams"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"live-uniform"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform Streams"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:6.livestreams.md","_source":"content","_file":"6.livestreams.md","_extension":"md"},{"_path":"/presskit","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"press kit","description":"presskit desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Press Kit"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659294037/Presskit/FDLC2019_462.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"title-block","props":{"tag":"h3","title":"What do I do"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim Benniks is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":". "},{"type":"element","tag":"a","props":{"href":"https://machalliance.com","rel":["nofollow"],"title":"https://machalliance.com"},"children":[{"type":"text","value":"MACH Alliance"}]},{"type":"text","value":" Tech Council member, "},{"type":"element","tag":"a","props":{"href":"https://nuxt.com","rel":["nofollow"],"title":"https://nuxt.com"},"children":[{"type":"text","value":"NuxtJS"}]},{"type":"text","value":" ambassador, "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com","rel":["nofollow"],"title":"https://cloudinary.com"},"children":[{"type":"text","value":"Cloudinary"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://supabase.com","rel":["nofollow"],"title":"https://supabase.com"},"children":[{"type":"text","value":"Supabase"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://algolia.com","rel":["nofollow"],"title":"https://algolia.com"},"children":[{"type":"text","value":"Algolia"}]},{"type":"text","value":" Ambassador, and "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"content creator"}]},{"type":"text","value":"."}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Mini bio"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Over the past 15 years, Tim has worked at various agencies in Amsterdam and Paris with global clients like Nike, Heineken, Google, Tommy Hilfiger, EA Games, CHANEL, L'Oréal, Procter & Gamble, Louis Vuitton, and Hermès."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Currently, Tim is Developer Relations Lead for Outreach and Awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/","rel":["nofollow"],"title":"https://hygraph.com/"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" with a focus on content creation, speaking, and community building. In particular, he plays an active role in the developer community as a frequent speaker at conferences and creator of YouTube videos on modern technologies. He also collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS while serving on the MACH Alliance Tech Council. It's all about quality, community, and development of fancy websites."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A demanding job like that needs balancing. Tim plays guitar and revels in family time with his wife, cats, and two little Corgis called Princess Nugget and Scarlet."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Shorter mini bio"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" with a focus on developer relations, community building, and content creation. He’s active in the developer community through speaking engagements at conferences and creation of YouTube videos on modern technologies. Tim collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS, and is a member of the MACH Alliance Tech Council. It's all about quality, community, and development of great websites."}]}]}]}]}]},{"type":"element","tag":"speaker-details","props":{},"children":[]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741257/Tim/IMG_1020.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"speaker-media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:descripiton":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Click on the images for their full resolution versions."}]}]},{"type":"element","tag":"template","props":{"v-slot:image1":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg","rel":["nofollow"],"target":"_blank"},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in Berlin","height":6960,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg","width":4640,"className":["fancy-image"]},"children":[]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:image2":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg","rel":["nofollow"],"target":"_blank"},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in Paris","height":3080,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg","width":5472,"className":["fancy-image"]},"children":[]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:image3":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png","rel":["nofollow"],"target":"_blank"},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in his studio","height":2880,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png","width":5120,"className":["fancy-image"]},"children":[]}]}]}]}]},{"type":"element","tag":"talks","props":{":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/347230970_264022386183185_8706521077970757537_n_vpj6co","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:7.presskit.md","_source":"content","_file":"7.presskit.md","_extension":"md"},{"_path":"/alive-and-kicking","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"alive and kicking","description":"alive and kicking desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A GUITAR KARAOKE EXPERIENCE WITH COMPOSABLE ARCHITECTURE"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718459447/Tim/contentcon-tim.png","width":1440,"fit":"cover","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Rock & Roll in the browser"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Get ready to rock out at your next tech conference! I've created an electrifying browser-based karaoke experience tailored explicitly for rock & roll guitar. Using the innovative power of Vue, Nuxt, and webmidi, everything from the backing tracks to the guitar amp presets is dynamically controlled."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And the best part? You, the audience, get to participate too! By logging in with Twitter or Github, you can live-vote what songs I should play next, making this a fully interactive and unforgettable experience."}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948358/Alive%20and%20Kicking/104649HDV09996-Enhanced-NR.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Share your vote"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You, the audience, get to participate too! By logging in with your Twitter or Github account, you can live-vote what songs I should play next during my guitar karaoke performance."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But that's not all - every vote you cast will be displayed on the big screen as a bouncing ball, making you a part of the talk. You vote, I play - let's make this a night to remember!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After voting for your favorite song, you can share a personalized image of the song and your profile picture on your social media accounts."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:media":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":1080,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw md:40vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718461639/share_ddu23k.jpg","width":1920},"children":[]}]}]}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948347/Alive%20and%20Kicking/102217HDV09938-Enhanced-NR.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"6",":small":"false","folder":"alive-and-kicking"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:8.alive-and-kicking.md","_source":"content","_file":"8.alive-and-kicking.md","_extension":"md"}],"navigation":[{"title":"About","_path":"/about"},{"title":"videos","_path":"/videos","children":[{"title":"Alive And Kicking","_path":"/videos/alive-and-kicking","children":[{"title":"The story behind Alive and kicking","_path":"/videos/alive-and-kicking/000-hhpitreyobi"},{"title":"72 hours in Austin, TX","_path":"/videos/alive-and-kicking/001-mvq-_s20ndk"},{"title":"Vue.js guitar karaoke: how I built it","_path":"/videos/alive-and-kicking/002-m0mrligs6i0"},{"title":"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","_path":"/videos/alive-and-kicking/003-p3pm_0p8lz4"},{"title":"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","_path":"/videos/alive-and-kicking/004-4m4tij0z20"}]},{"title":"Headless Creator","_path":"/videos/headless-creator","children":[{"title":"CDOBC 5: Transitioning from DXP to DXC","_path":"/videos/headless-creator/000-m8on6zkr7q4"},{"title":"CDOBC Lesson 4: The DXP Tech Stack Overview","_path":"/videos/headless-creator/001-smbq8aoa4jm"},{"title":"CDOBC Lesson 3: Separation of Concerns","_path":"/videos/headless-creator/002-sx5fbtcnrsg"},{"title":"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","_path":"/videos/headless-creator/003-eybdyoihn1g"},{"title":"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","_path":"/videos/headless-creator/004-hshm8hlopka"}]},{"title":"Hygraph","_path":"/videos/hygraph","children":[{"title":"The simplest way to connect Hygraph to NuxtJS","_path":"/videos/hygraph/000-m8qftvizsmw"},{"title":"The simplest way to connect Hygraph to Astro","_path":"/videos/hygraph/001-aahu9x5wajy"},{"title":"The simplest way to connect Hygraph to Next.js","_path":"/videos/hygraph/002-fksw0bfbtdo"},{"title":"How to connect Commercetools and Hygraph","_path":"/videos/hygraph/003-x8tb3li6dg0"},{"title":"How to add a remote REST source to Hygraph","_path":"/videos/hygraph/004-zredqavtow4"},{"title":"How to add a remote GraphQL source to Hygraph","_path":"/videos/hygraph/005-aydykxckkfe"},{"title":"CMS Feature ninja: set up a GraphQL where clause on any field","_path":"/videos/hygraph/006-axq-jo8hmzq"},{"title":"Headless commerce with #Nuxt and #Tailwind.","_path":"/videos/hygraph/007-e9jxm4h4a48"},{"title":"Creating an Enterprise News starter with Next.js and Hygraph CMS","_path":"/videos/hygraph/008-hs1imxycyqg"},{"title":"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","_path":"/videos/hygraph/009-snhzgplvm8o"},{"title":"Set up headless CMS localization in 6 mins","_path":"/videos/hygraph/010-8_ttkblpdpm"},{"title":"How to use Nuxt 3 with Hygraph and GraphQL","_path":"/videos/hygraph/011-keqn1rt8fwq"},{"title":"How to add any REST source to Hygraph headless CMS","_path":"/videos/hygraph/012-nphsqsol3xc"},{"title":"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","_path":"/videos/hygraph/013-exzp3okqtxk"}]},{"title":"videos","_path":"/videos"},{"title":"Live Hygraph","_path":"/videos/live-hygraph","children":[{"title":"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","_path":"/videos/live-hygraph/000-eydstedp-v4"},{"title":"How to integrate Cloudinary with headless CMS w/ Colby Fayock","_path":"/videos/live-hygraph/001-_iah2t5g02o"},{"title":"Combining WordPress with Headless CMS","_path":"/videos/live-hygraph/002-fy_w2yousbo"},{"title":"Exploring localisation & translation with headless CMS","_path":"/videos/live-hygraph/003-jgx1dytflvq"},{"title":"Customizing Hygraph data with external services","_path":"/videos/live-hygraph/004-ombpixxx-3e"},{"title":"Exploring the Hygraph Asset Manager","_path":"/videos/live-hygraph/005-ht-scjkem9q"},{"title":"Hygraph Studio Launch - Workshop: Hygraph Asset Management","_path":"/videos/live-hygraph/006-qegf6rerifw"},{"title":"Hygraph Studio Launch - DevX: Performance Gains","_path":"/videos/live-hygraph/007-etie3zygone"},{"title":"How to build a live-voting experience with Hygraph, Nuxt and Supabase","_path":"/videos/live-hygraph/008-phcxh2m7ozm"},{"title":"Building Content Models for Devs and Editors w/ Lo & Bryan","_path":"/videos/live-hygraph/009-pzc527rz7es"},{"title":"Bryan teaches Tim Next.js with GraphQL and Hygraph","_path":"/videos/live-hygraph/010-t00uxbjsdum"},{"title":"Pagination with Astro and Hygraph","_path":"/videos/live-hygraph/011-o_dvlrwpebk"},{"title":"How to use Rich Text in a Headless CMS","_path":"/videos/live-hygraph/012-vrrzgly1n5c"},{"title":"Add multi-tenancy to a Headless CMS","_path":"/videos/live-hygraph/013-m5xamvlqh1g"},{"title":"Programmatically import data into the Hygraph Headless CMS","_path":"/videos/live-hygraph/014-jc09s5zmw_k"},{"title":"Building an e-commerce site with Hygraph and Astro","_path":"/videos/live-hygraph/015-aietljmxmxm"}]},{"title":"Live Uniform","_path":"/videos/live-uniform","children":[{"title":"Uniform Product Meetup","_path":"/videos/live-uniform/000-5qx4fmkkh_m"},{"title":"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","_path":"/videos/live-uniform/001-zdqk9zql3za"},{"title":"Product Meetup #2: Interesting usecases with Adam Lamarre","_path":"/videos/live-uniform/002-tngn1e4hefi"},{"title":"Personalizing Storyblok with Uniform and Nuxt.js","_path":"/videos/live-uniform/003-vkfasdfduf8"},{"title":"Page compositions in Next.js with Uniform Canvas and the Jamstack","_path":"/videos/live-uniform/004-baibxsoagdw"},{"title":"A Uniform Canvas use case deep-dive","_path":"/videos/live-uniform/005-rv4wzkhjp7k"},{"title":"The Modern Digital Pipeline - The future of Jamstack is composable","_path":"/videos/live-uniform/006-r2lwjmehkmo"},{"title":"Composable without Compromise w/ Natalia Venditto","_path":"/videos/live-uniform/007-7-ebcqip9ec"},{"title":"Unpack the Stack w/ Daniel Roe","_path":"/videos/live-uniform/008-1h0jr_vbz7m"},{"title":"Composable without Compromise w/ Matt Webb","_path":"/videos/live-uniform/009-sitbljdtbjy"},{"title":"Unpack the Stack w/ Colby Fayock","_path":"/videos/live-uniform/010-rbjccl9qate"},{"title":"Composable without Compromise w/ Casper Rasmussen","_path":"/videos/live-uniform/011-yjc8gvarvge"},{"title":"Unpack the Stack w/ Brittney Postma","_path":"/videos/live-uniform/012-6ek_bv2yrf8"},{"title":"Composable without Compromise w/ Filip Rakowski","_path":"/videos/live-uniform/013-trisovjcivw"},{"title":"Unpack the Stack w/ Tomek Juranek","_path":"/videos/live-uniform/014-0xsg-apdt6c"},{"title":"Composable without Compromise w/ Dom Selvon","_path":"/videos/live-uniform/015-hsirsjtqgs8"},{"title":"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","_path":"/videos/live-uniform/016-uuhul0tpezy"},{"title":"Unpack the stack: next.js app directory with Steven Tey","_path":"/videos/live-uniform/017-8ju8znzjoh4"},{"title":"Unpack the stack with Elian Van Cutsem","_path":"/videos/live-uniform/018-wmacanhmrsi"},{"title":"Unpack the Stack with Marc Backes","_path":"/videos/live-uniform/019-axqvbrv_xc8"},{"title":"Unpack the stack with William Imoh","_path":"/videos/live-uniform/020-gmh8pm-nvl0"},{"title":"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","_path":"/videos/live-uniform/021-5r8_kiqjk6c"},{"title":"Unpack the Stack w/ Lucie from Prismic","_path":"/videos/live-uniform/022-hveoqtpoimk"},{"title":"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","_path":"/videos/live-uniform/023-skuvyvd-njg"},{"title":"Unpack the Stack w/ Harshil from Contentful","_path":"/videos/live-uniform/024-mnkxtbb3_vw"},{"title":"Introducing: Mesh + Component Starter Kit with Richard and Tim","_path":"/videos/live-uniform/025-hmtwfhon2o"},{"title":"Composable without Compromise w/ Jonas Ulrich","_path":"/videos/live-uniform/026-dvqvxggnp5q"},{"title":"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","_path":"/videos/live-uniform/027-vfeieragxac"},{"title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","_path":"/videos/live-uniform/028-ekut1koa2n8"},{"title":"How the RFP process has improved with composable architectures","_path":"/videos/live-uniform/029-opklvtnkncs"},{"title":"Composable CMS evaluation: Delivery APIs and CDNs","_path":"/videos/live-uniform/030-m-kkuomzg88"},{"title":"What legacy? Migration tactics for monolith to composable","_path":"/videos/live-uniform/031-jvgiaotcerq"},{"title":"Composable CMS evaluation: SDK frameworks","_path":"/videos/live-uniform/032-isxyi-5do5o"}]},{"title":"Misc Streams","_path":"/videos/misc-streams","children":[{"title":"The Dare Dialogues - S01E03: Making Waves","_path":"/videos/misc-streams/000-1tjmq5b0fmc"},{"title":"The Dare Dialogues - S01E02: Mount Stupid","_path":"/videos/misc-streams/001-tvpdzpl2pvm"},{"title":"Customer Story: How to Create AI Videos for B2B Content Marketing","_path":"/videos/misc-streams/002-rjjyhwso1gg"},{"title":"What legacy? Migration tactics for monolith to composable","_path":"/videos/misc-streams/003-jvgiaotcerq"},{"title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","_path":"/videos/misc-streams/004-ekut1koa2n8"},{"title":"Tim Tries: TresJS with Alvaro Sabu","_path":"/videos/misc-streams/005-d8ahncxgryg"},{"title":"Keyboard Madness with Janos Kehl and Konstantin Bifert","_path":"/videos/misc-streams/006-umfrj32jle0"}]},{"title":"Mp","_path":"/videos/mp","children":[{"title":"Vue.js Amsterdam 2024","_path":"/videos/mp/000-ubgzoawmqlw"},{"title":"Vue.js Amsterdam Vlog 2023","_path":"/videos/mp/001-zx6_fi0sdmy"},{"title":"JSWorld Conference 2023 Vlog","_path":"/videos/mp/002-d4rai10p9m4"},{"title":"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","_path":"/videos/mp/003-tmf2wzntooa"},{"title":"JSWorld Conference 2022 - Vlog","_path":"/videos/mp/004-xhbwuk0qlue"},{"title":"Vue.js Roadtrip Barcelona - Vlog","_path":"/videos/mp/005-2e_kk9mqrwm"}]},{"title":"Tim","_path":"/videos/tim","children":[{"title":"72 hours in Austin, TX","_path":"/videos/tim/000-mvq-_s20ndk"},{"title":"The Jake Ward Interview. The power of developer advocacy with Data Protocol","_path":"/videos/tim/001-vex0ktitib4"},{"title":"How to do Developer Relations in 2024","_path":"/videos/tim/002-196iqp-lhlw"},{"title":"Cloudinary's hidden magic: AI image manipulation in the URL","_path":"/videos/tim/003-yutf3yvsdco"},{"title":"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","_path":"/videos/tim/004-iip2anhietg"},{"title":"How To Make The Best AI Avatar With Heygen","_path":"/videos/tim/005-_wrtdvv37y0"},{"title":"How to tell if you're becoming a senior dev","_path":"/videos/tim/006-j7jsa49zqja"},{"title":"Hygraph Content Federation FTW","_path":"/videos/tim/007-ed1tipzxzr8"},{"title":"Tim Tries caisy CMS: the best CMS for agencies?","_path":"/videos/tim/008-3tbdmf1pwe"},{"title":"The best Nuxt 3 GraphQL setup","_path":"/videos/tim/009-q282biqyj6a"},{"title":"Browser Client Hints are awesome!","_path":"/videos/tim/010-h3rlwn27ga8"},{"title":"This is Headless 2.0","_path":"/videos/tim/011-ergktbs0woe"},{"title":"Nuxt 3: Learn about Pinia setup and basics","_path":"/videos/tim/012-zscc8-0-dis"},{"title":"I cloned myself with AI to create more content","_path":"/videos/tim/013-zn2zxyvw4hy"},{"title":"Vue.js Live London 2023 Vlog","_path":"/videos/tim/014-dyq17r5c9-s"},{"title":"AI audio for content creators","_path":"/videos/tim/015-oq050_ytylk"},{"title":"I joined the Supasquad ambassadors program at Supabase!","_path":"/videos/tim/016-rwrzovc5oc4"},{"title":"Vue.js guitar karaoke: how I built it","_path":"/videos/tim/017-m0mrligs6i0"},{"title":"The story behind Alive and kicking","_path":"/videos/tim/018-hhpitreyobi"},{"title":"I fell back in love with Sitecore","_path":"/videos/tim/019-e64eyulaomk"},{"title":"JamstackConf talk: DXC, the modern tech stack","_path":"/videos/tim/020-xetyke98mp0"},{"title":"Turbo Tutorial | Vue 3: Learn how to make a composable","_path":"/videos/tim/021-0xo0bnzquf4"},{"title":"Turbo Tutorial | Nuxt 3: How to add client only components","_path":"/videos/tim/022-cwkjy7raony"},{"title":"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","_path":"/videos/tim/023-lsf2rhzsykg"},{"title":"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","_path":"/videos/tim/024-mg0fevwnue0"},{"title":"Turbo Tutorial | Learn about responsive image basics","_path":"/videos/tim/025-npse6yqqzki"},{"title":"Turbo Tutorial | Nuxt 3: Head management","_path":"/videos/tim/026-rh6hjo9xk-o"},{"title":"Turbo Tutorial | Nuxt 3: schema org","_path":"/videos/tim/027-rth3oikjp2k"},{"title":"Turbo Tutorial | Nuxt 3: Query from an external API + read more","_path":"/videos/tim/028-zad7s01lfic"},{"title":"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","_path":"/videos/tim/029-5i1zqfu6xtw"},{"title":"Turbo Tutorial | Nuxt 3: Pick & Transform","_path":"/videos/tim/030-d33ynlhvhxm"},{"title":"Tim Tries Medusajs the open source Shopify alternative","_path":"/videos/tim/031-c1jduhsh1ae"},{"title":"How I film videos in my new studio. A content creator's dream.","_path":"/videos/tim/032-8z1npig-ya"},{"title":"The State of Vue in 2022 with Monterail's Szymon Licau","_path":"/videos/tim/033-8wxdfixxktw"},{"title":"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","_path":"/videos/tim/034-yzh1l740tno"},{"title":"How to buy gear for content creation in 2022","_path":"/videos/tim/035-mdzkgc1pgbc"},{"title":"I built my own YouTube studio 2022","_path":"/videos/tim/036-dli7uzzddx8"},{"title":"Cable management for Nuxt 3","_path":"/videos/tim/037-ry60wvg0fzq"},{"title":"My top 5 favourite Nuxt 3 features","_path":"/videos/tim/038-ek-hhozlfvg"},{"title":"Vlog: DevBreak21 what an amazing conference experience!","_path":"/videos/tim/039-kn5u4ahcs_0"},{"title":"Make your website even faster with Astro!","_path":"/videos/tim/040-o8m4cs3o4ii"},{"title":"Vlog: I'm building my own studio!","_path":"/videos/tim/041-xba15vr-kfy"},{"title":"Nuxt vs Next: the battle of the Images","_path":"/videos/tim/042-lpk392g10ou"},{"title":"The Ultimate Guide to Responsive Images","_path":"/videos/tim/043-uxjgt2_mf90"},{"title":"Tim Tries: Storyblok. One of the best headless content editing experiences","_path":"/videos/tim/044-d0ra_m3jlsy"},{"title":"Tim Tries: Algolia Crawler Plugin for Netlify","_path":"/videos/tim/045-7jk6nyalhuc"},{"title":"Apple M1 with Tailwind JIT and Vite is faster than my brain","_path":"/videos/tim/046-su22r2w3wea"},{"title":"Unboxing the new M1 Mac Mini for Video editing and programming.","_path":"/videos/tim/047-6ub_k4uvz20"},{"title":"Core Web Vitals explained with Ishan Anand | e01","_path":"/videos/tim/048-ec7pvgy8xsq"},{"title":"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","_path":"/videos/tim/049-lsxu_q-8rrc"},{"title":"The Modern DXP: How JAMstack will change the world","_path":"/videos/tim/050-yezaod1sddg"},{"title":"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","_path":"/videos/tim/051-dv5mlxbrti8"},{"title":"I have a new job at a Silicon Valley Startup!","_path":"/videos/tim/052-hcthe5pwhvm"},{"title":"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","_path":"/videos/tim/053-zd7qkgd8ix8"},{"title":"2020 The best year of my career","_path":"/videos/tim/054-bhffzm6n3tw"},{"title":"How to build your online persona","_path":"/videos/tim/055-s1od1u-itka"},{"title":"How to record yourself guide","_path":"/videos/tim/056-rm_bameopiy"},{"title":"Interview with Alex Shyba co-founder of Uniform","_path":"/videos/tim/057-db5jjbwg-zm"},{"title":"How to reduce bundle sizes in Nuxt","_path":"/videos/tim/058-iykkwy8k2d4"},{"title":"Interview with Evan You","_path":"/videos/tim/059-nr_aohhgl3s"},{"title":"Easy dynamic routes in your Nuxt sitemap","_path":"/videos/tim/060-oxjhew-10aq"},{"title":"Webpack 5 module federation and more","_path":"/videos/tim/061-zxz9mojtwh8"},{"title":"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","_path":"/videos/tim/062-xiz2p0zlbd8"},{"title":"Magical combination to build a modern website","_path":"/videos/tim/063-v5aobiirud4"},{"title":"Hi! 👋 I'm Tim and I'm a content creator!","_path":"/videos/tim/064-jtghl7ggoas"},{"title":"Tim Tries: Chakra UI with Jonathan Bakebwa","_path":"/videos/tim/065-96xypbh-hyo"},{"title":"Tim Tries: TailwindCSS with Alexander Lichter","_path":"/videos/tim/066-0vdfegtjdcg"},{"title":"Tim's Vlog: How to be a successful leader","_path":"/videos/tim/067-mcyeoin1s48"},{"title":"Vue.js Global talk: Introducing Vite & Vitepress","_path":"/videos/tim/068-gojckw5ih7e"},{"title":"A developers guide to low carbon websites","_path":"/videos/tim/069-ewlegish6dw"},{"title":"Tim's vlog: Career advice for developers","_path":"/videos/tim/070-auzzgmyn0z4"},{"title":"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","_path":"/videos/tim/071-zuht0g3zpyw"},{"title":"Vue.js Global Conference: An interview with Anthony Gore","_path":"/videos/tim/072-madbxcbsvqo"},{"title":"Vue.js Global Conference: An interview with Eduardo San Martin Morote","_path":"/videos/tim/073-uufbfcipaly"},{"title":"Webpack tutorial: Create a config from scratch","_path":"/videos/tim/074-fyuvqruzevy"},{"title":"Vue.js Global conference: An interview with Gift Egwuenu","_path":"/videos/tim/075-tlbstgzcyyy"},{"title":"Vue.js Global conference: An interview with Filip Rakowski","_path":"/videos/tim/076-brmxytpulm4"},{"title":"Vue.js Global conference: An interview with Debbie O'Brien","_path":"/videos/tim/077-ibkgryfpuds"},{"title":"Vue.js Global conference: An interview with Maria Lamardo","_path":"/videos/tim/078-2mfsb5ulhks"},{"title":"Azure functions revisited for v3. Conclusion: AWESOME","_path":"/videos/tim/079-d0jk7hyu1ai"},{"title":"Tutorial: How to build a Gridsome Source Plugin","_path":"/videos/tim/080-v50mhzzffaa"},{"title":"My audio setup 2020","_path":"/videos/tim/081-pu8f59x14-y"},{"title":"Tim Tries: Azure Static Web Apps","_path":"/videos/tim/082-a54ifas8rts"},{"title":"Tutorial: Vue 3 composition API and Vite to recreate TikTok","_path":"/videos/tim/083-ggaoxqtc7ke"},{"title":"Tim Tries: Slice Machine by Nuxt and Prismic","_path":"/videos/tim/084-bpjjxxqycdi"},{"title":"An Interview with Scott Tolinski from Level up Tutorials","_path":"/videos/tim/085-zpq_gqmit5y"},{"title":"Lazy Loading Images with Prismic and Vue.js","_path":"/videos/tim/086-5jaypm6gx1o"},{"title":"An Interview with Jen Looper from Microsoft","_path":"/videos/tim/087-cf5_pit-ai"},{"title":"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","_path":"/videos/tim/088-tqr2eo7tivc"},{"title":"An interview with Debbie O'brien from Nuxtjs","_path":"/videos/tim/089-aw4nl6hgjb0"},{"title":"Quarantine licks #2 - Folksy Tunes","_path":"/videos/tim/090-gxwrzna4udq"},{"title":"COVID-19 Work from home: how to make your webcam look good","_path":"/videos/tim/091-xit7qtmcmik"},{"title":"Weight loss with Serveless architecture and the JAMstack","_path":"/videos/tim/092-bebr8ev2no8"},{"title":"Quarantine Licks #1 - Acoustic Blues","_path":"/videos/tim/093-wlqlclwjorc"},{"title":"An interview with Tim Benniks from Valtech","_path":"/videos/tim/094-zzrqozpc068"},{"title":"HTTP/2 performance: you still need a bundler!","_path":"/videos/tim/095-f5f7n2kc7hq"},{"title":"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","_path":"/videos/tim/096-nw0y6dkx1ku"},{"title":"An interview with Filip Rakowski from Vue Storefront","_path":"/videos/tim/097-vqjp5qfiolg"},{"title":"[Livestream] Team First - How to lead a team to success in a high pressure environment","_path":"/videos/tim/098-ltm7wz0q564"},{"title":"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","_path":"/videos/tim/099-u5s4dqqlt1o"},{"title":"Vue.js Amsterdam recap and exciting announcements!","_path":"/videos/tim/100-boby5h-r1hc"},{"title":"An interview with Anastasiya Flynn from Sitecore JSS","_path":"/videos/tim/101-pwqvqnnopiy"},{"title":"An interview with Eduardo from the Vue.js core team","_path":"/videos/tim/102-lkiomruiaae"},{"title":"Webpack basics and core concepts","_path":"/videos/tim/103-azqrjdqa_d8"},{"title":"5 tips to become a better web developer.","_path":"/videos/tim/104-wexof1tfi04"},{"title":"An interview with Maya Shavin: When you have the force, nothing is impossible!","_path":"/videos/tim/105-h7qmarrblw8"},{"title":"Code faster and make less mistakes","_path":"/videos/tim/106-liek4kwnsbq"},{"title":"An Introduction to my YouTube Channel","_path":"/videos/tim/107-shtbmwkzwpi"},{"title":"How to make your webcam look great!","_path":"/videos/tim/108-vcf1xfoegwm"}]},{"title":"Uniform","_path":"/videos/uniform","children":[{"title":"Uniform DXCP: composability with Headless 2.0","_path":"/videos/uniform/000-sf8tcv5t9pa"},{"title":"Uniform Canvas: Dynamic Pages","_path":"/videos/uniform/001-vkjwiqlm6_w"},{"title":"Uniform Canvas: Redirect management","_path":"/videos/uniform/002-ndrabg4x6ya"},{"title":"Uniform Dynamic Pages and Redirects","_path":"/videos/uniform/003-hcjlhnrjzpo"},{"title":"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","_path":"/videos/uniform/004-qh_ekk7cfzw"},{"title":"Uniform Canvas: loops","_path":"/videos/uniform/005-ffwvyuyzewu"},{"title":"Uniform Canvas: data types","_path":"/videos/uniform/006-zbi8h6-fp5c"},{"title":"Uniform Canvas: component patterns","_path":"/videos/uniform/007-mczgzargim8"},{"title":"CityJS conference talk: How to sniff out the glue code monster","_path":"/videos/uniform/008-rarbrmxkh5i"},{"title":"Setting up Canvas","_path":"/videos/uniform/009-3uyyxncppd8"},{"title":"Setting up Project map","_path":"/videos/uniform/010-krctdwmf9fg"},{"title":"Getting started with Uniform DXCP - The why and the how","_path":"/videos/uniform/011-j0zqlcmtseq"},{"title":"Work in new ways by integrating Algolia with Uniform’s visual editor","_path":"/videos/uniform/012-aoaqo3tlzpw"},{"title":"Getting Started with Uniform and Algolia","_path":"/videos/uniform/013-lfkshonh3oc"},{"title":"Creating with Canvas by Richard Bausek and Tim Benniks","_path":"/videos/uniform/014-t3avobqvwps"},{"title":"Uniform + Algolia = A Magical Combination","_path":"/videos/uniform/015-z_41xoh9w1w"},{"title":"Uniform and Cloudinary play very well together!","_path":"/videos/uniform/016-oqqj-tu-urc"},{"title":"Nuxt 3 with Content v2 and Uniform is magic","_path":"/videos/uniform/017-sy9xkqrxzk8"},{"title":"Uniform CLI: how to manage your compositions","_path":"/videos/uniform/018-e-9ylltykzk"},{"title":"Up and running with Uniform & Nuxt 3 in three mins!","_path":"/videos/uniform/019-hkcxn_r0m54"},{"title":"Setting up live preview with Uniform and Nuxt 3","_path":"/videos/uniform/020-u41omxoadtq"},{"title":"Uniform MACHathon 2022 - Rage against MACHine's project demo","_path":"/videos/uniform/021-h-l_nj5aojs"},{"title":"MACHathon 2022 entry Rage Against the MACHine","_path":"/videos/uniform/022-w4ppzyucowm"},{"title":"Clearbit + Uniform Context = Super-powered personalization","_path":"/videos/uniform/023-ib6dglgf7uc"},{"title":"The Uniform Content Editing Workflow","_path":"/videos/uniform/024-4xykmrzo8ha"},{"title":"The future of the Jamstack is composable","_path":"/videos/uniform/025-4tuixex-iwk"},{"title":"Progressing through Environments with Uniform","_path":"/videos/uniform/026-9q_1wzx_kju"},{"title":"Uniform Product Meetup: Personalizing content based on user location","_path":"/videos/uniform/027-myj-ild_rxk"},{"title":"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","_path":"/videos/uniform/028-jdl4a64klrg"},{"title":"Jamstack Fridays with T&T: Personalization with Uniform Canvas","_path":"/videos/uniform/029-fevaivas-ye"},{"title":"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","_path":"/videos/uniform/030-_8gh9oycsus"},{"title":"New features for Contentful in Uniform Canvas","_path":"/videos/uniform/031-vvlwwonsqe8"},{"title":"Take your BigCommerce store to the next level with faster time to market and personalization","_path":"/videos/uniform/032-evmwlfhv8wc"},{"title":"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","_path":"/videos/uniform/033-jjwwwr9uixo"},{"title":"Uniform Tutorial Series #3: Defining Intents","_path":"/videos/uniform/034-gwbkr9ut5-w"},{"title":"Uniform Tutorial Series #2: Intents & Signals","_path":"/videos/uniform/035-0gp_yf4fvo8"},{"title":"Uniform Tutorial Series #1: Personalization Basics","_path":"/videos/uniform/036-_tkrrqdsolk"},{"title":"Uniform Platform for business users","_path":"/videos/uniform/037-pt1p8ixie-k"},{"title":"Uniform Platform for Developers","_path":"/videos/uniform/038-jul6h-3wrnq"},{"title":"Why is Jamstack so important for the future of DXP","_path":"/videos/uniform/039-pdekgezhffi"},{"title":"The problem of modern DXP (and the solution)","_path":"/videos/uniform/040-iaabbjfiiro"},{"title":"True composability in the modern DXP","_path":"/videos/uniform/041-fo9cop0znt0"},{"title":"Astro FTW! Vue and React can work together in the same app","_path":"/videos/uniform/042-surxtza2sa0"},{"title":"Uniform Personalization Basics for MACHathon contenders","_path":"/videos/uniform/043-wontid8zkf0"},{"title":"Kentico Kontent mystery package unboxing","_path":"/videos/uniform/044-fngyhaaogqc"},{"title":"Product Meetup: Uniform for Sitecore 5 is out!","_path":"/videos/uniform/045-itk9sgw0n7u"},{"title":"Personalize Jamstack websites with Uniform for Kentico Kontent","_path":"/videos/uniform/046-hdupegqtjrm"},{"title":"Jamstack Fridays with T&T: Next auth and Firebase","_path":"/videos/uniform/047-6jkekhxmmaq"},{"title":"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","_path":"/videos/uniform/048-h3y_jnbtrom"},{"title":"Jamstack Friday news: Featurepeek is fire!","_path":"/videos/uniform/049-xr8eo9g6bps"},{"title":"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","_path":"/videos/uniform/050-4eepxpo9iqc"},{"title":"Jamstack Friday news: The latest NextJS release is awesome!","_path":"/videos/uniform/051-fdounapttfy"},{"title":"A comprehensive view on personalization with Lars Petersen","_path":"/videos/uniform/052-gsey28saqac"},{"title":"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","_path":"/videos/uniform/053-r2ygbt1to4s"},{"title":"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","_path":"/videos/uniform/054-9m73vicako4"},{"title":"Jamstack personalization with Contentstack and Uniform","_path":"/videos/uniform/055-d41ch2lnxtq"},{"title":"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","_path":"/videos/uniform/056-eohudn8apm4"}]}]},{"title":"Writing","_path":"/writing","children":[{"title":"Digital experience platforms: the old versus the new","_path":"/writing/digital-experience-platforms-the-old-versus-the-new"},{"title":"Fast, personalized pages with Vercel Edge Middleware and Uniform","_path":"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform"},{"title":"How to dynamically stream video","_path":"/writing/how-to-dynamically-stream-video"},{"title":"How to get your webcam to look decent in a few simple steps","_path":"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps"},{"title":"How to sniff out the Glue Monster","_path":"/writing/how-to-sniff-out-the-glue-monster"},{"title":"Writing","_path":"/writing"},{"title":"Level up your collaboration game: Developer insights for winning with marketing pros","_path":"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro"},{"title":"MACH versus monolithic suites","_path":"/writing/mach-versus-monolithic-suites"},{"title":"Make the Web Greener, Luxury Edition","_path":"/writing/make-the-web-greener-luxury-edition"},{"title":"My Fitness Story","_path":"/writing/my-fitness-story"},{"title":"New job alert!","_path":"/writing/new-job-alert"},{"title":"The 2015 Paris marathon","_path":"/writing/the-2015-paris-maratho"},{"title":"The content Graph is the future","_path":"/writing/the-content-graph-is-the-future"},{"title":"The future of headless CMS: Content Federation with GraphQL","_path":"/writing/the-future-of-headless-cms-content-federation-with-graphql"},{"title":"The future of jamstack is composable","_path":"/writing/the-future-of-jamstack-is-composable"},{"title":"The future of managing projects at agencies","_path":"/writing/the-future-of-managing-projects-at-agencie"},{"title":"The lost promise of headless","_path":"/writing/the-lost-promise-of-headless"},{"title":"The MACH monolith","_path":"/writing/the-mach-monolith"},{"title":"The move from monolithic to composable architectures","_path":"/writing/the-move-from-monolithic-to-composable-architectures"},{"title":"The real deal about content management buzzwords","_path":"/writing/the-real-deal-about-content-management-buzzword"},{"title":"This is headless 2.0","_path":"/writing/this-is-headless-20"},{"title":"Uniform DXCP: the what, why, and how","_path":"/writing/uniform-dxcp-the-what-why-and-how"},{"title":"Uniform is Nuxt 3 ready","_path":"/writing/uniform-is-nuxt-3-read"},{"title":"What type of content organization do you need?","_path":"/writing/what-type-of-content-organization-do-you-need"},{"title":"Why I didn't run the 2016 marathon","_path":"/writing/why-i-didnt-run-the-2016-marathon"}]},{"title":"Speaking","_path":"/speaking","children":[{"title":"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","_path":"/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6"},{"title":"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","_path":"/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk"},{"title":"2019 04 19 Clifq5gd63xhq0buvufv6nagk","_path":"/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk"},{"title":"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","_path":"/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai"},{"title":"2019 05 25 Clifq5fpd3xt00aw4grnzft29","_path":"/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29"},{"title":"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","_path":"/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k"},{"title":"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","_path":"/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc"},{"title":"2019 09 27 Clifq5eos3xhh0buvewly5gxs","_path":"/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs"},{"title":"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","_path":"/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d"},{"title":"2019 12 17 Clifq5dyh40ij0bw9oquw072b","_path":"/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b"},{"title":"2020 02 18 Clifq5dk940if0bw9ok9achtj","_path":"/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj"},{"title":"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","_path":"/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n"},{"title":"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","_path":"/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1"},{"title":"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","_path":"/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q"},{"title":"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","_path":"/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3"},{"title":"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","_path":"/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp"},{"title":"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","_path":"/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1"},{"title":"2020 06 09 Clifq5bj73xrj0aw42st3pna4","_path":"/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4"},{"title":"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","_path":"/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb"},{"title":"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","_path":"/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2"},{"title":"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","_path":"/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e"},{"title":"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","_path":"/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk"},{"title":"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","_path":"/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm"},{"title":"2020 10 14 Clifq59mp3wgc0bw82qykah6x","_path":"/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x"},{"title":"2020 10 29 Clifq59b83xr60aw45w2sqa1g","_path":"/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g"},{"title":"2020 11 10 Clifq590340gy0bw9onnmgr7y","_path":"/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y"},{"title":"2020 11 11 Clifq58oo40gu0bw9iffiakmh","_path":"/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh"},{"title":"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","_path":"/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s"},{"title":"2020 12 02 Clifq582i3wg80bw8rszss5am","_path":"/speaking/2020-12-02-clifq582i3wg80bw8rszss5am"},{"title":"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","_path":"/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9"},{"title":"2020 12 16 Clifq57c43wg40bw81h7fr291","_path":"/speaking/2020-12-16-clifq57c43wg40bw81h7fr291"},{"title":"2020 12 18 Clifq571z40gq0bw9b62wbowr","_path":"/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr"},{"title":"2021 01 12 Clifq56q43xgk0buv4hu04quz","_path":"/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz"},{"title":"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","_path":"/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s"},{"title":"2021 02 02 Clifq56623xqt0aw44sbds5cn","_path":"/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn"},{"title":"2021 02 22 Clifq55tf40gk0bw9vofea3yp","_path":"/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp"},{"title":"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","_path":"/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1"},{"title":"2021 03 24 Clifq559p3xgf0buvzch9im3l","_path":"/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l"},{"title":"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","_path":"/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk"},{"title":"2021 04 20 Clifq54na3xgb0buvrvmbamxf","_path":"/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf"},{"title":"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","_path":"/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw"},{"title":"2021 07 27 Clifq542s3xg60buvdk199xtq","_path":"/speaking/2021-07-27-clifq542s3xg60buvdk199xtq"},{"title":"2021 09 07 Clifq53so3wfq0bw81xni3t7x","_path":"/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x"},{"title":"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","_path":"/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu"},{"title":"2021 11 10 Clifq536v3xg20buvlz1n7ddw","_path":"/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw"},{"title":"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","_path":"/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x"},{"title":"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","_path":"/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey"},{"title":"2021 12 14 Clifq528940gb0bw9bok0o68k","_path":"/speaking/2021-12-14-clifq528940gb0bw9bok0o68k"},{"title":"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","_path":"/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9"},{"title":"2022 02 08 Clifq51j53wez0bw8cd1znjmi","_path":"/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi"},{"title":"2022 02 10 Clifq515940g70bw9yu0ltedp","_path":"/speaking/2022-02-10-clifq515940g70bw9yu0ltedp"},{"title":"2022 03 01 Clifq50sj40g30bw9rqy825mb","_path":"/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb"},{"title":"2022 03 02 Clifq50g53xfr0buv56km2voa","_path":"/speaking/2022-03-02-clifq50g53xfr0buv56km2voa"},{"title":"2022 05 26 Clifq506e3wev0bw88q2lf63q","_path":"/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q"},{"title":"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","_path":"/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u"},{"title":"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","_path":"/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9"},{"title":"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","_path":"/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y"},{"title":"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","_path":"/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl"},{"title":"2022 07 27 Clifq4yep3xf20buv5vorwrl5","_path":"/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5"},{"title":"2022 08 10 Clifq4xw640fr0bw9po5n2nug","_path":"/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug"},{"title":"2022 08 11 Clifq4xdz3wek0bw862z7knrr","_path":"/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr"},{"title":"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","_path":"/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy"},{"title":"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","_path":"/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70"},{"title":"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","_path":"/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb"},{"title":"2022 10 14 Clifq4w263xet0buv0mzqzfre","_path":"/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre"},{"title":"2022 11 02 Clifq4vps3xep0buvimxfntyq","_path":"/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq"},{"title":"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","_path":"/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4"},{"title":"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","_path":"/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj"},{"title":"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","_path":"/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr"},{"title":"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","_path":"/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh"},{"title":"2023 05 12 Clifq4tw33we40bw8jxhaaroo","_path":"/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo"},{"title":"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","_path":"/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm"},{"title":"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","_path":"/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq"},{"title":"2023 07 27 Clifq4sto3xph0aw4letve613","_path":"/speaking/2023-07-27-clifq4sto3xph0aw4letve613"},{"title":"2024 02 29 Clkzot86xire30aujuy08465e","_path":"/speaking/2024-02-29-clkzot86xire30aujuy08465e"},{"title":"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","_path":"/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t"},{"title":"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","_path":"/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v"},{"title":"Speaking","_path":"/speaking"}]},{"title":"live streams","_path":"/livestreams"},{"title":"press kit","_path":"/presskit"},{"title":"alive and kicking","_path":"/alive-and-kicking"}]} \ No newline at end of file diff --git a/api/_content/cache.1718484799542.json b/api/_content/cache.1718484799542.json new file mode 100644 index 00000000..fc50f19a --- /dev/null +++ b/api/_content/cache.1718484799542.json @@ -0,0 +1 @@ +{"generatedAt":1718484819534,"generateTime":1038,"contents":[{"_path":"/","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Tim Benniks","description":"This is the personal website of Tim Benniks. This is where you can find my public speaking schedule and my videos.","draft":false,"navigation":false,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim Benniks"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","format":"webp","height":618,"loading":"eager","quality":"100","sizes":"sm:100vw","src":"/tim.png","width":1440},"children":[]}]}]}]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim Benniks is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":". "},{"type":"element","tag":"a","props":{"href":"https://machalliance.com","rel":["nofollow"],"title":"https://machalliance.com"},"children":[{"type":"text","value":"MACH Alliance"}]},{"type":"text","value":" Tech Council member, "},{"type":"element","tag":"a","props":{"href":"https://nuxt.com","rel":["nofollow"],"title":"https://nuxt.com"},"children":[{"type":"text","value":"NuxtJS"}]},{"type":"text","value":" ambassador, "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com","rel":["nofollow"],"title":"https://cloudinary.com"},"children":[{"type":"text","value":"Cloudinary"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://supabase.com","rel":["nofollow"],"title":"https://supabase.com"},"children":[{"type":"text","value":"Supabase"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://algolia.com","rel":["nofollow"],"title":"https://algolia.com"},"children":[{"type":"text","value":"Algolia"}]},{"type":"text","value":" Ambassador, and "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"content creator"}]},{"type":"text","value":"."}]}]}]},{"type":"element","tag":"videos","props":{":limit":"3",":small":"false","folder":"live-hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Live streams"}]}]}]},{"type":"element","tag":"hero","props":{":smallertitle":"true"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Vuejs Amsterdam 2024"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","format":"webp","height":618,"loading":"eager","quality":"100","sizes":"sm:100vw","src":"/tim-vueams.jpg","width":1440},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"videos","props":{":limit":"3",":small":"true","folder":"tim"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Videos"}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"talks","props":{":limit":"4",":small":"true"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]}]}]},{"type":"element","tag":"articles","props":{":limit":"3",":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Articles"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:1.index.md","_source":"content","_file":"1.index.md","_extension":"md"},{"_path":"/about","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"About Tim","description":"I love building fancy websites, creating content, and speaking at conferences!","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"About Tim"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"eager","sizes":"sm:100vw","src":"/tim_augmented.png","width":1440,"quality":"100","format":"webp"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"My name is Tim Benniks. I'm a Dutchman living in France where I work remotely from a farm in the countryside. I'm the Developer Relations Lead for Outreach and Awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Before I joined "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" I worked for "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"],"title":"https://uniform.dev"},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":" as director of developer relations and I spend about 15 years at agencies building websites for huge brands. I was global front-end director at "},{"type":"element","tag":"a","props":{"href":"https://valtech.com","rel":["nofollow"],"title":"https://valtech.com"},"children":[{"type":"text","value":"Valtech"}]},{"type":"text","value":" Principal front-end developer at "},{"type":"element","tag":"a","props":{"href":"https://akqa.com","rel":["nofollow"],"title":"https://akqa.com"},"children":[{"type":"text","value":"AKQA"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In 2020 I forged a new career path for myself by re-exploring my creativity. I’ve been a lifelong musician and since we moved countries many years ago, I didn’t play much. The agency life was resting heavy on my shoulders and I missed sharing with my community and being creative."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I jumped right in and decided to make a new YouTube video each week and to start speaking at conferences once a month. This creative path changed my life. I learnt a lot from the developer community and I started to make a name for myself."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The outcome of a year if creative work was a job at a start up where I led developer relations. Fast forward a few years and I'm now on solid ground in the start up world continuing with roles in developer relations like the one I landed at Hygraph in 2023."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:media":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":2103,"loading":"lazy","sizes":"sm:100vw md:40vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718362826/Tim/tim-talk.png","width":1920,"provider":"cloudinary"},"children":[]}]}]}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/Tim/Tim%20On%20Stage.jpg","width":1440,"provider":"cloudinary","quality":"100","fit":"thumbnail"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Content creation"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I love to explore my creativity by making videos, live streams and speaking. Now that virtual conferences are a thing I have specialised in making entertaining, high production value talks that I pre-record."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On my "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"YouTube"}]},{"type":"text","value":" channel I explore web development related topics but I also conduct interviews and I try out services with live commentary."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Making all these videos is lot's of work. If you like what you see, feel free to subscribe or even "},{"type":"element","tag":"a","props":{"href":"https://buymeacoff.ee/timbenniks","rel":["nofollow"],"title":"https://buymeacoff.ee/timbenniks"},"children":[{"type":"text","value":"sponsor"}]},{"type":"text","value":" me."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"talks","props":{":limit":"2",":small":"true"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Latest talks"}]}]}]}]}]},{"type":"element","tag":"videos","props":{":limit":"3",":small":"false","folder":"hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Latest Hygraph Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:2.about.md","_source":"content","_file":"2.about.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/000-hhpitreyobi","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"The story behind Alive and kicking","description":"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","date":"2023-08-12T10:05:11Z","position":"000","image":"https://i.ytimg.com/vi/hhPiTREYobI/maxresdefault.jpg","videoId":"hhPiTREYobI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:000-hhPiTREYobI.md","_source":"content","_file":"3.videos/alive-and-kicking/000-hhPiTREYobI.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/001-mvq-_s20ndk","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"72 hours in Austin, TX","description":"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","date":"2024-06-15T14:39:24Z","position":"001","image":"https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","videoId":"mvq-_s20NDk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:001-mvq-_s20NDk.md","_source":"content","_file":"3.videos/alive-and-kicking/001-mvq-_s20NDk.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/002-m0mrligs6i0","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"Vue.js guitar karaoke: how I built it","description":"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","date":"2023-08-12T10:05:17Z","position":"002","image":"https://i.ytimg.com/vi/M0MrLIGs6I0/maxresdefault.jpg","videoId":"M0MrLIGs6I0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:002-M0MrLIGs6I0.md","_source":"content","_file":"3.videos/alive-and-kicking/002-M0MrLIGs6I0.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/003-p3pm_0p8lz4","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","description":"","date":"2024-06-15T14:39:08Z","position":"003","image":"https://i.ytimg.com/vi/p3pm_0p8lZ4/maxresdefault.jpg","videoId":"p3pm_0p8lZ4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:003-p3pm_0p8lZ4.md","_source":"content","_file":"3.videos/alive-and-kicking/003-p3pm_0p8lZ4.md","_extension":"md"},{"_path":"/videos/alive-and-kicking/004-4m4tij0z20","_dir":"alive-and-kicking","_draft":false,"_partial":false,"_locale":"","title":"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","description":"Rock & roll is alive and kicking and in this talk I will showcase that Vue is so versatile it can be used to do audio visualisations while rock guitar soars through the browser. The audience will have access to a vue application which allows them to vote for a song to be played live on stage. The screen shows all the votes and I play them as they come up. While playing music meta data is shown and an audio visualisation plays while I’m rocking on stage. The more votes a song gets, the higher it shows on the list and the more chance I’ll play it. The whole experience is created using Vue and Uniform. Next to waking the audience up with some spicy rock& roll, I will explain how the software was build and why Vue is such an important technology for composable architectures with multiple channels.\n\nhttps://www.jsworldconference.com/newsletter\n\nPowered by https://passionatepeople.io\n\n#jsworld #jsworldconference #frontendlove #frontenddeveloperlove #javascript #reactjs #angular #react #vuejs #vue #vue3 #typescript #graphql #jamstack #amsterdam #conference #svelte #sveltejs #next #nextjs #staticsite #css #html #nuxt","date":"2023-08-12T10:06:20Z","position":"004","image":"https://i.ytimg.com/vi/-4m4TIJ0z20/maxresdefault.jpg","videoId":"-4m4TIJ0z20","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:alive-and-kicking:004--4m4TIJ0z20.md","_source":"content","_file":"3.videos/alive-and-kicking/004--4m4TIJ0z20.md","_extension":"md"},{"_path":"/videos/headless-creator/000-m8on6zkr7q4","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC 5: Transitioning from DXP to DXC","description":"With the history and the basics of creating DXP out of the way, in this lesson we focus on how to transition from the Digital Experience Platform to Digital Experience Composition Platform. DXCP helps you to orchestrate all sources in your ecosystem to communicate in a loosely coupled fashion while enabling content editors to make important experience composition decisions without the involvement of developers. No-code editing, universal preview across headless sources and personalization are a few of the features DXCP offers while leaving developers free to choose how they architect their code.\n\n0:00 - Intro\n1:14 - What is the difference between DXP and DXCP?\n2: 33 - DXP Architecture\n5:49 - DXCP Architecture\n7:34 - DXCP in one Sentence\n9:06 - What a DXCP is not...\n11:29 - So what is DXCP?\n15:54 - Domain Data vs Design Data\n22:01 - Conclusion\n22:44 - Terminology Recap\n24:28 - End\n\n========================================\nUniform\nhttps://uniform.dev/\n\nComposable Orchestration with Uniform Bootcamp\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp\n\nLiked what you saw? Why not register for a Free Account to discover all the free courses on Headless Creator.\nhttps://www.headlesscreator.com/\n\nSign up for our newsletter that focuses on everything Headless CMS and delivered directly to your inbox.\nhttps://www.headlesscreator.com/subscribe-to-our-newsletter\n========================================","date":"2023-01-12T16:30:40Z","position":"000","image":"https://i.ytimg.com/vi/m8On6ZKr7Q4/maxresdefault.jpg","videoId":"m8On6ZKr7Q4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:000-m8On6ZKr7Q4.md","_source":"content","_file":"3.videos/headless-creator/000-m8On6ZKr7Q4.md","_extension":"md"},{"_path":"/videos/headless-creator/001-smbq8aoa4jm","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC Lesson 4: The DXP Tech Stack Overview","description":"In this lesson, you're going to learn what the DXP tech stack is, why Jamstack is the way to go for modern architectures, what API first is plus much more.\n\nTo watch the entire lesson, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","date":"2022-03-18T15:58:51Z","position":"001","image":"https://i.ytimg.com/vi/sMBq8aoa4JM/maxresdefault.jpg","videoId":"sMBq8aoa4JM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:001-sMBq8aoa4JM.md","_source":"content","_file":"3.videos/headless-creator/001-sMBq8aoa4JM.md","_extension":"md"},{"_path":"/videos/headless-creator/002-sx5fbtcnrsg","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC Lesson 3: Separation of Concerns","description":"In this lesson, we are going to learn what \"concerns\" are and how to keep them separate in a Composable DXP platform. We'll cover design and layout, how to keep those out of a CMS, how to isolate logic and an introduction to content modeling that focuses on content and not design.\n\nTo watch the entire less, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","date":"2022-03-04T16:45:54Z","position":"002","image":"https://i.ytimg.com/vi/sX5fBtcnRSg/maxresdefault.jpg","videoId":"sX5fBtcnRSg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:002-sX5fBtcnRSg.md","_source":"content","_file":"3.videos/headless-creator/002-sX5fBtcnRSg.md","_extension":"md"},{"_path":"/videos/headless-creator/003-eybdyoihn1g","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","description":"Effective digital delivery demands collaboration between development, design and digital marketing. In this lesson we are going to cover things that get in the way of collaboration (e.g. rigid architecture, rigid workflows, etc), how we can orchestrate using a platform and what painkillers can help solve some of these problems. \n\nTo watch the entire lesson, please visit: \n\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","date":"2022-02-18T16:24:57Z","position":"003","image":"https://i.ytimg.com/vi/EybDYOiHn1g/maxresdefault.jpg","videoId":"EybDYOiHn1g","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:003-EybDYOiHn1g.md","_source":"content","_file":"3.videos/headless-creator/003-EybDYOiHn1g.md","_extension":"md"},{"_path":"/videos/headless-creator/004-hshm8hlopka","_dir":"headless-creator","_draft":false,"_partial":false,"_locale":"","title":"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","description":"In this lesson, you'll learn what DXP is, get the history behind how we got to where we are today, what being truly composable means and the basic terminology of composable DXP. \n\nTo watch the entire lesson, please visit: \n\n[https://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp](https://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp)","date":"2022-02-04T16:48:08Z","position":"004","image":"https://i.ytimg.com/vi/HsHm8HLOpKA/maxresdefault.jpg","videoId":"HsHm8HLOpKA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:headless-creator:004-HsHm8HLOpKA.md","_source":"content","_file":"3.videos/headless-creator/004-HsHm8HLOpKA.md","_extension":"md"},{"_path":"/videos/hygraph/000-m8qftvizsmw","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"The simplest way to connect Hygraph to NuxtJS","description":"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to NuxtJS.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nuxtjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","date":"2024-06-15T10:28:34Z","position":"000","image":"https://i.ytimg.com/vi/M8QFTViZSMw/maxresdefault.jpg","videoId":"M8QFTViZSMw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:000-M8QFTViZSMw.md","_source":"content","_file":"3.videos/hygraph/000-M8QFTViZSMw.md","_extension":"md"},{"_path":"/videos/hygraph/001-aahu9x5wajy","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"The simplest way to connect Hygraph to Astro","description":"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to Astro.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/astro\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","date":"2024-06-15T10:28:28Z","position":"001","image":"https://i.ytimg.com/vi/AAHu9X5WAjY/maxresdefault.jpg","videoId":"AAHu9X5WAjY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:001-AAHu9X5WAjY.md","_source":"content","_file":"3.videos/hygraph/001-AAHu9X5WAjY.md","_extension":"md"},{"_path":"/videos/hygraph/002-fksw0bfbtdo","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"The simplest way to connect Hygraph to Next.js","description":"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to #Nextjs.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nFull implementation guide: https://hygraph.com/docs/implementations/next/next\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nextjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","date":"2024-06-15T10:28:22Z","position":"002","image":"https://i.ytimg.com/vi/fkSW0BFbtdo/maxresdefault.jpg","videoId":"fkSW0BFbtdo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:002-fkSW0BFbtdo.md","_source":"content","_file":"3.videos/hygraph/002-fkSW0BFbtdo.md","_extension":"md"},{"_path":"/videos/hygraph/003-x8tb3li6dg0","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to connect Commercetools and Hygraph","description":"Connect Commercetools to Hygraph via content federation and install a product picker app for content editors. It's all super easy, and Tim shows you how it is done in this video.\n\nGrab the codebase: https://github.com/hygraph/skncre-starter-nuxt-commercetools\nJoin our community at https://slack.hygraph.com\nCreate a free account at https://hygraph.com","date":"2024-05-31T17:46:57Z","position":"003","image":"https://i.ytimg.com/vi/x8tB3li6dG0/maxresdefault.jpg","videoId":"x8tB3li6dG0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:003-x8tB3li6dG0.md","_source":"content","_file":"3.videos/hygraph/003-x8tB3li6dG0.md","_extension":"md"},{"_path":"/videos/hygraph/004-zredqavtow4","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to add a remote REST source to Hygraph","description":"This is the CMS Maverick series. Learn how to add a remote #REST source into Hygraph and use its data like its #Hygraph native content.\n\nRead more here: https://hygraph.com/docs/guides/schema/remote-sources#adding-a-remote-source-to-your-project\n\nJoin our community: https://slack.hygraph.com\nTry Hygraph for free: https://app.hygraph.com/signup","date":"2024-05-31T17:46:43Z","position":"004","image":"https://i.ytimg.com/vi/ZREdqavTOW4/maxresdefault.jpg","videoId":"ZREdqavTOW4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:004-ZREdqavTOW4.md","_source":"content","_file":"3.videos/hygraph/004-ZREdqavTOW4.md","_extension":"md"},{"_path":"/videos/hygraph/005-aydykxckkfe","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to add a remote GraphQL source to Hygraph","description":"This is the CMS Maverick series. Learn how to add a remote #graphql source into Hygraph and use its data like its #Hygraph native content.\n\nRead more here: https://hygraph.com/docs/guides/schema/remote-sources#adding-a-remote-source-to-your-project\n\nJoin our community: https://slack.hygraph.com\nTry Hygraph for free: https://app.hygraph.com/signup","date":"2024-05-31T17:46:38Z","position":"005","image":"https://i.ytimg.com/vi/aydykxCkKFE/maxresdefault.jpg","videoId":"aydykxCkKFE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:005-aydykxCkKFE.md","_source":"content","_file":"3.videos/hygraph/005-aydykxCkKFE.md","_extension":"md"},{"_path":"/videos/hygraph/006-axq-jo8hmzq","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"CMS Feature ninja: set up a GraphQL where clause on any field","description":"In this CMS Feature Ninja episode, Tim explores how to add a #graphql where clause to any field in Hygraph.\n\nJoin our community: https://slack.hygraph.com\nOr sign up for free at: https://app.hygraph.com/signup?utm_source=youtube&utm_medium=organic&utm_campaign=devrel","date":"2024-05-31T17:46:34Z","position":"006","image":"https://i.ytimg.com/vi/aXQ-JO8hMZQ/maxresdefault.jpg","videoId":"aXQ-JO8hMZQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:006-aXQ-JO8hMZQ.md","_source":"content","_file":"3.videos/hygraph/006-aXQ-JO8hMZQ.md","_extension":"md"},{"_path":"/videos/hygraph/007-e9jxm4h4a48","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"Headless commerce with #Nuxt and #Tailwind.","description":"SKNCRE is a composable commerce demo with Hygraph, Nuxt, Tailwind, and an external API for product data.\n\nSee the demo: https://skncre-cosmetics-hygraph.vercel.app/\nClone the Hygraph project: https://app.hygraph.com/clone/f67b7c52af504cd9a19de912423b2e40?name=Hygraph%20SKNCRE\nGithub repo: https://github.com/timbenniks/skncre-cosmetics-hygraph\n\nRead more: https://hygraph.com/blog/skncre-hygraph-cosmetics-demo\nHygraph Community: https://slack.hygraph.com\n\nSKNCRE is a fictitious cosmetics brand selling costly snail slime skin care products: face serum, face cream, eye contour, and the SKNCRE bundle. What you often see in composable e-commerce is that the product information lives in a specialized management system (a PIM), the content of the website in a CMS, and commerce features such as a cart, checkout, account, and payments in yet another system (a commerce engine).\n\nIn this example, all pages, content, and media are stored in Hygraph, but the products come from an external system – in this case, a mock API called Federate This. We expose the data in Hygraph via Content Federation. Developers query the CMS for product data, while editors can use the data inside the CMS while they combine editing native and federated content as if it were the same. The beauty is that developers and content editors do not need to understand the external product API as they use it directly through Hygraph.\n\nFederate This: https://federatethis.com\nHygraph: https://hygraph.com\nHygraph Community: https://slack.hygraph.com","date":"2024-02-07T10:45:37Z","position":"007","image":"https://i.ytimg.com/vi/E9jxm4h4A48/maxresdefault.jpg","videoId":"E9jxm4h4A48","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:007-E9jxm4h4A48.md","_source":"content","_file":"3.videos/hygraph/007-E9jxm4h4A48.md","_extension":"md"},{"_path":"/videos/hygraph/008-hs1imxycyqg","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"Creating an Enterprise News starter with Next.js and Hygraph CMS","description":"In this video, Tim Benniks from #Hygraph and Marcin Szczepaniak from #Blazity will talk about the enterprise starter kit the two companies developed together.\n\nWhether you're just starting out or working on a large-scale project, this enterprise-ready content starter will accelerate your Hygraph project's development, enhance user engagement, and unlock new possibilities. \n\nFind out more about the starter: https://hygraph.com/blog/enterprise-ready-content-starter","date":"2024-05-31T17:46:11Z","position":"008","image":"https://i.ytimg.com/vi/HS1iMXycyqg/maxresdefault.jpg","videoId":"HS1iMXycyqg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:008-HS1iMXycyqg.md","_source":"content","_file":"3.videos/hygraph/008-HS1iMXycyqg.md","_extension":"md"},{"_path":"/videos/hygraph/009-snhzgplvm8o","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","description":"In this discussion, Tim Benniks from #Hygraph and Markus Lorenz from #Datrycs explore the intricacies of decoupled architecture and its impact on businesses. From legacy systems to modern infrastructures, they dive deep into the challenges companies face and the need for a cohesive backend.\n\nKey Takeaways\n1. Overcoming legacy tools: Discover how companies struggle to adapt to market changes due to legacy systems and the importance of orchestrating data for innovation.\n2. The cost of doing nothing: Explore the consequences of maintaining outdated infrastructures and the impact on user experience, innovation, and market competitiveness.\n3. Understanding market changes: Markus shares valuable insights into the macroeconomic factors driving market changes and the role of IT infrastructure in adapting to unpredictability.\n\nJoin us on slack at https://slack.hygraph.com\n\n00:00 Introduction\n00:30 Challenges brought by monolith\n02:25 The cost of doing nothing: The IT budget dilemma\n04:03 What market change means for businesses: Understanding VUCA\n06:26 What does the market change mean for IT infrastructure for the future\n08:10 Perks of a decoupled infrastructure\n09:25 Challenges of going composable\n14:28 How Content Federation helps decoupled data challenges\n15:50 Perks of using Content Federation","date":"2024-05-31T17:45:53Z","position":"009","image":"https://i.ytimg.com/vi/SnhZGplVm8o/maxresdefault.jpg","videoId":"SnhZGplVm8o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:009-SnhZGplVm8o.md","_source":"content","_file":"3.videos/hygraph/009-SnhZGplVm8o.md","_extension":"md"},{"_path":"/videos/hygraph/010-8_ttkblpdpm","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"Set up headless CMS localization in 6 mins","description":"Localization seems complicated, but with Hygraph it's a breeze to set up. In this video of the CMS Feature Ninja, Tim Benniks shows off how to set up multiple languages for assets and regular models in 6 minutes!\n\n\n#i18n #headlesscms #localization","date":"2024-02-07T10:45:54Z","position":"010","image":"https://i.ytimg.com/vi/8_TtKBLPdpM/maxresdefault.jpg","videoId":"8_TtKBLPdpM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:010-8_TtKBLPdpM.md","_source":"content","_file":"3.videos/hygraph/010-8_TtKBLPdpM.md","_extension":"md"},{"_path":"/videos/hygraph/011-keqn1rt8fwq","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to use Nuxt 3 with Hygraph and GraphQL","description":"In this video, Tim shows how to use #Nuxt 3 with #GraphQL to query a Hygraph remote REST API source.\n\nLearn more about remote sources here: https://hygraph.com/docs/guides/schema/remote-sources\nHow to add any REST source to Hygraph: https://www.youtube.com/watch?v=NpHSqsol3xc\n\nJoin our Slack community:\nhttps://slack.hygraph.com\n\nChapters:\n00:00 Introduction\n00:40 Nuxt 3 and GrAPHQL\n00:56 The API Playground\n01:35 The Nuxt Setup\n02:15 Queries and automatic codegen\n03:30 Basic query using GraphQL composable\n05:35 A fancier version\n07:12 useGraphQL custom composable\n08:05 Conclusion","date":"2024-02-07T10:46:27Z","position":"011","image":"https://i.ytimg.com/vi/Keqn1RT8FwQ/maxresdefault.jpg","videoId":"Keqn1RT8FwQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:011-Keqn1RT8FwQ.md","_source":"content","_file":"3.videos/hygraph/011-Keqn1RT8FwQ.md","_extension":"md"},{"_path":"/videos/hygraph/012-nphsqsol3xc","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to add any REST source to Hygraph headless CMS","description":"In this video, Tim shows how to add a remote REST source into Hygraph in simple steps. Content federation is like wizardry! Keep your source of truth as is, but show its data in any shape you like in the front end.\n\nThe source is strongly typed via SDL. It's accessible as a global GraphQL query and in the context of a data model in the CMS.\n\nWant to learn more? Join us at the https://slack.hygraph.com community!","date":"2024-02-07T10:46:04Z","position":"012","image":"https://i.ytimg.com/vi/NpHSqsol3xc/maxresdefault.jpg","videoId":"NpHSqsol3xc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:012-NpHSqsol3xc.md","_source":"content","_file":"3.videos/hygraph/012-NpHSqsol3xc.md","_extension":"md"},{"_path":"/videos/hygraph/013-exzp3okqtxk","_dir":"hygraph","_draft":false,"_partial":false,"_locale":"","title":"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","description":"In this video, we are going over the most prominent buzzwords in our space and I try to explain them from my perspective. After that, we go back to basics and I help you pinpoint exactly what you need before buying into any of them. \n\nConclusion: 97% of brands will only need Content Federation and a solid Headless CMS.\n\nJoin the Hygraph community slack to talk more about this: https://slack.hygraph.com","date":"2024-02-07T10:46:15Z","position":"013","image":"https://i.ytimg.com/vi/EXzp3OkQTXk/maxresdefault.jpg","videoId":"EXzp3OkQTXk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:hygraph:013-EXzp3OkQTXk.md","_source":"content","_file":"3.videos/hygraph/013-EXzp3OkQTXk.md","_extension":"md"},{"_path":"/videos","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Videos","description":"An overview of my videos","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Videos"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I make videos in different categories, from personal videos to vlogs to tutorials and work-related videos. There is a lot to explore here!"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"tim"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Personal Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"mp"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Middleware Productions Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"uniform"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"headless-creator"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Headless Creator Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:index.md","_source":"content","_file":"3.videos/index.md","_extension":"md"},{"_path":"/videos/live-hygraph/000-eydstedp-v4","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","description":"Svelte is hot right now and we have invited Scott Spence to join Tim Benniks and show us how to use it with Headless CMS!\r\n\r\nTune in on Wednesday, at 4 PM CEST. \r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","date":"2024-05-31T18:29:23Z","position":"000","image":"https://i.ytimg.com/vi/eyDsTeDp-v4/maxresdefault.jpg","videoId":"eyDsTeDp-v4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:000-eyDsTeDp-v4.md","_source":"content","_file":"3.videos/live-hygraph/000-eyDsTeDp-v4.md","_extension":"md"},{"_path":"/videos/live-hygraph/001-_iah2t5g02o","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to integrate Cloudinary with headless CMS w/ Colby Fayock","description":"This Thursday we'll have Colby Fayock from Cloudinary join Tim Benniks for an exclusive livestream to talk about integrating Cloudinary with Hygraph as a headless CMS.\n\nMost people think media on the web is not at all a concern, an image is an image right?\nWell, nope! It's actually incredibly hard to serve images in the right context:\n- Is a user on mobile?\n- How fast is their internet?\n- Do we lazy load?\n- Do we need different image formats for different screen sizes?\n- We do we have art direction for the images?\n- Where do we store the default source and where do we serve the derived images with transformations from?\n- Do we use a CDN?\n- What if an image has to be offline after a certain date due to contracts?\n- What about image quality?\n\nNeed I go on? I can, I have about 10 more problems to throw at you and we haven't even discussed videos yet... \n\nWant to know more? Join ColbyFayock and Tim Benniks on our livestream TODAY where we demo industry leader Cloudinary and how they work together with Hygraph.\r\n\r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","date":"2024-05-31T18:29:16Z","position":"001","image":"https://i.ytimg.com/vi/_Iah2t5g02o/maxresdefault.jpg","videoId":"_Iah2t5g02o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:001-_Iah2t5g02o.md","_source":"content","_file":"3.videos/live-hygraph/001-_Iah2t5g02o.md","_extension":"md"},{"_path":"/videos/live-hygraph/002-fy_w2yousbo","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Combining WordPress with Headless CMS","description":"Want to see the magic of combining WordPress with Hygraph for ultimate power? \r\nWordPress expert Maciek joins Tim on the stream where they explore how to combine forces between WordPress and Hygraph.\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","date":"2024-05-31T18:29:09Z","position":"002","image":"https://i.ytimg.com/vi/fy_w2youSBo/maxresdefault.jpg","videoId":"fy_w2youSBo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:002-fy_w2youSBo.md","_source":"content","_file":"3.videos/live-hygraph/002-fy_w2youSBo.md","_extension":"md"},{"_path":"/videos/live-hygraph/003-jgx1dytflvq","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Exploring localisation & translation with headless CMS","description":"In this week's livestream Niki and Tim explore localisation & translation with a headless CMS. The dynamic duo is back again!\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","date":"2024-05-31T18:29:03Z","position":"003","image":"https://i.ytimg.com/vi/JGx1dYTfLVQ/maxresdefault.jpg","videoId":"JGx1dYTfLVQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:003-JGx1dYTfLVQ.md","_source":"content","_file":"3.videos/live-hygraph/003-JGx1dYTfLVQ.md","_extension":"md"},{"_path":"/videos/live-hygraph/004-ombpixxx-3e","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Customizing Hygraph data with external services","description":"For this livestream follow Tim and Niki to learn how to customize data with Hygraph and third party services!\n\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:55Z","position":"004","image":"https://i.ytimg.com/vi/OmBPIXxX-3E/maxresdefault.jpg","videoId":"OmBPIXxX-3E","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:004-OmBPIXxX-3E.md","_source":"content","_file":"3.videos/live-hygraph/004-OmBPIXxX-3E.md","_extension":"md"},{"_path":"/videos/live-hygraph/005-ht-scjkem9q","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Exploring the Hygraph Asset Manager","description":"In this stream, Fabian and Tim explore the features of the all-new asset manager in Hygraph. Upload via API, transform assets via GraphQL, and more!\n\r\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:50Z","position":"005","image":"https://i.ytimg.com/vi/Ht-scjKem9Q/maxresdefault.jpg","videoId":"Ht-scjKem9Q","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:005-Ht-scjKem9Q.md","_source":"content","_file":"3.videos/live-hygraph/005-Ht-scjKem9Q.md","_extension":"md"},{"_path":"/videos/live-hygraph/006-qegf6rerifw","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Hygraph Studio Launch - Workshop: Hygraph Asset Management","description":"Developer Relations Lead Tim Benniks will walk you through the most important elements of the new and improved Hygraph Asset Management, which has been revamped for improved performance and reliability. Of course, he won’t stop there; join him for a hands-on code-along!\nLinkedIn: https://www.linkedin.com/in/timbenniks/ \nTwitter: https://twitter.com/timbenniks \n\nCode along!\nNuxt: https://github.com/hygraph/hygraph-stock-library-starter-nuxt \nNext: https://github.com/hygraph/hygraph-stock-library-starter-next \nHygraph project: https://app.hygraph.com/clone/6b3636b3c7914fe5904fd41e364bc1cf?name=Asset%20Management%20Workshop \nDemo URL: https://hygraph-stock-library-starter-nuxt.vercel.app \n\nJoin our Hygraph Community slack channel and give your feedback here: https://bit.ly/hygraph-studio-feedback \n#HygraphStudio","date":"2024-05-31T18:29:56Z","position":"006","image":"https://i.ytimg.com/vi/qeGf6RERiFw/maxresdefault.jpg","videoId":"qeGf6RERiFw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:006-qeGf6RERiFw.md","_source":"content","_file":"3.videos/live-hygraph/006-qeGf6RERiFw.md","_extension":"md"},{"_path":"/videos/live-hygraph/007-etie3zygone","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Hygraph Studio Launch - DevX: Performance Gains","description":"In this session, our Product Managers Alexey Orlovskiy and Fabian Beliza walk you through new features and improvements around developer experience and performance. You will learn about Hygraph Studio, Hygraph Asset Management, and some under-the-hood improvements to Content and Management API. Then our Sr. Technical Writer, Romina Soledad Soto, will talk about our approach to documentation and where you can find all information related to Hygraph Studio Docs. \nhttps://www.linkedin.com/in/aorlovskiy/ \nhttps://www.linkedin.com/in/fabianbeliza/\nhttps://www.linkedin.com/in/romina-soto-098b4139/\n\nAsset Docs: https://hygraph.com/docs/api-reference/assets/assets-overview \nBlog post about new Asset System: https://hygraph.com/blog/new-digital-asset-management-system \nCaching Docs: https://hygraph.com/docs/api-reference/basics/caching \nStudio Docs: https://studio-docs.hygraph.com/ \n\nJoin our Hygraph Community slack channel and give your feedback here: https://bit.ly/hygraph-studio-feedback \n#HygraphStudio","date":"2024-05-31T18:29:49Z","position":"007","image":"https://i.ytimg.com/vi/Etie3ZYgonE/maxresdefault.jpg","videoId":"Etie3ZYgonE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:007-Etie3ZYgonE.md","_source":"content","_file":"3.videos/live-hygraph/007-Etie3ZYgonE.md","_extension":"md"},{"_path":"/videos/live-hygraph/008-phcxh2m7ozm","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to build a live-voting experience with Hygraph, Nuxt and Supabase","description":"Tim did a conference talk last week where he created a guitar karaoke experience in which the audience could live-vote what 4-song mashup he'd play. In this live stream we deep dive into how this was built with Supabase, Hygraph and Nuxt.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:43Z","position":"008","image":"https://i.ytimg.com/vi/PhCXH2M7OzM/maxresdefault.jpg","videoId":"PhCXH2M7OzM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:008-PhCXH2M7OzM.md","_source":"content","_file":"3.videos/live-hygraph/008-PhCXH2M7OzM.md","_extension":"md"},{"_path":"/videos/live-hygraph/009-pzc527rz7es","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Building Content Models for Devs and Editors w/ Lo & Bryan","description":"For this week's livestream we'll have Lo and Bryan build content models for devs & editors. We'll take a look at web.dev from Google and discuss how we'd structure content models for that design and the real-world ramifications.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:39Z","position":"009","image":"https://i.ytimg.com/vi/PzC527rZ7Es/maxresdefault.jpg","videoId":"PzC527rZ7Es","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:009-PzC527rZ7Es.md","_source":"content","_file":"3.videos/live-hygraph/009-PzC527rZ7Es.md","_extension":"md"},{"_path":"/videos/live-hygraph/010-t00uxbjsdum","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Bryan teaches Tim Next.js with GraphQL and Hygraph","description":"See Tim learn on the spot as Bryan teaches him Next.js 14 app directory with GraphQL and \"load more\" functionality with Hygraph.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:31Z","position":"010","image":"https://i.ytimg.com/vi/t00uXBjsDUM/maxresdefault.jpg","videoId":"t00uXBjsDUM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:010-t00uXBjsDUM.md","_source":"content","_file":"3.videos/live-hygraph/010-t00uXBjsDUM.md","_extension":"md"},{"_path":"/videos/live-hygraph/011-o_dvlrwpebk","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Pagination with Astro and Hygraph","description":"Want to learn more about pagination in Astro and Hygraph? Join Bryan and Tim on their mission to asynchronously load more content via pagination or a load more button. Astro rocks!\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:26Z","position":"011","image":"https://i.ytimg.com/vi/O_dVLRWPeBk/maxresdefault.jpg","videoId":"O_dVLRWPeBk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:011-O_dVLRWPeBk.md","_source":"content","_file":"3.videos/live-hygraph/011-O_dVLRWPeBk.md","_extension":"md"},{"_path":"/videos/live-hygraph/012-vrrzgly1n5c","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"How to use Rich Text in a Headless CMS","description":"Join Bryan and Tim from Hygraph as they explore how to use a Rich Text editor in a Headless CMS. Learn about features and ways of implementing them in your front-end!\n\r\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:21Z","position":"012","image":"https://i.ytimg.com/vi/VRrZgly1n5c/maxresdefault.jpg","videoId":"VRrZgly1n5c","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:012-VRrZgly1n5c.md","_source":"content","_file":"3.videos/live-hygraph/012-VRrZgly1n5c.md","_extension":"md"},{"_path":"/videos/live-hygraph/013-m5xamvlqh1g","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Add multi-tenancy to a Headless CMS","description":"Hygraph's Lo Etheridge and Tim Benniks deep-dive into setting up multi-tenancy inside Hygraph using the SKNCRE starter. Can two brands live in one project? Yes! Find out on the stream.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:16Z","position":"013","image":"https://i.ytimg.com/vi/M5XaMvlqh1g/maxresdefault.jpg","videoId":"M5XaMvlqh1g","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:013-M5XaMvlqh1g.md","_source":"content","_file":"3.videos/live-hygraph/013-M5XaMvlqh1g.md","_extension":"md"},{"_path":"/videos/live-hygraph/014-jc09s5zmw_k","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Programmatically import data into the Hygraph Headless CMS","description":"Niki and Tim explore how to import data that lives in external systems into Hygraph. Join us for a chill vibe where we explore SDK's and chat data.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com\n#headlesscms #javascript #jamstack","date":"2024-05-31T18:28:10Z","position":"014","image":"https://i.ytimg.com/vi/JC09S5zmW_k/maxresdefault.jpg","videoId":"JC09S5zmW_k","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:014-JC09S5zmW_k.md","_source":"content","_file":"3.videos/live-hygraph/014-JC09S5zmW_k.md","_extension":"md"},{"_path":"/videos/live-hygraph/015-aietljmxmxm","_dir":"live-hygraph","_draft":false,"_partial":false,"_locale":"","title":"Building an e-commerce site with Hygraph and Astro","description":"We have invited Elian from the Astro core team to join Tim on a chill stream in which they convert the skncre Nuxt starter for Hygraph to Astro. Along the way you will learn the core concepts of Astro and Hygraph, all while diving deep into the code.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","date":"2024-05-31T18:28:02Z","position":"015","image":"https://i.ytimg.com/vi/AieTLJMxmxM/maxresdefault.jpg","videoId":"AieTLJMxmxM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-hygraph:015-AieTLJMxmxM.md","_source":"content","_file":"3.videos/live-hygraph/015-AieTLJMxmxM.md","_extension":"md"},{"_path":"/videos/live-uniform/000-5qx4fmkkh_m","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Product Meetup","description":"Personalization Basics: Intents and signals","date":"2024-05-31T18:33:26Z","position":"000","image":"https://i.ytimg.com/vi/5qX4fmKKh_M/maxresdefault.jpg","videoId":"5qX4fmKKh_M","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:000-5qX4fmKKh_M.md","_source":"content","_file":"3.videos/live-uniform/000-5qX4fmKKh_M.md","_extension":"md"},{"_path":"/videos/live-uniform/001-zdqk9zql3za","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","description":"Tony & Tim have invited Alex Shyba to talk about the Jamstack and beyond!\n\nFollow us here:\nhttps://twitter.com/uniformdev\nhttps://twitter.com/timbenniks\nhttps://twitter.com/tmamedbekov","date":"2024-05-31T18:33:33Z","position":"001","image":"https://i.ytimg.com/vi/ZdQk9zql3zA/maxresdefault.jpg","videoId":"ZdQk9zql3zA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:001-ZdQk9zql3zA.md","_source":"content","_file":"3.videos/live-uniform/001-ZdQk9zql3zA.md","_extension":"md"},{"_path":"/videos/live-uniform/002-tngn1e4hefi","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Product Meetup #2: Interesting usecases with Adam Lamarre","description":"In this instalment we look into more complex use cases for personalisation. Search results and indexation can generate amazing results when personalised properly. Adam Lamarre shows how to integrate Uniform with Algolia for great results on Jamstack websites!","date":"2024-05-31T18:33:37Z","position":"002","image":"https://i.ytimg.com/vi/Tngn1E4HEFI/maxresdefault.jpg","videoId":"Tngn1E4HEFI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:002-Tngn1E4HEFI.md","_source":"content","_file":"3.videos/live-uniform/002-Tngn1E4HEFI.md","_extension":"md"},{"_path":"/videos/live-uniform/003-vkfasdfduf8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Personalizing Storyblok with Uniform and Nuxt.js","description":"In this stream Tim from Uniform is accompanied by Samuel and Alba to help him set up Storyblok from scratch. After that they dive into how to integrate Uniform with Storyblok as a custom field type to show off how to personalize Storyblok.","date":"2024-05-31T18:33:43Z","position":"003","image":"https://i.ytimg.com/vi/vkFASdFdUF8/maxresdefault.jpg","videoId":"vkFASdFdUF8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:003-vkFASdFdUF8.md","_source":"content","_file":"3.videos/live-uniform/003-vkFASdFdUF8.md","_extension":"md"},{"_path":"/videos/live-uniform/004-baibxsoagdw","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Page compositions in Next.js with Uniform Canvas and the Jamstack","description":"Cable management in Next.js: creating compositions with different headless sources with Uniform Canvas in Next.js.","date":"2024-05-31T18:33:51Z","position":"004","image":"https://i.ytimg.com/vi/BAIBxSoAgdw/maxresdefault.jpg","videoId":"BAIBxSoAgdw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:004-BAIBxSoAgdw.md","_source":"content","_file":"3.videos/live-uniform/004-BAIBxSoAgdw.md","_extension":"md"},{"_path":"/videos/live-uniform/005-rv4wzkhjp7k","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"A Uniform Canvas use case deep-dive","description":"In this Livestream we are unpacking how Tim created a Cloudinary shoppable video player based on Uniform Canvas data from Contentful and BigCommerce","date":"2024-05-31T18:33:58Z","position":"005","image":"https://i.ytimg.com/vi/RV4wZkhJp7k/maxresdefault.jpg","videoId":"RV4wZkhJp7k","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:005-RV4wZkhJp7k.md","_source":"content","_file":"3.videos/live-uniform/005-RV4wZkhJp7k.md","_extension":"md"},{"_path":"/videos/live-uniform/006-r2lwjmehkmo","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"The Modern Digital Pipeline - The future of Jamstack is composable","description":"Nowadays we are faced with an ever-expanding landscape of headless technologies like commerce engines, CMS, asset management, payments and many more. All these services are API-first and this comes with a new paradigm: there is no more origin server.\r\n\r\nIn this livestream we will use Nuxt 3 to wire up a modern Jamstack site (in a few flavours, including SSR at the egde) that uses many different headless sources. The goal: high performance, great DX, freedom of choice and never re-platforming again...","date":"2024-05-31T18:34:04Z","position":"006","image":"https://i.ytimg.com/vi/R2LwjMEhkmo/maxresdefault.jpg","videoId":"R2LwjMEhkmo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:006-R2LwjMEhkmo.md","_source":"content","_file":"3.videos/live-uniform/006-R2LwjMEhkmo.md","_extension":"md"},{"_path":"/videos/live-uniform/007-7-ebcqip9ec","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Natalia Venditto","description":"Kicking off our first Composable without Compromise livestream w/ Natalia Venditto. \nIn these live streams we talk about composability. From architectures, to design approaches, to tech organization and governance. Anything MACH Alliance, DXC or headless composition related is a valid subject. Monolith to composable stories. How to deal with composability as a developer, or as a leader. \n\nNatalia worked in the roles of frontend and full-stack developer, technical lead and software architect leading enterprise implementations and as a solutions architect advising on data intensive implementations. Now she leads the end-to-end DX for JavaScript devs on Azure. \nhttps://twitter.com/AnfibiaCreativa\n\nBack in the days when Natalia started working as a developer, the frontend was nothing but a couple of CSS and JavaScript files or lines injected to the HTML. But the whole JavaScript ecosystem has evolved at a very dynamic fast pace. The role of frontend technologies and patterns when designing new web architectures, has never been so influential as it is today. Let's talk about the multiple challenges, but also opportunities, that the cloud offers to build lightning fast and super performant user interfaces, on top of cutting-edge cloud tech!\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:11Z","position":"007","image":"https://i.ytimg.com/vi/7-eBCQiP9Ec/maxresdefault.jpg","videoId":"7-eBCQiP9Ec","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:007-7-eBCQiP9Ec.md","_source":"content","_file":"3.videos/live-uniform/007-7-eBCQiP9Ec.md","_extension":"md"},{"_path":"/videos/live-uniform/008-1h0jr_vbz7m","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Daniel Roe","description":"Kicking off our first Unpack the Stack livestream w/ Daniel Roe.\nIn these live streams we unpack a stack. As in, a technical person explains how they built something or we talk about something technical that excites them. \n\nDaniel is a core team member of Nuxt - previously a CTO of a SaaS startup. His open-source work has a focus in the Vue.js and Nuxt ecosystems and he's involved in consultancy with companies around the world, particularly around JAMstack, serverless and software architecture. He's based in the North East of England where he lives with his family, three cats, and a dog.\nhttps://twitter.com/danielcroe\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:18Z","position":"008","image":"https://i.ytimg.com/vi/1h0jR_vBZ7M/maxresdefault.jpg","videoId":"1h0jR_vBZ7M","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:008-1h0jR_vBZ7M.md","_source":"content","_file":"3.videos/live-uniform/008-1h0jR_vBZ7M.md","_extension":"md"},{"_path":"/videos/live-uniform/009-sitbljdtbjy","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Matt Webb","description":"Composable without Compromise livestream with Matt Webb. \nIn these live streams we talk about composability. From architectures, to design approaches, to tech organization and governance. Anything MACH Alliance, DXC or headless composition related is a valid subject. Monolith to composable stories. How to deal with composability as a developer, or as a leader. \n\nA technology lead with over 20 years experience at global CTO level for large digital agencies, delivering projects in the field of global enterprise CMS, eCommerce, data, composable/MACH architectures, through to Internet of things, Augmented/Virtual reality, and Artificial Intelligence. \nBIMA 100 Tech trailblazer 2021, MACH Alliance ambassador.\nhttps://twitter.com/webgeekwebb\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:23Z","position":"009","image":"https://i.ytimg.com/vi/sitBLjdTBJY/maxresdefault.jpg","videoId":"sitBLjdTBJY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:009-sitBLjdTBJY.md","_source":"content","_file":"3.videos/live-uniform/009-sitBLjdTBJY.md","_extension":"md"},{"_path":"/videos/live-uniform/010-rbjccl9qate","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Colby Fayock","description":"Unpack the Stack livestream with Colby Fayock, Senior Developer Experience Engineer at Cloudinary. \nIn these live streams we unpack a stack. As in, a technical person explains how they built something or we talk about something technical that excites them. \n\nAstrocoder, Developer Experience Engineer, Space Jelly Commander\nColby Fayock helps others get the tech out of the way to solve real problems with the tools of the web. He works with the dev community at Cloudinary and is a prolific creator of educational content teaching others through learning by doing one Star Wars plush cuddle at a time. \nhttps://twitter.com/colbyfayock\nhttps://twitter.com/cloudinary\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif...","date":"2024-05-31T18:34:29Z","position":"010","image":"https://i.ytimg.com/vi/RbJCcl9qaTE/maxresdefault.jpg","videoId":"RbJCcl9qaTE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:010-RbJCcl9qaTE.md","_source":"content","_file":"3.videos/live-uniform/010-RbJCcl9qaTE.md","_extension":"md"},{"_path":"/videos/live-uniform/011-yjc8gvarvge","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Casper Rasmussen","description":"Composable without Compromise livestream with Casper Rasmussen.\nCasper and Tim discussed why MACH and Composable matter and how it can help business and developer team be more relevant and agile. Having a composable mindset and MACH tech enables companies to win, but there are typical pitfalls to watch out for which can compromise the potentials on MACH.\n\nSeasoned speaker, technology leader and MACH evangelist.\nCasper acts as the Global business lead for MACH and Composable Enterprise at Valtech. \nCasper is elected President at the MACH Alliance and thereby leads the organization along with the Executive Board.\nhttps://twitter.com/valtech\n\nHis portfolio is focused on complex enterprise transformations and acts as the principle for technical strategy, system architecture and integration approach within his client’s technical landscape. He leads technology engagements by analyzing business goals and requirements, aligning these priorities with a viable technological approach, and leading teams to drive business value for clients. ​ \n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:36Z","position":"011","image":"https://i.ytimg.com/vi/yjc8gvaRvGE/maxresdefault.jpg","videoId":"yjc8gvaRvGE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:011-yjc8gvaRvGE.md","_source":"content","_file":"3.videos/live-uniform/011-yjc8gvaRvGE.md","_extension":"md"},{"_path":"/videos/live-uniform/012-6ek_bv2yrf8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Brittney Postma","description":"Unpack the Stack livestream with Brittney Postma.\nCheck out how Tim and Brittany are unpacking Svelte and SvelteKit live.\n\nBrittney Postma is a self-taught developer and mom of three currently employed at Netlify as a Developer Experience Engineer. She also does podcasts and livestreams with CodingCat.dev and am the co-founder of the Svelte Sirens, a group for women, non-binary people, and allies in the Svelte community.\nhttps://twitter.com/brittneypostma\nhttps://twitter.com/netlify\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:42Z","position":"012","image":"https://i.ytimg.com/vi/6ek_bv2YrF8/maxresdefault.jpg","videoId":"6ek_bv2YrF8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:012-6ek_bv2YrF8.md","_source":"content","_file":"3.videos/live-uniform/012-6ek_bv2YrF8.md","_extension":"md"},{"_path":"/videos/live-uniform/013-trisovjcivw","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Filip Rakowski","description":"In this livestream our host Tim Benniks interviews our guest Filip and the questions are listed as below. \n\n1:23 Introduction \n3:17 What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n5:47 If you had to advise agency or SaaS company execs, what would it be?\n10:53 If you could wave a magic wand and change something in our space, what would it be?\n15:00 What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n18:28 What feature from old technology would you like to bring back?\n22:48 How would you explain composable architectures to a 15 year old? \n25:41 What is a question for the next person?\n\nCo-founder & CTO of Vue Storefront - biggest Open Source eCommerce frontend project, co-organizer of Wrocław, Vue.js meetups, web perf geek since 2017, proud cat owner.\nhttps://twitter.com/filrakowski\nhttps://twitter.com/VueStorefront\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif...\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:34:52Z","position":"013","image":"https://i.ytimg.com/vi/TRISovjciVw/maxresdefault.jpg","videoId":"TRISovjciVw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:013-TRISovjciVw.md","_source":"content","_file":"3.videos/live-uniform/013-TRISovjciVw.md","_extension":"md"},{"_path":"/videos/live-uniform/014-0xsg-apdt6c","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Tomek Juranek","description":"Livestream guest: Tomasz Juranek, CTO of Include Agency\nhttps://twitter.com/tjWhuu\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:03Z","position":"014","image":"https://i.ytimg.com/vi/0XSG-apDT6c/maxresdefault.jpg","videoId":"0XSG-apDT6c","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:014-0XSG-apDT6c.md","_source":"content","_file":"3.videos/live-uniform/014-0XSG-apDT6c.md","_extension":"md"},{"_path":"/videos/live-uniform/015-hsirsjtqgs8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Dom Selvon","description":"In this live stream our host Tim Benniks interviews special guest Dom Selvon with the following questions:\n\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n2. If you had to advise agency or SaaS company execs, what would it be?\n3. If you could wave a magic wand and change something in our space, what would it be?\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n5. What feature from old technology would you like to bring back?\n6. How would you explain composable architectures to a 15 year old?\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:11Z","position":"015","image":"https://i.ytimg.com/vi/HsiRsJtqgS8/maxresdefault.jpg","videoId":"HsiRsJtqgS8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:015-HsiRsJtqgS8.md","_source":"content","_file":"3.videos/live-uniform/015-HsiRsJtqgS8.md","_extension":"md"},{"_path":"/videos/live-uniform/016-uuhul0tpezy","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","description":"Livestream guests:\nSybren Willemot, Front-end developer, Euricom NV / Chakra UI, https://twitter.com/carwack\nJonathan Bakebwa, CTO, Mirror World, https://twitter.com/codebender828\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:17Z","position":"016","image":"https://i.ytimg.com/vi/UUHUL0tpEZY/maxresdefault.jpg","videoId":"UUHUL0tpEZY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:016-UUHUL0tpEZY.md","_source":"content","_file":"3.videos/live-uniform/016-UUHUL0tpEZY.md","_extension":"md"},{"_path":"/videos/live-uniform/017-8ju8znzjoh4","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack: next.js app directory with Steven Tey","description":"In this stream, we dive into the new Next JS app directory to see what it is all about. We discuss the new approach to building websites with Next, and we show off how Uniform fits into this new shiny way of working!\nLivestream guest: Steven Tey, Senior Developer Advocate, Vercel\nhttps://twitter.com/steventey\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:22Z","position":"017","image":"https://i.ytimg.com/vi/8Ju8znzJoH4/maxresdefault.jpg","videoId":"8Ju8znzJoH4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:017-8Ju8znzJoH4.md","_source":"content","_file":"3.videos/live-uniform/017-8Ju8znzJoH4.md","_extension":"md"},{"_path":"/videos/live-uniform/018-wmacanhmrsi","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack with Elian Van Cutsem","description":"Livestream guest: Elian Van Cutsem, Software Engineer | Astro Ambassador, vBridge\nhttps://twitter.com/ElianCodes\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:28Z","position":"018","image":"https://i.ytimg.com/vi/wmaCANHmRsI/maxresdefault.jpg","videoId":"wmaCANHmRsI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:018-wmaCANHmRsI.md","_source":"content","_file":"3.videos/live-uniform/018-wmaCANHmRsI.md","_extension":"md"},{"_path":"/videos/live-uniform/019-axqvbrv_xc8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack with Marc Backes","description":"Livestream guest: Marc Backes, DevRel Lead @WeAreDevelopers\nhttps://twitter.com/themarcba\nhttps://twitter.com/WeAreDevs\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:33Z","position":"019","image":"https://i.ytimg.com/vi/axqVBrV_Xc8/maxresdefault.jpg","videoId":"axqVBrV_Xc8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:019-axqVBrV_Xc8.md","_source":"content","_file":"3.videos/live-uniform/019-axqVBrV_Xc8.md","_extension":"md"},{"_path":"/videos/live-uniform/020-gmh8pm-nvl0","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack with William Imoh","description":"William and Tim discuss Saas companies' different onboarding, upselling, and developer experience approaches.\n\nLivestream guest: William Imoh\nhttps://twitter.com/iChuloo\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:37Z","position":"020","image":"https://i.ytimg.com/vi/gMH8pM-nvL0/maxresdefault.jpg","videoId":"gMH8pM-nvL0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:020-gMH8pM-nvL0.md","_source":"content","_file":"3.videos/live-uniform/020-gMH8pM-nvL0.md","_extension":"md"},{"_path":"/videos/live-uniform/021-5r8_kiqjk6c","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","description":"Livestream guests: \nMaurizio Pedriale, Co-CTO, Mirahi, https://twitter.com/mpedriale\nBoubacar S. Barry aka Bouba, Co-CTO, Mirahi, https://twitter.com/b_b4rry \nhttps://twitter.com/mirahi_io\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:42Z","position":"021","image":"https://i.ytimg.com/vi/5r8_KIQjk6c/maxresdefault.jpg","videoId":"5r8_KIQjk6c","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:021-5r8_KIQjk6c.md","_source":"content","_file":"3.videos/live-uniform/021-5r8_KIQjk6c.md","_extension":"md"},{"_path":"/videos/live-uniform/022-hveoqtpoimk","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Lucie from Prismic","description":"Livestream guest: \nLucie Haberer, Developer Experience Engineer, Prismic\nhttps://twitter.com/li_hbr\nhttps://twitter.com/prismicio\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:49Z","position":"022","image":"https://i.ytimg.com/vi/hvEOqTpoImk/maxresdefault.jpg","videoId":"hvEOqTpoImk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:022-hvEOqTpoImk.md","_source":"content","_file":"3.videos/live-uniform/022-hvEOqTpoImk.md","_extension":"md"},{"_path":"/videos/live-uniform/023-skuvyvd-njg","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","description":"Livestream guest: \nDebbie O'Brien, Senior Program Manager at Microsoft advocating for Playwright Testing\nhttps://twitter.com/debs_obrien\nhttps://twitter.com/playwrightweb\nhttps://twitter.com/Microsoft\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:35:58Z","position":"023","image":"https://i.ytimg.com/vi/sKUVyVd-nJg/maxresdefault.jpg","videoId":"sKUVyVd-nJg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:023-sKUVyVd-nJg.md","_source":"content","_file":"3.videos/live-uniform/023-sKUVyVd-nJg.md","_extension":"md"},{"_path":"/videos/live-uniform/024-mnkxtbb3_vw","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Unpack the Stack w/ Harshil from Contentful","description":"Livestream guest: \nHarshil Agrawal, Developer Advocate, Contentful\nhttps://twitter.com/harshil1712\nhttps://twitter.com/contentful\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:36:07Z","position":"024","image":"https://i.ytimg.com/vi/MnkxTbb3_Vw/maxresdefault.jpg","videoId":"MnkxTbb3_Vw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:024-MnkxTbb3_Vw.md","_source":"content","_file":"3.videos/live-uniform/024-MnkxTbb3_Vw.md","_extension":"md"},{"_path":"/videos/live-uniform/025-hmtwfhon2o","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Introducing: Mesh + Component Starter Kit with Richard and Tim","description":"Join us live to hear about the latest Uniform features to make content management faster and more efficient for teams. The Component Starter Kit offers open-source, customizable components for building key pages, while improved data connections via Mesh allow for easier setup and fast edge-cached content delivery. \n\nLivestream guest: Richard Bausek, Director of Product Management at Uniform\nhttps://twitter.com/richardbausek\nhttps://uniform.dev/\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:36:13Z","position":"025","image":"https://i.ytimg.com/vi/-hmTWfHON2o/maxresdefault.jpg","videoId":"-hmTWfHON2o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:025--hmTWfHON2o.md","_source":"content","_file":"3.videos/live-uniform/025--hmTWfHON2o.md","_extension":"md"},{"_path":"/videos/live-uniform/026-dvqvxggnp5q","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise w/ Jonas Ulrich","description":"In this live stream our host Tim Benniks interviews special guest Jonas Ulrich with the following questions:\n\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n2. If you had to advise agency or SaaS company execs, what would it be?\n3. If you could wave a magic wand and change something in our space, what would it be?\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n5. What feature from old technology would you like to bring back?\n6. How would you explain composable architectures to a 15 year old?\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:36:18Z","position":"026","image":"https://i.ytimg.com/vi/DvqvXGgnp5Q/maxresdefault.jpg","videoId":"DvqvXGgnp5Q","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:026-DvqvXGgnp5Q.md","_source":"content","_file":"3.videos/live-uniform/026-DvqvXGgnp5Q.md","_extension":"md"},{"_path":"/videos/live-uniform/027-vfeieragxac","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","description":"In this live stream our host Tim Benniks interviews special guest Jasmin Guthmann with the following questions:\r\n\r\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\r\n2. If you had to advise agency or SaaS company execs, what would it be?\r\n3. If you could wave a magic wand and change something in our space, what would it be?\r\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\r\n5. What feature from old technology would you like to bring back?\r\n6. How would you explain composable architectures to a 15 year old?\r\n\r\n\r\nLivestream Host: Tim Benniks \r\nhttps://twitter.com/timbenniks\r\nhttps://www.linkedin.com/in/timbenniks/\r\n\r\nJoin us on Discord at https://uniform.to/discord\r\nLearn more at https://uniform.dev\r\n\r\nFollow us on:\r\nFacebook: https://www.facebook.com/people/Uniform/\r\nTwitter: https://twitter.com/UniformDev \r\nLinkedIn: https://www.linkedin.com/company/uniformdev \r\nInstagram: https://www.instagram.com/uniform.dev/","date":"2024-05-31T18:36:23Z","position":"027","image":"https://i.ytimg.com/vi/VfeIeragxAc/maxresdefault.jpg","videoId":"VfeIeragxAc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:027-VfeIeragxAc.md","_source":"content","_file":"3.videos/live-uniform/027-VfeIeragxAc.md","_extension":"md"},{"_path":"/videos/live-uniform/028-ekut1koa2n8","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","description":"What Legacy? A uniform Live stream series.","date":"2024-05-31T18:36:30Z","position":"028","image":"https://i.ytimg.com/vi/eKUT1KoA2n8/maxresdefault.jpg","videoId":"eKUT1KoA2n8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:028-eKUT1KoA2n8.md","_source":"content","_file":"3.videos/live-uniform/028-eKUT1KoA2n8.md","_extension":"md"},{"_path":"/videos/live-uniform/029-opklvtnkncs","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"How the RFP process has improved with composable architectures","description":"Mark and Tim explore how the RFP process has improved with composable architectures and how Uniform can help","date":"2024-05-31T18:36:35Z","position":"029","image":"https://i.ytimg.com/vi/OpkLVtnKnCs/maxresdefault.jpg","videoId":"OpkLVtnKnCs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:029-OpkLVtnKnCs.md","_source":"content","_file":"3.videos/live-uniform/029-OpkLVtnKnCs.md","_extension":"md"},{"_path":"/videos/live-uniform/030-m-kkuomzg88","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable CMS evaluation: Delivery APIs and CDNs","description":"We're checking out CMS Delivery APIs and CDNs!","date":"2024-05-31T18:36:43Z","position":"030","image":"https://i.ytimg.com/vi/M-KkUomZG88/maxresdefault.jpg","videoId":"M-KkUomZG88","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:030-M-KkUomZG88.md","_source":"content","_file":"3.videos/live-uniform/030-M-KkUomZG88.md","_extension":"md"},{"_path":"/videos/live-uniform/031-jvgiaotcerq","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"What legacy? Migration tactics for monolith to composable","description":"Alex and Tim explore migration tactics for monolith to composable architectures.","date":"2024-05-31T18:36:49Z","position":"031","image":"https://i.ytimg.com/vi/JVgiaoTcErQ/maxresdefault.jpg","videoId":"JVgiaoTcErQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:031-JVgiaoTcErQ.md","_source":"content","_file":"3.videos/live-uniform/031-JVgiaoTcErQ.md","_extension":"md"},{"_path":"/videos/live-uniform/032-isxyi-5do5o","_dir":"live-uniform","_draft":false,"_partial":false,"_locale":"","title":"Composable CMS evaluation: SDK frameworks","description":"In this episode, we discuss SDKs and how to interact with CMSs. Choose wisely!","date":"2024-05-31T18:36:56Z","position":"032","image":"https://i.ytimg.com/vi/IsXYI-5Do5o/maxresdefault.jpg","videoId":"IsXYI-5Do5o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:live-uniform:032-IsXYI-5Do5o.md","_source":"content","_file":"3.videos/live-uniform/032-IsXYI-5Do5o.md","_extension":"md"},{"_path":"/videos/misc-streams/000-1tjmq5b0fmc","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"The Dare Dialogues - S01E03: Making Waves","description":"Tim Benniks and Sonja Keerl will dive into the findings of the latest Forrester Wave™ for B2C Commerce, unveiling something noteworthy: the leader quadrant remained empty.","date":"2024-06-15T10:46:55Z","position":"000","image":"https://i.ytimg.com/vi/1TJMq5b0fMc/maxresdefault.jpg","videoId":"1TJMq5b0fMc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:000-1TJMq5b0fMc.md","_source":"content","_file":"3.videos/misc-streams/000-1TJMq5b0fMc.md","_extension":"md"},{"_path":"/videos/misc-streams/001-tvpdzpl2pvm","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"The Dare Dialogues - S01E02: Mount Stupid","description":"Have you ever been to the summit of Mount Stupid? No need to answer: you likely climbed it a few times! Today we discuss the Dunning-Kruger Effect and our personal experiences with it.","date":"2024-06-15T10:46:51Z","position":"001","image":"https://i.ytimg.com/vi/TvPdZPL2pvM/maxresdefault.jpg","videoId":"TvPdZPL2pvM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:001-TvPdZPL2pvM.md","_source":"content","_file":"3.videos/misc-streams/001-TvPdZPL2pvM.md","_extension":"md"},{"_path":"/videos/misc-streams/002-rjjyhwso1gg","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"Customer Story: How to Create AI Videos for B2B Content Marketing","description":"Videos are a highly engaging and dynamic medium that can effectively capture and retain the attention of B2B audiences—allowing businesses to convey complex information visually appealing and concisely, making it easier for customers to understand their products or services. They also help build trust, as B2B purchases often involve significant investments and long-term commitments. Video marketing enables companies to showcase their expertise, demonstrate their products in action, and provide customer testimonials, which help build trust and credibility with potential buyers.\nHeyGen is a b2b solution that allows customers to create AI videos at scale. Fast and affordable, saving your team time and money. No camera, no crew, no problem.\n\nThe webinar will be a live interview where our CEO and Co-Founder, Josh Xu, will discuss a customer success story with Tim Benniks, who created an Avatar Lite using HeyGen AI technology, became a brand ambassador, and developed a b2b marketing strategy for his company. \n\nTake advantage of this exciting and informative live and interactive webinar. We will also be giving a five-minute credit to attendees to start creating AI videos at scale. Join us and discover the power of HeyGen AI.\n\nWhen: Thursday, July 27, 11:00 am PST/ 2:00 pm EST","date":"2023-07-27T18:45:56Z","position":"002","image":"https://i.ytimg.com/vi/rjjyHwSO1gg/maxresdefault.jpg","videoId":"rjjyHwSO1gg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:002-rjjyHwSO1gg.md","_source":"content","_file":"3.videos/misc-streams/002-rjjyHwSO1gg.md","_extension":"md"},{"_path":"/videos/misc-streams/003-jvgiaotcerq","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"What legacy? Migration tactics for monolith to composable","description":"Alex and Tim explore migration tactics for monolith to composable architectures.","date":"2023-07-25T11:36:51Z","position":"003","image":"https://i.ytimg.com/vi/JVgiaoTcErQ/maxresdefault.jpg","videoId":"JVgiaoTcErQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:003-JVgiaoTcErQ.md","_source":"content","_file":"3.videos/misc-streams/003-JVgiaoTcErQ.md","_extension":"md"},{"_path":"/videos/misc-streams/004-ekut1koa2n8","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","description":"What Legacy? A uniform Live stream series.","date":"2023-07-25T11:37:10Z","position":"004","image":"https://i.ytimg.com/vi/eKUT1KoA2n8/maxresdefault.jpg","videoId":"eKUT1KoA2n8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:004-eKUT1KoA2n8.md","_source":"content","_file":"3.videos/misc-streams/004-eKUT1KoA2n8.md","_extension":"md"},{"_path":"/videos/misc-streams/005-d8ahncxgryg","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: TresJS with Alvaro Sabu","description":"TresJS brings Three to the Vue ecosystem. This is the #timtries Series. Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time.","date":"2023-03-19T15:52:33Z","position":"005","image":"https://i.ytimg.com/vi/D8AhNcXgrYg/maxresdefault.jpg","videoId":"D8AhNcXgrYg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:005-D8AhNcXgrYg.md","_source":"content","_file":"3.videos/misc-streams/005-D8AhNcXgrYg.md","_extension":"md"},{"_path":"/videos/misc-streams/006-umfrj32jle0","_dir":"misc-streams","_draft":false,"_partial":false,"_locale":"","title":"Keyboard Madness with Janos Kehl and Konstantin Bifert","description":"So you like keyboards right? Me too! I have a ton of questions so I have asked keyboard experts Janos and Konstantin to join me on a live stream and answer all of them 🔥🌶️🥳","date":"2023-03-19T15:52:17Z","position":"006","image":"https://i.ytimg.com/vi/UmfRj32Jle0/maxresdefault.jpg","videoId":"UmfRj32Jle0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:misc-streams:006-UmfRj32Jle0.md","_source":"content","_file":"3.videos/misc-streams/006-UmfRj32Jle0.md","_extension":"md"},{"_path":"/videos/mp/000-ubgzoawmqlw","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Amsterdam 2024","description":"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2024-03-01T11:20:13Z","position":"000","image":"https://i.ytimg.com/vi/ubGZoaWMqLw/maxresdefault.jpg","videoId":"ubGZoaWMqLw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:000-ubGZoaWMqLw.md","_source":"content","_file":"3.videos/mp/000-ubGZoaWMqLw.md","_extension":"md"},{"_path":"/videos/mp/001-zx6_fi0sdmy","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Amsterdam Vlog 2023","description":"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2023-02-13T08:34:01Z","position":"001","image":"https://i.ytimg.com/vi/zX6_Fi0sDMY/maxresdefault.jpg","videoId":"zX6_Fi0sDMY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:001-zX6_Fi0sDMY.md","_source":"content","_file":"3.videos/mp/001-zX6_Fi0sDMY.md","_extension":"md"},{"_path":"/videos/mp/002-d4rai10p9m4","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"JSWorld Conference 2023 Vlog","description":"Marc and Tim explored backstage at the JSWorld conference, one of the biggest JS conferences in the world. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video-edit, and sound-edit, and publish the video on the day. Film in the morning, show in the afternoon.","date":"2023-02-13T08:19:14Z","position":"002","image":"https://i.ytimg.com/vi/D4RaI10P9m4/maxresdefault.jpg","videoId":"D4RaI10P9m4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:002-D4RaI10P9m4.md","_source":"content","_file":"3.videos/mp/002-D4RaI10P9m4.md","_extension":"md"},{"_path":"/videos/mp/003-tmf2wzntooa","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","description":"At the biggest Vue.js event in the world, Tim & Marc explored backstage. Camera in one hand, microphone in the other, they captured the vibe of the conference in perfect light. This is how \"Intervues\" was born.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2022-07-27T08:40:09Z","position":"003","image":"https://i.ytimg.com/vi/TMf2WznToOA/maxresdefault.jpg","videoId":"TMf2WznToOA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:003-TMf2WznToOA.md","_source":"content","_file":"3.videos/mp/003-TMf2WznToOA.md","_extension":"md"},{"_path":"/videos/mp/004-xhbwuk0qlue","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"JSWorld Conference 2022 - Vlog","description":"At the biggest Vue.js event in the world, Tim & Marc explored backstage. Camera in one hand, microphone in the other, they captured the vibe of the conference in perfect light. This is how \"Intervues\" was born.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2022-07-19T09:06:13Z","position":"004","image":"https://i.ytimg.com/vi/XHBwUK0qlUE/maxresdefault.jpg","videoId":"XHBwUK0qlUE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:004-XHBwUK0qlUE.md","_source":"content","_file":"3.videos/mp/004-XHBwUK0qlUE.md","_extension":"md"},{"_path":"/videos/mp/005-2e_kk9mqrwm","_dir":"mp","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Roadtrip Barcelona - Vlog","description":"In beautiful Barcelona, Tim & Marc joined a warm chapter of Vue.js Roadtrips organized by Passionate People. They interviewed speakers and captured the vibe around the event.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","date":"2022-07-11T07:12:16Z","position":"005","image":"https://i.ytimg.com/vi/2E_kK9mqRwM/maxresdefault.jpg","videoId":"2E_kK9mqRwM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:mp:005-2E_kK9mqRwM.md","_source":"content","_file":"3.videos/mp/005-2E_kK9mqRwM.md","_extension":"md"},{"_path":"/videos/tim/000-mvq-_s20ndk","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"72 hours in Austin, TX","description":"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","date":"2024-06-10T07:13:06Z","position":"000","image":"https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","videoId":"mvq-_s20NDk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:000-mvq-_s20NDk.md","_source":"content","_file":"3.videos/tim/000-mvq-_s20NDk.md","_extension":"md"},{"_path":"/videos/tim/001-vex0ktitib4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The Jake Ward Interview. The power of developer advocacy with Data Protocol","description":"Jake Ward, the co-founder and CEO of Data Protocol, and I discuss the current state of developer advocacy in 2024 and share insights on how dev rel teams can measure their impact.\n\nFollow Jake here:\nhttps://twitter.com/Jacobmward\nhttps://dataprotocol.com\nhttps://www.linkedin.com/in/jacobmward/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://linkedin.com/in/timbenniks","date":"2024-04-15T13:00:24Z","position":"001","image":"https://i.ytimg.com/vi/VEX0KtITib4/maxresdefault.jpg","videoId":"VEX0KtITib4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:001-VEX0KtITib4.md","_source":"content","_file":"3.videos/tim/001-VEX0KtITib4.md","_extension":"md"},{"_path":"/videos/tim/002-196iqp-lhlw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to do Developer Relations in 2024","description":"Developer relations is having a bit of a rough time right now and in this video I explain my vision on how to succeed in 2024. \n\nTL/DR: focus on developer success while they are on your platform. Set up KPIs that measure their success, so you can show impact on the potential revenue these developers might bring. \n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nLinkedIn: https://linkedin.com/in/timbenniks\nGithub: https://github.com/timbenniks","date":"2024-04-05T06:50:24Z","position":"002","image":"https://i.ytimg.com/vi/196iQP-lHLw/maxresdefault.jpg","videoId":"196iQP-lHLw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:002-196iQP-lHLw.md","_source":"content","_file":"3.videos/tim/002-196iQP-lHLw.md","_extension":"md"},{"_path":"/videos/tim/003-yutf3yvsdco","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Cloudinary's hidden magic: AI image manipulation in the URL","description":"Use Cloudinary's AI features to remove items or fill out backgrounds. This is amazing!\n\nhttps://cloudinary.com/blog/generative-fill-ai-powered-outpainting\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-10-11T09:49:25Z","position":"003","image":"https://i.ytimg.com/vi/YuTF3yVsDco/maxresdefault.jpg","videoId":"YuTF3yVsDco","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:003-YuTF3yVsDco.md","_source":"content","_file":"3.videos/tim/003-YuTF3yVsDco.md","_extension":"md"},{"_path":"/videos/tim/004-iip2anhietg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","description":"In this video, I'll show you how to revolutionize your sales outreach game using personalized videos, made possible by using HeyGen's API.\n\nGone are the days of generic cold emails and phone calls. With HeyGen, Sales Development Representatives (SDRs) can now scale up their outreach efforts like never before. Imagine sending out dozens, even hundreds of personalized videos to your prospects, all with just a few clicks.\n\nIn this video, I break down the key benefits of incorporating personalized videos into your sales outreach strategy. You'll discover how HeyGen AI enables SDRs to add personalized data into the video scripts, making each outreach feel tailor-made for the recipient. I created a proof of concept app to show how you can do this.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-09-25T07:34:24Z","position":"004","image":"https://i.ytimg.com/vi/iip2anHIEtg/maxresdefault.jpg","videoId":"iip2anHIEtg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:004-iip2anHIEtg.md","_source":"content","_file":"3.videos/tim/004-iip2anHIEtg.md","_extension":"md"},{"_path":"/videos/tim/005-_wrtdvv37y0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How To Make The Best AI Avatar With Heygen","description":"In this video I explain tips and tricks to make the best @heygen_official #AI #avatar possible.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-09-08T09:26:33Z","position":"005","image":"https://i.ytimg.com/vi/_WRTDVV37Y0/maxresdefault.jpg","videoId":"_WRTDVV37Y0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:005-_WRTDVV37Y0.md","_source":"content","_file":"3.videos/tim/005-_WRTDVV37Y0.md","_extension":"md"},{"_path":"/videos/tim/006-j7jsa49zqja","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to tell if you're becoming a senior dev","description":"Annoyed as a developer? This is a good sign. It means you are getting more senior!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-09-04T08:36:27Z","position":"006","image":"https://i.ytimg.com/vi/J7Jsa49ZQjA/maxresdefault.jpg","videoId":"J7Jsa49ZQjA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:006-J7Jsa49ZQjA.md","_source":"content","_file":"3.videos/tim/006-J7Jsa49ZQjA.md","_extension":"md"},{"_path":"/videos/tim/007-ed1tipzxzr8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Hygraph Content Federation FTW","description":"I rebuilt my website recently and I used Hygraph’s Content Federation platform to create a unified API layer from all the different sources that serve my blog posts, live streams and videos. \n\nIn this video I explain content federation and I show how my website was built. \n\nGo create a free Hygraph account now at http://hygraph.com\n\nThe best Nuxt GraphQL setup: https://www.youtube.com/watch?v=q282BIqYJ6A\n\n00:00 Introduction\n00:55 Content Federation Platform\n06:09 How I built my website\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-08-29T07:53:53Z","position":"007","image":"https://i.ytimg.com/vi/eD1tiPZXZR8/maxresdefault.jpg","videoId":"eD1tiPZXZR8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:007-eD1tiPZXZR8.md","_source":"content","_file":"3.videos/tim/007-eD1tiPZXZR8.md","_extension":"md"},{"_path":"/videos/tim/008-3tbdmf1pwe","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries caisy CMS: the best CMS for agencies?","description":"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. Agencies need specific features in the CMS they use for clients. caisy CMS seems to have all of them. In this Tim Tries video I'm looking at caisy to see if they indeed delivers.\n\ncaisy CMS: https://caisy.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-08-03T07:47:01Z","position":"008","image":"https://i.ytimg.com/vi/-3tbdMF1PWE/maxresdefault.jpg","videoId":"-3tbdMF1PWE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:008--3tbdMF1PWE.md","_source":"content","_file":"3.videos/tim/008--3tbdMF1PWE.md","_extension":"md"},{"_path":"/videos/tim/009-q282biqyj6a","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The best Nuxt 3 GraphQL setup","description":"This is the best GraphQL setup for Nuxt 3. It's simple and effective. It features automatic code generation and typing of schemas. This is awesome.\n\nFind the module here: https://github.com/Diizzayy/nuxt-graphql-client\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-07-31T02:00:15Z","position":"009","image":"https://i.ytimg.com/vi/q282BIqYJ6A/maxresdefault.jpg","videoId":"q282BIqYJ6A","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:009-q282BIqYJ6A.md","_source":"content","_file":"3.videos/tim/009-q282BIqYJ6A.md","_extension":"md"},{"_path":"/videos/tim/010-h3rlwn27ga8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Browser Client Hints are awesome!","description":"Learn how to use Browser Client Hints and Cloudinary to serve responsive images with minimal markup and maximum performance. Browser Client Hints tell Cloudinary the optimal size and resolution of each image request, and Cloudinary delivers it on the fly!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-07-24T14:00:11Z","position":"010","image":"https://i.ytimg.com/vi/H3rLwN27Ga8/maxresdefault.jpg","videoId":"H3rLwN27Ga8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:010-H3rLwN27Ga8.md","_source":"content","_file":"3.videos/tim/010-H3rLwN27Ga8.md","_extension":"md"},{"_path":"/videos/tim/011-ergktbs0woe","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"This is Headless 2.0","description":"This is Headless 2.0. Say goodbye to glue code and hello to seamless collaboration between content editors & developers without losing great technical architecture. Embrace a transparent platform that streamlines workflows while empowering content editors to visually edit across various headless sources.\n\nRead more here: https://dev.to/timbenniks/this-is-headless-20-4n4d\n\n00:00 What is Headless 1.0\n01:05 Headless 1.0 problems\n02:50 What is Headless 2.0\n03:23 The how\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-07-17T11:26:04Z","position":"011","image":"https://i.ytimg.com/vi/ERGKTbS0woE/maxresdefault.jpg","videoId":"ERGKTbS0woE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:011-ERGKTbS0woE.md","_source":"content","_file":"3.videos/tim/011-ERGKTbS0woE.md","_extension":"md"},{"_path":"/videos/tim/012-zscc8-0-dis","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Nuxt 3: Learn about Pinia setup and basics","description":"Learn about how to integrate Pinia into Nuxt 3. This tutorial covers integration tips and tricks and Pinia basics.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-06-13T23:23:43Z","position":"012","image":"https://i.ytimg.com/vi/zsCc8-0-DIs/maxresdefault.jpg","videoId":"zsCc8-0-DIs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:012-zsCc8-0-DIs.md","_source":"content","_file":"3.videos/tim/012-zsCc8-0-DIs.md","_extension":"md"},{"_path":"/videos/tim/013-zn2zxyvw4hy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I cloned myself with AI to create more content","description":"Ever felt overwhelmed by the amount of video content you need to create as a professional content creator, marketer, or developer relations team member? What if you could clone yourself and let AI handle the scripting and video production? 🤯\n\nIn this video, I reveal how I used a tool called HeyGen to do just that! Watch as I walk you through creating an AI-generated video with my own avatar and voice. This is not just a gimmick – the results are surprisingly close to reality and improving daily! 🤩\n\n📌 What's covered in this video:\n\nThe challenges of being a content creator in the fast-paced world of marketing and developer relations\n\nHow HeyGen can help you create AI-generated videos with your own avatar and voice\n\nA step-by-step walkthrough of the HeyGen dashboard and the process of creating an AI-generated video\n\nHow to use your own voice or choose from different voices and accents in HeyGen\n\nDon't miss out on this game-changing tool to help you level up your video content production! Try HeyGen for yourself and witness the power of AI in action. 🚀\n\n#AI #HeyGen #VideoProduction\n\nhttps://heygen.com\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-06-09T07:00:23Z","position":"013","image":"https://i.ytimg.com/vi/zn2zXyVW4hY/maxresdefault.jpg","videoId":"zn2zXyVW4hY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:013-zn2zXyVW4hY.md","_source":"content","_file":"3.videos/tim/013-zn2zXyVW4hY.md","_extension":"md"},{"_path":"/videos/tim/014-dyq17r5c9-s","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Live London 2023 Vlog","description":"Vue.js London was as great as we all expected, with a fantastic venue, and a great hotel! The speaker's family got back together for yet another event! \n\nI got to play my guitar for Alive and Kicking. Check out more here: https://timbenniks.dev/alive-and-kicking\n\nFollow me:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-05-22T09:03:13Z","position":"014","image":"https://i.ytimg.com/vi/DYq17R5C9-s/maxresdefault.jpg","videoId":"DYq17R5C9-s","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:014-DYq17R5C9-s.md","_source":"content","_file":"3.videos/tim/014-DYq17R5C9-s.md","_extension":"md"},{"_path":"/videos/tim/015-oq050_ytylk","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"AI audio for content creators","description":"Are you tired of spending hours editing audio to achieve that perfect sound? Look no further! Using Adobe Podcasts, I demonstrate how artificial intelligence can enhance your audio quality effortlessly, giving you more time to focus on your content. Don't miss out on this game changer for dev rels and content creators.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-04-05T14:00:13Z","position":"015","image":"https://i.ytimg.com/vi/OQ050_YtYLk/maxresdefault.jpg","videoId":"OQ050_YtYLk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:015-OQ050_YtYLk.md","_source":"content","_file":"3.videos/tim/015-OQ050_YtYLk.md","_extension":"md"},{"_path":"/videos/tim/016-rwrzovc5oc4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I joined the Supasquad ambassadors program at Supabase!","description":"Supabase was kind enough to invite me into their Supasquad ambassador program, and I'm super excited about it!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2023-04-03T13:35:45Z","position":"016","image":"https://i.ytimg.com/vi/RWRZovC5oc4/maxresdefault.jpg","videoId":"RWRZovC5oc4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:016-RWRZovC5oc4.md","_source":"content","_file":"3.videos/tim/016-RWRZovC5oc4.md","_extension":"md"},{"_path":"/videos/tim/017-m0mrligs6i0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js guitar karaoke: how I built it","description":"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","date":"2023-03-20T06:10:23Z","position":"017","image":"https://i.ytimg.com/vi/M0MrLIGs6I0/maxresdefault.jpg","videoId":"M0MrLIGs6I0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:017-M0MrLIGs6I0.md","_source":"content","_file":"3.videos/tim/017-M0MrLIGs6I0.md","_extension":"md"},{"_path":"/videos/tim/018-hhpitreyobi","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The story behind Alive and kicking","description":"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","date":"2023-03-02T15:00:09Z","position":"018","image":"https://i.ytimg.com/vi/hhPiTREYobI/maxresdefault.jpg","videoId":"hhPiTREYobI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:018-hhPiTREYobI.md","_source":"content","_file":"3.videos/tim/018-hhPiTREYobI.md","_extension":"md"},{"_path":"/videos/tim/019-e64eyulaomk","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I fell back in love with Sitecore","description":"Sitecore has been career-defining for me, we lost touch for a while, but recently, we fell back in love...\n\n#Sitecore is an excellent CMS but with a few flaws due to its monolithic nature and, more recently, due to its pseudo-composable approach. I found a way to love Sitecore again by decoupling its content management and front-end rendering parts. You can use @UniformVisualWorkspace to select content from a Sitecore instance and funnel it into any front end you desire. \n\nThis approach gives you developer freedom, a way to add any other headless source without worry, and you can host anywhere you want. Say goodbye to your slow and expensive CD servers! \n\nIn this video, I use Nuxt 3 for the rendering - because why not!?\n\nFind out more about #Uniform at https://uniform.dev\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-11-23T16:58:55Z","position":"019","image":"https://i.ytimg.com/vi/e64EyULAoMk/maxresdefault.jpg","videoId":"e64EyULAoMk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:019-e64EyULAoMk.md","_source":"content","_file":"3.videos/tim/019-e64EyULAoMk.md","_extension":"md"},{"_path":"/videos/tim/020-xetyke98mp0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"JamstackConf talk: DXC, the modern tech stack","description":"This is my JamstackConf talk\n\nYour tools are holding you back. DXC is the solution that gives developers and business teams access to the tools they need to do their best work and deliver faster than ever. Let's kill the glue code monster!\n\nLearn more: https://uniform.dev/what-is-dxc\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-11-16T09:38:50Z","position":"020","image":"https://i.ytimg.com/vi/xeTYkE98MP0/maxresdefault.jpg","videoId":"xeTYkE98MP0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:020-xeTYkE98MP0.md","_source":"content","_file":"3.videos/tim/020-xeTYkE98MP0.md","_extension":"md"},{"_path":"/videos/tim/021-0xo0bnzquf4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Vue 3: Learn how to make a composable","description":"Learn how to make a Vue 3 composable.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Vue3-turbos/tree/main/vue3-how-to-make-a-composable\n\nVisit https://turbo-tutorials.dev/tutorials/vue-3-learn-how-to-make-a-composable/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"021","image":"https://i.ytimg.com/vi/0xO0BNZqUf4/maxresdefault.jpg","videoId":"0xO0BNZqUf4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:021-0xO0BNZqUf4.md","_source":"content","_file":"3.videos/tim/021-0xO0BNZqUf4.md","_extension":"md"},{"_path":"/videos/tim/022-cwkjy7raony","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: How to add client only components","description":"Learn how to use client and server components in Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-clientside-serverside-components\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-add-client-only-components/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"022","image":"https://i.ytimg.com/vi/CwkJY7RaonY/maxresdefault.jpg","videoId":"CwkJY7RaonY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:022-CwkJY7RaonY.md","_source":"content","_file":"3.videos/tim/022-CwkJY7RaonY.md","_extension":"md"},{"_path":"/videos/tim/023-lsf2rhzsykg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","description":"Learn how to query an internal Nuxt API route from your front end using useFetch(). \n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/nuxt3-query-from-api-route\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-query-from-a-nuxt-api-route/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"023","image":"https://i.ytimg.com/vi/Lsf2rhZSYKg/maxresdefault.jpg","videoId":"Lsf2rhZSYKg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:023-Lsf2rhZSYKg.md","_source":"content","_file":"3.videos/tim/023-Lsf2rhZSYKg.md","_extension":"md"},{"_path":"/videos/tim/024-mg0fevwnue0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","description":"Learn how to apply Vue components into markdown with MDC and Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-vue-components-in-content-v2\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-use-vue-components-in-nuxt-content-v2/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"024","image":"https://i.ytimg.com/vi/Mg0feVWNUE0/maxresdefault.jpg","videoId":"Mg0feVWNUE0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:024-Mg0feVWNUE0.md","_source":"content","_file":"3.videos/tim/024-Mg0feVWNUE0.md","_extension":"md"},{"_path":"/videos/tim/025-npse6yqqzki","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Learn about responsive image basics","description":"Learn about the basics of responsive images\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Html-turbos/tree/main/responsive-image\n\nVisit https://turbo-tutorials.dev/tutorials/learn-about-responsive-image-basics/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"025","image":"https://i.ytimg.com/vi/NPSe6yqQzKI/maxresdefault.jpg","videoId":"NPSe6yqQzKI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:025-NPSe6yqQzKI.md","_source":"content","_file":"3.videos/tim/025-NPSe6yqQzKI.md","_extension":"md"},{"_path":"/videos/tim/026-rh6hjo9xk-o","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Head management","description":"Learn how to add information to the head of the page with Nuxt 3.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-head\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-head-management/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"026","image":"https://i.ytimg.com/vi/Rh6HJO9xK-o/maxresdefault.jpg","videoId":"Rh6HJO9xK-o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:026-Rh6HJO9xK-o.md","_source":"content","_file":"3.videos/tim/026-Rh6HJO9xK-o.md","_extension":"md"},{"_path":"/videos/tim/027-rth3oikjp2k","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: schema org","description":"Learn how to add schema.org microdata to your Nuxt 3 pages. \n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-schema-org\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-schema-org/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"027","image":"https://i.ytimg.com/vi/rtH3OIkJp2k/maxresdefault.jpg","videoId":"rtH3OIkJp2k","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:027-rtH3OIkJp2k.md","_source":"content","_file":"3.videos/tim/027-rtH3OIkJp2k.md","_extension":"md"},{"_path":"/videos/tim/028-zad7s01lfic","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Query from an external API + read more","description":"Learn how to query an external API and how to implement \"read more\" functionality.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-query-from-external-api\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-query-from-an-external-api-read-more/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:48Z","position":"028","image":"https://i.ytimg.com/vi/zAd7s01LfIc/maxresdefault.jpg","videoId":"zAd7s01LfIc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:028-zAd7s01LfIc.md","_source":"content","_file":"3.videos/tim/028-zAd7s01LfIc.md","_extension":"md"},{"_path":"/videos/tim/029-5i1zqfu6xtw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","description":"Learn about Nuxt 3's Nitro engine and how it can do hybrid rendering between SSG and SSR.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-hybrid-mode\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-learn-about-hybrid-rendering/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:47Z","position":"029","image":"https://i.ytimg.com/vi/5i1Zqfu6Xtw/maxresdefault.jpg","videoId":"5i1Zqfu6Xtw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:029-5i1Zqfu6Xtw.md","_source":"content","_file":"3.videos/tim/029-5i1Zqfu6Xtw.md","_extension":"md"},{"_path":"/videos/tim/030-d33ynlhvhxm","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Turbo Tutorial | Nuxt 3: Pick & Transform","description":"Learn how to pick and transform data coming back from an API call in Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-fetch-pick-transform\n\nVisit https://turbo-tutorials.dev/tutorials/turbo-tutorial-or-nuxt-3-pick-and-transform/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","date":"2022-10-31T16:04:47Z","position":"030","image":"https://i.ytimg.com/vi/D33YNlhvHXM/maxresdefault.jpg","videoId":"D33YNlhvHXM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:030-D33YNlhvHXM.md","_source":"content","_file":"3.videos/tim/030-D33YNlhvHXM.md","_extension":"md"},{"_path":"/videos/tim/031-c1jduhsh1ae","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries Medusajs the open source Shopify alternative","description":"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. In this episode, I try out #Medusajs, an open-source #ecommerce alternative to Shopify.\n\nConclusion: excellent, great, awesome, composable, performant. But why is this not a Saas? I'd happily pay a few bucks a month for this!\n\nFollow medusa: \nhttps://medusajs.com\nhttps://github.com/medusajs/medusa\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGitHub: https://github.com/timbenniks","date":"2022-09-19T09:39:20Z","position":"031","image":"https://i.ytimg.com/vi/c1jDUhsh1aE/maxresdefault.jpg","videoId":"c1jDUhsh1aE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:031-c1jDUhsh1aE.md","_source":"content","_file":"3.videos/tim/031-c1jDUhsh1aE.md","_extension":"md"},{"_path":"/videos/tim/032-8z1npig-ya","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How I film videos in my new studio. A content creator's dream.","description":"I've been away for a bit, but I'm back! I've built a new set in my studio, plug 'n play. I sit down, hit record, and I'm ready to rock! Content creators often have lots of setup and tear down, which makes creating slow. \n\n\nThe tools I use in this setup:\nCamera: Sony ZV e10\nLens: Sigma 16mm f1.4\nLights: Amaran 100d + Godox softbox, Godox TL60, Filtrox VL500\nMic: Rode NTG 4+\nAudio Interface: Comica Linkflex AD2\nPreview screen: Feelworld FW568V2\nStands: Neewer C-stand\nRemote: JJC Bluetooth for Sony Cameras\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks","date":"2022-09-02T11:24:19Z","position":"032","image":"https://i.ytimg.com/vi/-8Z1npiG-YA/maxresdefault.jpg","videoId":"-8Z1npiG-YA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:032--8Z1npiG-YA.md","_source":"content","_file":"3.videos/tim/032--8Z1npiG-YA.md","_extension":"md"},{"_path":"/videos/tim/033-8wxdfixxktw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The State of Vue in 2022 with Monterail's Szymon Licau","description":"In this video, I'm interviewing Szymon Licau, Frontend Principal Engineer at Monterail, about the State of #Vue in 2022. Monterail has created this report for the last four years, and they are always on the top of their game. It's an exciting read!\n\nGet the report here: https://hi.monterail.co/3NuLjRr\n\nFollow Szymon here:\nhttps://twitter.com/szymon_licau\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-07-24T19:36:08Z","position":"033","image":"https://i.ytimg.com/vi/8wXDFiXXkTw/maxresdefault.jpg","videoId":"8wXDFiXXkTw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:033-8wXDFiXXkTw.md","_source":"content","_file":"3.videos/tim/033-8wXDFiXXkTw.md","_extension":"md"},{"_path":"/videos/tim/034-yzh1l740tno","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","description":"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. In this episode, I try out the Algolia #Nuxt3 module made by Jakub Andrzejewski.\n\nConclusion: Being a release candidate, Nuxt 3 is surprisingly stable, however, the ecosystem around it is not fully there yet. With some hiccups along the way, this Nuxt 3 module makes Algolia work great and super easy to use!\n\nDisclaimer: For this video my opinions are honest and real time. This is truly the first time I tried the Algolia module for Nuxt 3.\n\nJakub Andrzejewski:\nhttps://twitter.com/jacobandrewsky\n\nAlgolia module for Nuxt 3:\nhttps://algolia.nuxtjs.org\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks","date":"2022-07-09T12:46:18Z","position":"034","image":"https://i.ytimg.com/vi/yZh1l740tNo/maxresdefault.jpg","videoId":"yZh1l740tNo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:034-yZh1l740tNo.md","_source":"content","_file":"3.videos/tim/034-yZh1l740tNo.md","_extension":"md"},{"_path":"/videos/tim/035-mdzkgc1pgbc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to buy gear for content creation in 2022","description":"I just bought a new studio light and the experience made me record this video. It gives general advice on what type of price range to look for in gear for content creators like me. Enjoy!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-03-28T12:44:57Z","position":"035","image":"https://i.ytimg.com/vi/MdzKgC1Pgbc/maxresdefault.jpg","videoId":"MdzKgC1Pgbc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:035-MdzKgC1Pgbc.md","_source":"content","_file":"3.videos/tim/035-MdzKgC1Pgbc.md","_extension":"md"},{"_path":"/videos/tim/036-dli7uzzddx8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I built my own YouTube studio 2022","description":"After months of hard work, I finally finished my very own YouTube studio! We transformed a leaky old countryside garage with no windows into the ultimate workspace for a content creator, conference speaker and developer advocate.\n\nThis is a space where I film videos, do live streams, speak at virtual conferences and have colleagues over for work sessions. \n\n00:00 Intro sequence\n00:33 Introduction to the project\n01:52 Getting started\n04:00 Custom oak windows and doors\n05:13 Delivery of supplies\n06:06 Water damage and leakage\n08:40 More water issues\n10:30 Ceilings and walls\n11:50 Pragmatic solutions\n13:05 Electronics and plaster\n15:15 Painting\n16:27 Final reveal\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2022-03-10T11:06:58Z","position":"036","image":"https://i.ytimg.com/vi/dlI7uZzDDx8/maxresdefault.jpg","videoId":"dlI7uZzDDx8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:036-dlI7uZzDDx8.md","_source":"content","_file":"3.videos/tim/036-dlI7uZzDDx8.md","_extension":"md"},{"_path":"/videos/tim/037-ry60wvg0fzq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Cable management for Nuxt 3","description":"My conference talk from VueConf Toronto!\n\nCable management for Nuxt 3. Compose pages with multiple headless sources and never re-platform again…\n\nNow that companies are starting to use multiple different headless sources to create their digital experience platforms, a real problem is forming. Content editors need to create pages with products, CMS content, videos and personalisation but all these things come from different vendors.\n\nThey have no overview over what to do and they always have to ask a developer to connect things together in the front-end. Developers generally have no time so frustration kicks in.\n\nWe need a way to compose pages with different headless sources without too much developer involvement. Marketers need to be free to tell their stories when and how they want to. BUT. Developers also need to be happy. They need complete freedom in their tech stack and in how they choose to build a website.\n\nSounds like a dream come true? In this talk I’ll show you how to connect up different headless sources in a very easy to use system and how query them in the front-end without tight coupling. \n\nLet’s Nuxtify the world!\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-11-23T18:16:39Z","position":"037","image":"https://i.ytimg.com/vi/RY60wVg0FZQ/maxresdefault.jpg","videoId":"RY60wVg0FZQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:037-RY60wVg0FZQ.md","_source":"content","_file":"3.videos/tim/037-RY60wVg0FZQ.md","_extension":"md"},{"_path":"/videos/tim/038-ek-hhozlfvg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"My top 5 favourite Nuxt 3 features","description":"Nuxt 3 is in beta and it’s awesome. I’ve tried it out at length and I have a couple of things to show you. These are my 5 favourite features Nuxt has to offer for your daily developer experience. \n\nhttps://v3.nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-10-21T14:19:13Z","position":"038","image":"https://i.ytimg.com/vi/ek-hhoZLFVg/maxresdefault.jpg","videoId":"ek-hhoZLFVg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:038-ek-hhoZLFVg.md","_source":"content","_file":"3.videos/tim/038-ek-hhoZLFVg.md","_extension":"md"},{"_path":"/videos/tim/039-kn5u4ahcs_0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vlog: DevBreak21 what an amazing conference experience!","description":"I had the privilege to speak at DevBreak21: The Ultimate Tech Festival. It's indeed more of a festival than a conference. Held in an ancient castle, the grounds allowed for lot's of activities and multiple talk tracks. \n\nI had a great time!\nSee more here: https://www.devbreak.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-09-13T12:33:22Z","position":"039","image":"https://i.ytimg.com/vi/Kn5U4AHCs_0/maxresdefault.jpg","videoId":"Kn5U4AHCs_0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:039-Kn5U4AHCs_0.md","_source":"content","_file":"3.videos/tim/039-Kn5U4AHCs_0.md","_extension":"md"},{"_path":"/videos/tim/040-o8m4cs3o4ii","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Make your website even faster with Astro!","description":"Now that we have figured out that #Jamstack sites are the fastest out there, the JavaScript bundles they ship have become the bottleneck. JavaScript bundles need to be downloaded, parsed and executed by the browser. Lot's of people now who have phablets and loading a regular React or Vue app is actually slow due to the JavaScript they output.\n\nWhat if you could build a website with your favourite framework but choose exactly which bits of JavaScript end up on the client?\n\nEnter Astro.\n\nWith the ability to choose what JavaScript the user has to load and when, Astro is paving a new way of web development. In my opinion this is the future.\n\nCheck out my code here: https://github.com/timbenniks/astro-vue\n\nI used Astro, Vue, React, Prismic and Tailwind for the demo.\n\nhttps://astro.build\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-08-25T14:51:16Z","position":"040","image":"https://i.ytimg.com/vi/O8m4cS3o4II/maxresdefault.jpg","videoId":"O8m4cS3o4II","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:040-O8m4cS3o4II.md","_source":"content","_file":"3.videos/tim/040-O8m4cS3o4II.md","_extension":"md"},{"_path":"/videos/tim/041-xba15vr-kfy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vlog: I'm building my own studio!","description":"We moved house and now I have the chance to build the ultimate YouTube studio in our garage! In this vlog series you'll see me do everything myself. From fitting windows, to electronics, to insulation.\n\nPlease help, I know nothing about this stuff :)\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-07-28T12:08:29Z","position":"041","image":"https://i.ytimg.com/vi/xba15Vr-kFY/maxresdefault.jpg","videoId":"xba15Vr-kFY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:041-xba15Vr-kFY.md","_source":"content","_file":"3.videos/tim/041-xba15Vr-kFY.md","_extension":"md"},{"_path":"/videos/tim/042-lpk392g10ou","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Nuxt vs Next: the battle of the Images","description":"In this video I compare the newly released Nuxt and Next native Image tags to the Next Image. Who wins? \n\nThe rules:\nOutput semantically valid HTML according to web standards.\nNo opinions added to the output.\nShould work out of the box.\n\n00:00 Introduction\n00:47 The rules\n01:50 Nuxt Image\n06:06 Next Image\n11:32 Conclusions\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-06-21T08:31:45Z","position":"042","image":"https://i.ytimg.com/vi/lpK392G10OU/maxresdefault.jpg","videoId":"lpK392G10OU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:042-lpK392G10OU.md","_source":"content","_file":"3.videos/tim/042-lpK392G10OU.md","_extension":"md"},{"_path":"/videos/tim/043-uxjgt2_mf90","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The Ultimate Guide to Responsive Images","description":"Images are hard. They seem easy to use but there are a lot of ways to use them. In this video I explain the anatomy the img and picture tags. I hope this helps because it frustrates me how hard they are to use.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-06-16T12:29:12Z","position":"043","image":"https://i.ytimg.com/vi/UXjgT2_MF90/maxresdefault.jpg","videoId":"UXjgT2_MF90","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:043-UXjgT2_MF90.md","_source":"content","_file":"3.videos/tim/043-UXjgT2_MF90.md","_extension":"md"},{"_path":"/videos/tim/044-d0ra_m3jlsy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Storyblok. One of the best headless content editing experiences","description":"Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time. This is the #timtries Series. In this episode I try out the #Storyblok, the headless CMS with NuxtJS as the front-end. \n\nConclusion: It's probably the best headless #CMS editor experience I have seen. The set-up had some hiccups however.\n\nDisclaimer: For this video my opinions are honest and real time. This is truly the first time I tried Storyblok.\n\nStoryblok:\nhttps://www.storyblok.com/\nhttps://twitter.com/storyblok\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks","date":"2021-05-24T13:00:14Z","position":"044","image":"https://i.ytimg.com/vi/d0ra_M3JLSY/maxresdefault.jpg","videoId":"d0ra_M3JLSY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:044-d0ra_M3JLSY.md","_source":"content","_file":"3.videos/tim/044-d0ra_M3JLSY.md","_extension":"md"},{"_path":"/videos/tim/045-7jk6nyalhuc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Algolia Crawler Plugin for Netlify","description":"Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time. This is the #timtries Series.\n\nIn this episode I try out the Algolia Crawler for #Netlify.\n\nConclusion: you should try this out! I’ll use this on all my Jamstack websites going forward. Wow!\n\nWant to try #Algolia for free yourself? Use my affiliate link: https://utm.io/udjGK\n\nDisclaimer: I'm an Algolia ambassador, for this video my opinions are honest and real time.\n\nFind Algolia here:\nhttps://utm.io/udjGK\nhttps://twitter.com/Algolia\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-05-03T14:00:02Z","position":"045","image":"https://i.ytimg.com/vi/7JK6NYaLHuc/maxresdefault.jpg","videoId":"7JK6NYaLHuc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:045-7JK6NYaLHuc.md","_source":"content","_file":"3.videos/tim/045-7JK6NYaLHuc.md","_extension":"md"},{"_path":"/videos/tim/046-su22r2w3wea","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Apple M1 with Tailwind JIT and Vite is faster than my brain","description":"The new Apple M1 is fast. Really fast. I decided to try using Vite and the new Tailwind JIT together to see how fast the developer experience can actually get.\n\nConclusion: it's so fast my brain melted...\n\nThe future is bright for front-end developers. New hardware and software is coming out now that is changing the game.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-04-01T12:45:01Z","position":"046","image":"https://i.ytimg.com/vi/sU22R2W3wEA/maxresdefault.jpg","videoId":"sU22R2W3wEA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:046-sU22R2W3wEA.md","_source":"content","_file":"3.videos/tim/046-sU22R2W3wEA.md","_extension":"md"},{"_path":"/videos/tim/047-6ub_k4uvz20","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Unboxing the new M1 Mac Mini for Video editing and programming.","description":"After a two year hiatus to Windows land I decided to switch back to Apple. PC parts are not in stock and my current beast of a PC actually isn't as stable as I had hoped.\n\nI opted for the new M1 Mac Mini which I maxed out. I have a 1tb 16gb RAM model. I also bought some other goodies like a Caldigit dock and a portable nvme drive.\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2021-03-24T16:00:15Z","position":"047","image":"https://i.ytimg.com/vi/6Ub_k4uvz20/maxresdefault.jpg","videoId":"6Ub_k4uvz20","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:047-6Ub_k4uvz20.md","_source":"content","_file":"3.videos/tim/047-6Ub_k4uvz20.md","_extension":"md"},{"_path":"/videos/tim/048-ec7pvgy8xsq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Core Web Vitals explained with Ishan Anand | e01","description":"In this series Ishan Anand (CTO and co-founder of Moovweb) and I explain Core Web Vitals. In this installment we discuss the basics and we figure out that Lighthouse definitely is not the right tool to do performance tests for websites.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks\n\nFollow Ishan here:\nhttps://moovweb.com\nhttps://corewebvitals.email\nhttps://twitter.com/ianand\nhttps://www.linkedin.com/in/ishananand/","date":"2021-03-22T13:00:10Z","position":"048","image":"https://i.ytimg.com/vi/Ec7pVGy8XsQ/maxresdefault.jpg","videoId":"Ec7pVGy8XsQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:048-Ec7pVGy8XsQ.md","_source":"content","_file":"3.videos/tim/048-Ec7pVGy8XsQ.md","_extension":"md"},{"_path":"/videos/tim/049-lsxu_q-8rrc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","description":"Welcome to the second episode of the DevRel roundtable series where I invite developer relation people to a roundtable discussion to converse on whatever topics we feel are relevant.\n\nIn this episode I invited two titans: Debbie O'brien from Bit and Lucie Haberer from Prismic. We go over what a DevRel is and a lot more.\n\nFollow Debbie here:\nhttps://twitter.com/debs_obrien\nhttps://debbie.codes/\n\nFollow Lucie here:\nhttps://twitter.com/li_hbr\nhttps://lihbr.com/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks","date":"2021-03-08T12:00:15Z","position":"049","image":"https://i.ytimg.com/vi/lSxU_q-8Rrc/maxresdefault.jpg","videoId":"lSxU_q-8Rrc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:049-lSxU_q-8Rrc.md","_source":"content","_file":"3.videos/tim/049-lSxU_q-8Rrc.md","_extension":"md"},{"_path":"/videos/tim/050-yezaod1sddg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"The Modern DXP: How JAMstack will change the world","description":"This is my talk for my JSWorld Conference! I'm talking about how JAMstack will change the world. I now work at Uniform where we take disrupting the status quo of Digital Experience Platform software seriously :)\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\nUniform: https://uniform.dev","date":"2021-02-25T15:59:46Z","position":"050","image":"https://i.ytimg.com/vi/YEzAod1sDdg/maxresdefault.jpg","videoId":"YEzAod1sDdg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:050-YEzAod1sDdg.md","_source":"content","_file":"3.videos/tim/050-YEzAod1sDdg.md","_extension":"md"},{"_path":"/videos/tim/051-dv5mlxbrti8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","description":"I enjoy making websites super fast, but I also like metrics. These two things do not always combine well. To add metrics, you also need code to provide these metrics. But that slows down your website!\n\nI found a way to remove Google Analytics JavaScript but still provide data to its back-end. I even added web vitals! I did all of it in Nuxt!\n\nCredit: https://twitter.com/DasSurma\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks","date":"2021-02-12T12:00:03Z","position":"051","image":"https://i.ytimg.com/vi/DV5mLxbrTi8/maxresdefault.jpg","videoId":"DV5mLxbrTi8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:051-DV5mLxbrTi8.md","_source":"content","_file":"3.videos/tim/051-DV5mLxbrTi8.md","_extension":"md"},{"_path":"/videos/tim/052-hcthe5pwhvm","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"I have a new job at a Silicon Valley Startup!","description":"Read more here: https://timbenniks.dev/writings/i-turned-my-career-on-its-head/\n\n2021 is starting well! I have a new Job at a silicon valley startup. In this video I discuss what the job is, why I like it and also why I moved away from the safe career path I was on at Valtech.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","date":"2021-02-01T09:27:12Z","position":"052","image":"https://i.ytimg.com/vi/HCThe5pWhvM/maxresdefault.jpg","videoId":"HCThe5pWhvM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:052-HCThe5pWhvM.md","_source":"content","_file":"3.videos/tim/052-HCThe5pWhvM.md","_extension":"md"},{"_path":"/videos/tim/053-zd7qkgd8ix8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","description":"In this video I interview Ishan Anand (co-founder/CTO) and Mark Brocado (VP of Engineering) from Moovweb. Moovweb is an all-in-one JAMstack platform to develop, deploy, preview, split test and monitor your frontend. The cool thing is that Moovweb is able to combine dynamic routing with static serving on the CDN edge. \n\nI'm intrigued by this concept and I wonder why Netlify and Vercel are not doing similar things. Ishan and Mark go deep and explain everything!\n\nFind Ishan, Mark and Moovweb here:\nhttps://moovweb.com\nhttps://twitter.com/moovweb\n\nFollow me here:\nhttps://timbenniks.dev/\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","date":"2021-01-26T10:00:18Z","position":"053","image":"https://i.ytimg.com/vi/Zd7QkGD8Ix8/maxresdefault.jpg","videoId":"Zd7QkGD8Ix8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:053-Zd7QkGD8Ix8.md","_source":"content","_file":"3.videos/tim/053-Zd7QkGD8Ix8.md","_extension":"md"},{"_path":"/videos/tim/054-bhffzm6n3tw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"2020 The best year of my career","description":"I created a pretty personal video about how I experienced 2020. It strangely became the best year of my career. Make sure to stick around to the end for a surprising turn of events for 2021.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","date":"2021-01-05T10:00:10Z","position":"054","image":"https://i.ytimg.com/vi/bhFfzM6n3Tw/maxresdefault.jpg","videoId":"bhFfzM6n3Tw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:054-bhFfzM6n3Tw.md","_source":"content","_file":"3.videos/tim/054-bhFfzM6n3Tw.md","_extension":"md"},{"_path":"/videos/tim/055-s1od1u-itka","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to build your online persona","description":"This video is a webinar I did for my colleagues. Since 2019 I have been creating my online persona. I've failed a bunch and I have learnt a lot. In this session I'm sharing my experience, advice and insights into building your brand and growing your audience. I'll teach you how to get yourself or your employer noticed for all the right reasons.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-12-09T10:00:08Z","position":"055","image":"https://i.ytimg.com/vi/S1oD1u-itKA/maxresdefault.jpg","videoId":"S1oD1u-itKA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:055-S1oD1u-itKA.md","_source":"content","_file":"3.videos/tim/055-S1oD1u-itKA.md","_extension":"md"},{"_path":"/videos/tim/056-rm_bameopiy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to record yourself guide","description":"After daily questions I decided to work on a huge tips & tricks video for people who pre-record talks or do live streams. This video has 39 tips to get you started! If you follow this guide and combine it with a good subject, you will see great results.\n\nImportant links: \nhttps://timbenniks.dev/writings/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/\nhttps://timbenniks.dev/writings/covid-19-work-from-home-how-to-make-your-webcam-look/\n\nTimestamps:\n00:00 intro\n02:10 General tips\n05:08 Tips while recording\n07:35 The camera & framing\n10:00 Lighting\n12:44 Camera settings\n14:37 Audio\n17:37 Editing & recording\n22:03 Concluding\n\nSponsoring: https://buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-12-02T11:51:27Z","position":"056","image":"https://i.ytimg.com/vi/rm_bameopIY/maxresdefault.jpg","videoId":"rm_bameopIY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:056-rm_bameopIY.md","_source":"content","_file":"3.videos/tim/056-rm_bameopIY.md","_extension":"md"},{"_path":"/videos/tim/057-db5jjbwg-zm","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Interview with Alex Shyba co-founder of Uniform","description":"In this video I interview Alex Shyba, co-founder of Uniform. At work (I'm web development director at a big agency), Alex did some consulting for us and we were always impressed by his skills and excellent manners. In this interview we dive into what Uniform does, why he started it and he even shows us how it works.\n\nEnterprise software vendors better watch out. This startup will disrupt. I would pay close attention to their roadmap in the coming months. Expect a Tim Tries video when their software reaches open beta.\n\nAbout Uniform:\nUniform enables jamstack with your current Enterprise Digital Experience Platform and unlocks edge-based personalization with the tools you already have.\n\nFind Alex and Uniform here:\nhttps://twitter.com/alexshyba\nhttps://twitter.com/UniformDev\nhttps://uniform.dev/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-11-25T13:00:06Z","position":"057","image":"https://i.ytimg.com/vi/DB5jjbwg-zM/maxresdefault.jpg","videoId":"DB5jjbwg-zM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:057-DB5jjbwg-zM.md","_source":"content","_file":"3.videos/tim/057-DB5jjbwg-zM.md","_extension":"md"},{"_path":"/videos/tim/058-iykkwy8k2d4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to reduce bundle sizes in Nuxt","description":"Everybody wants smaller JavaScript bundles. In this video Lucie Haberer and I explore a way to reduce bundle sizes in Nuxt.\n\n1. We explore data abstraction and moving data mapping to a data layer that is only accessed by the asyncData or Fetch. \n2. We discuss moving bigger functionality to serverless API's\n3. We show how to make smaller \"named\" webpack chunks\n\nThis video is in-depth (25 mins), have a seat, take your time and enjoy. Happy optimizing!\nBeware, this works best for statically rendered Nuxt projects.\n\nhttps://lihbr.com/blog/pushing-nuxt-js-static-generation-one-step-further\n\nFollow Lucie here: \nWebsite: https://lihbr.com/\nTwitter: https://twitter.com/li_hbr\nGithub: https://github.com/lihbr\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#javascript #bundlesizes #nuxt","date":"2020-11-18T13:39:52Z","position":"058","image":"https://i.ytimg.com/vi/IyKkwy8K2d4/maxresdefault.jpg","videoId":"IyKkwy8K2d4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:058-IyKkwy8K2d4.md","_source":"content","_file":"3.videos/tim/058-IyKkwy8K2d4.md","_extension":"md"},{"_path":"/videos/tim/059-nr_aohhgl3s","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Interview with Evan You","description":"I had the privilege to interview Evan You, the creator of Vue.js. I collaborated with Passionate People, the organizers of the excellent Vue.js Global conference and together we came up with a round table discussion format.\n\nIn this discussion I was joined by Marc Backes and Israel Roldán León. We tend to go into the more personal and behind the scenes questions rather than just being technical. This provides a great look into Evan as a person rather than just talking tech.\n\nEvan You: https://twitter.com/youyuxi\nMarc Backes: https://twitter.com/themarcba\nIsrael Roldán León: https://twitter.com/isro_me\nPassionate People: https://twitter.com/passionpeopleNL\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nPoster image taken from Github.\n\n#vue #evanyou #interview","date":"2020-11-10T10:05:08Z","position":"059","image":"https://i.ytimg.com/vi/NR_aohhgl3s/maxresdefault.jpg","videoId":"NR_aohhgl3s","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:059-NR_aohhgl3s.md","_source":"content","_file":"3.videos/tim/059-NR_aohhgl3s.md","_extension":"md"},{"_path":"/videos/tim/060-oxjhew-10aq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Easy dynamic routes in your Nuxt sitemap","description":"https://timbenniks.dev/writings/easy-dynamic-routes-in-your-nuxt-sitemap/ This is a cool way to add dynamic routes to your sitemap! I think this should be a part of the official Sitemap module.\n\nBy default the Nuxt sitemap module does not support dynamic routes. In this video I show you an easy and effortless way to dynamically add all #NuxtJS routes to your #sitemap xml file. \n\nIf you want you can buy me a coffee: https://www.buymeacoffee.com/timbenniks\n\nProps for this idea go to https://dev.to/andynoir.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#SEO","date":"2020-11-08T15:30:41Z","position":"060","image":"https://i.ytimg.com/vi/oXJHEw-10aQ/maxresdefault.jpg","videoId":"oXJHEw-10aQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:060-oXJHEw-10aQ.md","_source":"content","_file":"3.videos/tim/060-oXJHEw-10aQ.md","_extension":"md"},{"_path":"/videos/tim/061-zxz9mojtwh8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Webpack 5 module federation and more","description":"In this video I take about 15 minutes to discuss the new features of Webpack 5. Webpack 5 is a big leap forward with its tree shaking and module federation. Good stuff!\n\nCover Idea by https://twitter.com/arismarko.\nTime stamps:\n\n00:00 Intro\n02:48 How Webpack works\n05:06 What is new in Webpack 5\n05:43 Persistent caching\n06:35 Smaller bundle sizes\n07:13 Better long-term caching\n08:18 Module federation\n10:20 Breaking changes\n12:19 Should you upgrade?\n13:14 Thank you\n\nConsider sponsoring: \nhttps://www.buymeacoffee.com/timbenniks\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-11-02T10:00:16Z","position":"061","image":"https://i.ytimg.com/vi/ZXz9MoJTWh8/maxresdefault.jpg","videoId":"ZXz9MoJTWh8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:061-ZXz9MoJTWh8.md","_source":"content","_file":"3.videos/tim/061-ZXz9MoJTWh8.md","_extension":"md"},{"_path":"/videos/tim/062-xiz2p0zlbd8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","description":"Welcome to the first episode of the DevRel roundtable series where I invite developer relation people to a roundtable discussion to converse on whatever topics we feel are relevant.\n\nIn this episode I invited two titans: Tessa Mero and Domitrius Clark from Cloudinary. We go over what a DevRel is and a lot more.\n\nFollow Tessa here:\nhttps://twitter.com/tessamero\nhttps://dev.to/tessamero\n\nFollow Domitrius Clark here:\nhttps://twitter.com/domitriusclark\nhttps://egghead.io/instructors/domitrius-clark\nhttps://www.twitch.tv/domitriusclark\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-10-27T14:49:55Z","position":"062","image":"https://i.ytimg.com/vi/XiZ2p0zLBd8/maxresdefault.jpg","videoId":"XiZ2p0zLBd8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:062-XiZ2p0zLBd8.md","_source":"content","_file":"3.videos/tim/062-XiZ2p0zLBd8.md","_extension":"md"},{"_path":"/videos/tim/063-v5aobiirud4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Magical combination to build a modern website","description":"Yes, I did it again. I rebuilt my website!\n\nMy website, https://timbenniks.dev, serves as my blog and a repository of my videos and speaking schedule. Though rich in content, the site is fast, accessible, and, most important, has a low carbon footprint. Under optimal conditions, the site scores 100 percent in Lighthouse.\n\nI recently rebuilt the site with several tools, the combination of which is ideal for modern web development. I’m excited about the result of the revamp. Let’s see how long that thrill lasts!\n\nI picked Nuxt version 2.14, which offers the excellent \"target: static\" option, outputting a static website on build. You probably guessed it already: my website adopts the Jamstack model. Jamstack websites are light and easy to distribute, with no reliance on dynamic content at all.\n\nEver tried hacking a static site? That’s hard to do. Also, if you need to scale it to meet demand, simply put it in more places on the content delivery network (CDN). After all, it's only a bunch of static files.\n\nHosting\nFor a smooth sail with Jamstack, I needed a hosting provider for the static assets on the CDN edge with simple capabilities for building and deploying my codebase. Netlify hosted my website before, but I wanted to try another provider for an insight into Netlify’s competition. Vercel, the provider I chose, was effortless to use. A nice surprise!\n\nCMS\nI picked Prismic, a great headless CMS whose features outshine those offered by huge enterprise systems. In particular, Prismic has resolved the rich-text issue many CMSs struggle with. I was also impressed by Prismic’s component-based design system, called slices, with which I can create pages in a component-driven way. I highly recommend checking out Prismic.\n\nSearching and filtering\nTo facilitate filtering of video content, I chose Algolia for indexing through its SaaS platform. The initial setup leveraged Algolia’s Vue.js components, which, despite a rather big footprint, do a lot of heavy lifting. Do have a look at Algolia in action on the site’s video page.\n\nOrchestrating the communication between best-of breed products like Algolia and Prismic is no trivial task. The challenge I faced was to ensure that Angolia updates the index when I add new videos to the Prismic. To make that happen, I created a Vercel lambda function, which is called with a webhook whenever I add a video. The function then queries the CMS for the new video data, after which the lambda updates the video index with the Algolia API. Voila, sheer magic!\n\nWebhooks are useful in decoupled architectures. I set up webhooks to also call Vercel when I publish content. On receiving a ping from a Prismic webhook, Vercel rebuilds the site and updates the CDN edge. Similarly, when I push updated code to GitHub, Vercel redeploys the site.\n\nWebhooks are the glue that helps automate the system. Thanks to Vercel’s high speed, I could deploy a hundred times a day without any part of the system breaking a sweat.\n\nImages\nCloudinary, another best-of-breed system I’ve been using for years, was an obvious choice. Even though Prismic offers an excellent feature set for managing images, Cloudinary struck me as being a better fit.\n\nThe process was straightforward. First, I sent the Prismic images to Cloudinary with the Nuxt Cloudinary module through the fetch system. From there, I transformed the images with the Cloudinary API slated for image URLs, e.g., by changing the file-type-based browser context and by resizing, scaling, and cropping the images accordingly.\n\nIt's open source: https://github.com/timbenniks/timbenniks2020-nuxt\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#jamstack #dxp #googleaudit","date":"2020-10-20T13:00:07Z","position":"063","image":"https://i.ytimg.com/vi/V5AobIiruD4/maxresdefault.jpg","videoId":"V5AobIiruD4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:063-V5AobIiruD4.md","_source":"content","_file":"3.videos/tim/063-V5AobIiruD4.md","_extension":"md"},{"_path":"/videos/tim/064-jtghl7ggoas","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Hi! 👋 I'm Tim and I'm a content creator!","description":"Buy me a coffee here: https://www.buymeacoffee.com/timbenniks\nWant to know more? Go here https://timbenniks.dev/sponsor-me/\n\nHi! I'm Tim and I'm a content creator from Paris. I’ve worked as a web developer and technical director for years and at one point in I decided I wanted to share the insights about my work with our community.\n\nWorking on high stakes projects for global brands is cool and all but you also have to give back a bit. I now focus on creating content about web development topics and soft skills for people of all levels.\n\nI truly enjoy doing community driven work and people seem to like what I have to say. I'm a lucky duck!\n\nI'm committed to delivering a new video every week! These videos don't just appear, they are A LOT of work. I want to always get you the best content and this takes a bunch of time. I also need the right gear to keep delivering high production quality.\n\nIf you decide to sponsor me I will love you forever! 😘 All donations will go right back into the content creation efforts. I'll use the money to buy audio/video/light gear. Or, I will try out paid services for the Tim Tries video series. Or, I will use the money to travel to conferences so that the organizers can spend money on the conference itself rather than on me. So many options!\n\nIf you read this far, you are awesome. 🙏 😘\n\nCheers,\nTim\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-10-12T13:45:05Z","position":"064","image":"https://i.ytimg.com/vi/JTGHl7ggOAs/maxresdefault.jpg","videoId":"JTGHl7ggOAs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:064-JTGHl7ggOAs.md","_source":"content","_file":"3.videos/tim/064-JTGHl7ggOAs.md","_extension":"md"},{"_path":"/videos/tim/065-96xypbh-hyo","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Chakra UI with Jonathan Bakebwa","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the Tim Tries Series. In this video I look at Chakra UI Vue with it's creator Jonathan Bakebwa!\n\nConclusion: solid framework, easy to use, not sure if it's for me...\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\n00:00 Introduction\n00:40 how to pronounce Jonathan Bakebwa\n01:08 Why build Chakra UI?\n02:23 Tim Tries Chakra UI\n09:24 Why not just use HTML?\n10:55 About Accessibility\n12:50 Conclusion\n\nFollow Jonathan here:\nWebsite: https://vue.chakra-ui.com/\nTwitter: https://twitter.com/codebender828\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries #chakraui #jonathanbakebwa","date":"2020-10-08T13:00:03Z","position":"065","image":"https://i.ytimg.com/vi/96xYPBH-Hyo/maxresdefault.jpg","videoId":"96xYPBH-Hyo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:065-96xYPBH-Hyo.md","_source":"content","_file":"3.videos/tim/065-96xYPBH-Hyo.md","_extension":"md"},{"_path":"/videos/tim/066-0vdfegtjdcg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: TailwindCSS with Alexander Lichter","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the #timtries Series. In this video I look at #tailwindcss. Alexander Lichter is an expert at tailwindcss and he tried to convince me it's awesome. Did he succeed?\n\nConclusion: check the video and see my excitement...\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nWhy tailwind and classes in the dom: https://adamwathan.me/css-utility-classes-and-separation-of-concerns/\n\nFollow Alexander here:\nWebsite: https://blog.lichter.io\nTwitter: https://twitter.com/TheAlexLichter\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-10-01T12:00:01Z","position":"066","image":"https://i.ytimg.com/vi/0VdfeGtjDcg/maxresdefault.jpg","videoId":"0VdfeGtjDcg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:066-0VdfeGtjDcg.md","_source":"content","_file":"3.videos/tim/066-0VdfeGtjDcg.md","_extension":"md"},{"_path":"/videos/tim/067-mcyeoin1s48","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim's Vlog: How to be a successful leader","description":"This is my second #vlog! It’s soft skill time again. I discuss the qualities successful leaders should posses to make a teams a success in a complex situation.\n\nDo take note: a leader is not always the manager. It could very well be that one of the more junior people take the leadership role. Managers you \"have\" to listen to. Leaders you \"want\" to listen to. \n\nBy a complex situation I mean a high pressure project with a big scope and not enough time, and on top the client is immature and is always upset. If you manage to get your team to be happy in these circumstances you will get a high quality result. \n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#leadership","date":"2020-09-22T12:00:13Z","position":"067","image":"https://i.ytimg.com/vi/McyeoiN1S48/maxresdefault.jpg","videoId":"McyeoiN1S48","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:067-McyeoiN1S48.md","_source":"content","_file":"3.videos/tim/067-McyeoiN1S48.md","_extension":"md"},{"_path":"/videos/tim/068-gojckw5ih7e","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global talk: Introducing Vite & Vitepress","description":"In this #vuejsglobal talk I'm introducing #Vite and #Vitepress. It's a basic introduction but I feel like this get's people in a place where they can actually try using these tools.\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-09-17T15:23:24Z","position":"068","image":"https://i.ytimg.com/vi/gojCkw5Ih7E/maxresdefault.jpg","videoId":"gojCkw5Ih7E","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:068-gojCkw5Ih7E.md","_source":"content","_file":"3.videos/tim/068-gojCkw5Ih7E.md","_extension":"md"},{"_path":"/videos/tim/069-ewlegish6dw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"A developers guide to low carbon websites","description":"This is my ImageCon 2020 talk.\n\nHow to make more sustainable choices in the production of web technology. This talk helps developers to make changes to their code so that their website has a lower carbon footprint.\n\nIf the internet was a country, it would be the world’s sixth biggest polluter. The internet consumes a lot of electricity. 466TWh per year to be precise. That’s more than the entire United Kingdom (300TWh)! \n\nCarbon emissions are generated all over the place, from data centers to our personal devices. The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that's 211 kg CO2 per year. These are staggering numbers and they will only go up as the internet is growing at a frightening rate. To make the internet more sustainable, web developers have three areas of attention.\n\n1. Design and content\n2. Front-end development best practices\n3. Server architecture choices","date":"2020-09-15T12:00:11Z","position":"069","image":"https://i.ytimg.com/vi/ewlEgIsh6Dw/maxresdefault.jpg","videoId":"ewlEgIsh6Dw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:069-ewlEgIsh6Dw.md","_source":"content","_file":"3.videos/tim/069-ewlEgIsh6Dw.md","_extension":"md"},{"_path":"/videos/tim/070-auzzgmyn0z4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim's vlog: Career advice for developers","description":"I'm on holiday and I now that I have a new camera I decided to do my first vlog! \nIt's story time with grandpa. In this vlog I'm reflecting on my own career as a developer and I give advice on how you can advance yours. There might be some nuggets of inspiration in there for you!\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timsvlog #career #vlog","date":"2020-09-09T11:56:23Z","position":"070","image":"https://i.ytimg.com/vi/AUzzgMyN0z4/maxresdefault.jpg","videoId":"AUzzgMyN0z4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:070-AUzzgMyN0z4.md","_source":"content","_file":"3.videos/tim/070-AUzzgMyN0z4.md","_extension":"md"},{"_path":"/videos/tim/071-zuht0g3zpyw","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the #timtries Series. In this video I look at Figma, Zeplin and Storybook. I recently learnt how nicely all these tools integrate so developers get a MUCH better DX. Zeplin acts as the hub and the creative source of truth for development, QA, business analysts, UX and creative people.\n\nConclusion: Mind is blown... Zeplin CLI is amazing.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-09-01T12:00:15Z","position":"071","image":"https://i.ytimg.com/vi/ZUHT0g3ZPYw/maxresdefault.jpg","videoId":"ZUHT0g3ZPYw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:071-ZUHT0g3ZPYw.md","_source":"content","_file":"3.videos/tim/071-ZUHT0g3ZPYw.md","_extension":"md"},{"_path":"/videos/tim/072-madbxcbsvqo","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global Conference: An interview with Anthony Gore","description":"In this video I'm interviewing Anthony Gore. We discuss talk about Vue 3 for Vue 2 developers. Furthermore we dive into how he started is famous newsletter and how he manages to monetize his efforts for the our Vue community.\n\nAnthony's newsletter has been my go-to for years so I'm super excited about the fact I got to interview him!\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Anthony here:\nhttps://twitter.com/anthonygore\nhttps://twitter.com/vuejsdevelopers\nhttps://vuejsdevelopers.com/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #timbenniks #vuejsglobal","date":"2020-08-26T12:00:57Z","position":"072","image":"https://i.ytimg.com/vi/madbxCbSvqo/maxresdefault.jpg","videoId":"madbxCbSvqo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:072-madbxCbSvqo.md","_source":"content","_file":"3.videos/tim/072-madbxCbSvqo.md","_extension":"md"},{"_path":"/videos/tim/073-uufbfcipaly","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global Conference: An interview with Eduardo San Martin Morote","description":"In this video I'm interviewing Eduardo San Martin Morote from the Vue core Team. Eduardo works on the Vue Router and in this interview we dive deep into what he did for the refactor of the new Vue 3 router. Next to this we discuss his ideas on monetizing open source work and what solutions fit best. As it turns out, he is building his own! \n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Eduardo here:\nhttps://twitter.com/posva\nhttps://github.com/posva\nhttps://esm.dev/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #vuejsglobal #vue3router","date":"2020-08-19T12:00:10Z","position":"073","image":"https://i.ytimg.com/vi/uuFBfCIpAlY/maxresdefault.jpg","videoId":"uuFBfCIpAlY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:073-uuFBfCIpAlY.md","_source":"content","_file":"3.videos/tim/073-uuFBfCIpAlY.md","_extension":"md"},{"_path":"/videos/tim/074-fyuvqruzevy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Webpack tutorial: Create a config from scratch","description":"All around me I see people rage-quit when trying to make their own #Webpack config. If you have never done it before it is pretty hard! I know, I've been there. In this video we will create a Webpack config together. In thirty minutes you will learn the Webpack basics, how to load assets, how to have a nice developer experience and how to split your bundle for optimized performance.\n\nTime stamps:\n00:00 I received a gift!\n00:56 Introduction\n01:53 Webpack basics\n04:55 Chapter 1: Entry and output\n08:14 Chapter 2: Loaders for Styles, Images and Babel\n16:03 Chapter 3: Output management and dynamic HTML rendering\n23:28 Chapter 4: DX for local development\n27:32 Chapter 5: Chunking bundles\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#guide #tutorial","date":"2020-08-17T12:00:11Z","position":"074","image":"https://i.ytimg.com/vi/fyuvqRUzeVY/maxresdefault.jpg","videoId":"fyuvqRUzeVY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:074-fyuvqRUzeVY.md","_source":"content","_file":"3.videos/tim/074-fyuvqRUzeVY.md","_extension":"md"},{"_path":"/videos/tim/075-tlbstgzcyyy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global conference: An interview with Gift Egwuenu","description":"In this video I'm interviewing Gift Egwuenu. Gift works at Passionate People as a web developer, she is a Media Developer Expert at Cloudinary, she has a YouTube channel and she is a Technical Writer. Wow! We discuss her talk about JAMstack and Gridsome and after that we dive into how she experiences working from Lagos, Nigeria while most of her colleagues are in Europe or the US.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Gift here:\nhttps://twitter.com/lauragift_\nhttps://www.giftegwuenu.com\nhttps://github.com/lauragift21\nhttps://www.youtube.com/channel/UCgUgg53iJX1pdabUxpkgozA\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-08-11T12:00:12Z","position":"075","image":"https://i.ytimg.com/vi/tLbStGzcYYY/maxresdefault.jpg","videoId":"tLbStGzcYYY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:075-tLbStGzcYYY.md","_source":"content","_file":"3.videos/tim/075-tLbStGzcYYY.md","_extension":"md"},{"_path":"/videos/tim/076-brmxytpulm4","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global conference: An interview with Filip Rakowski","description":"In this video I'm interviewing Filip Rakowski, CTO at Vue Storefront. We discuss his talk about Vue Storefront Next and we go in-depth on why they needed a Next version. After that we discuss how to monetize open source work and what it means for Vue Storefront to be a part of the MACH alliance.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Filip here:\nhttps://twitter.com/filrakowski\nhttps://rakowski.dev/\nhttps://www.vuestorefront.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #vuejsglobal #vuestorefront","date":"2020-08-04T12:00:06Z","position":"076","image":"https://i.ytimg.com/vi/BrmXYtPUlM4/maxresdefault.jpg","videoId":"BrmXYtPUlM4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:076-BrmXYtPUlM4.md","_source":"content","_file":"3.videos/tim/076-BrmXYtPUlM4.md","_extension":"md"},{"_path":"/videos/tim/077-ibkgryfpuds","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global conference: An interview with Debbie O'Brien","description":"In this video I'm interviewing Debbie O'Brien. Debbie is head of learning and developer advocate at #Nuxtjs. We discuss her talk about Nuxt/content and how they are working on a bunch of new features to make nuxt even more flexible. After that we discuss how she experienced landing the job and how she learnt a lot from previous job hunting.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nIn the intro I mention that the Vue.js Global conferenc eis in August. It has been moved to September 17th.\n\nFollow Debbie here:\nhttps://twitter.com/debs_obrien\nhttps://debbie.codes/\nhttps://www.nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-07-27T12:01:33Z","position":"077","image":"https://i.ytimg.com/vi/IBKgryFpUDs/maxresdefault.jpg","videoId":"IBKgryFpUDs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:077-IBKgryFpUDs.md","_source":"content","_file":"3.videos/tim/077-IBKgryFpUDs.md","_extension":"md"},{"_path":"/videos/tim/078-2mfsb5ulhks","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Global conference: An interview with Maria Lamardo","description":"In this video I'm interviewing Maria Lamardo. Maria is a web developer with a specialty in #accessibility and #Vuejs. We talk a little about her Vue.js Global conference talk which basically covers me asking her annoying questions about forms and accessibility. After covering the conference talk we dive into her unconventional path into tech and how she became so good at her job. I'm very impressed by Maria and our conversation goes quite deep. If you are someone who wants to potentially switch careers, watch this interview.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Maria here:\nhttps://twitter.com/MariaLamardo\nhttps://twitter.com/world_vue\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview","date":"2020-07-22T12:00:50Z","position":"078","image":"https://i.ytimg.com/vi/2MFsb5ulhks/maxresdefault.jpg","videoId":"2MFsb5ulhks","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:078-2MFsb5ulhks.md","_source":"content","_file":"3.videos/tim/078-2MFsb5ulhks.md","_extension":"md"},{"_path":"/videos/tim/079-d0jk7hyu1ai","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Azure functions revisited for v3. Conclusion: AWESOME","description":"After a not-so-great experience with Azure Functions previously I decided to revisit them for version 3.0. Conclusion: AWESOME. I explore how to set-up, create and upload functions all from vscode. Microsoft nailed the developer experience here I and I'll definitely be combining Azure Functions and Azure Static Web Apps in the future.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#azurefunctions #javascript #vscode","date":"2020-07-06T10:04:18Z","position":"079","image":"https://i.ytimg.com/vi/d0jk7hYU1AI/maxresdefault.jpg","videoId":"d0jk7hYU1AI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:079-d0jk7hYU1AI.md","_source":"content","_file":"3.videos/tim/079-d0jk7hYU1AI.md","_extension":"md"},{"_path":"/videos/tim/080-v50mhzzffaa","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tutorial: How to build a Gridsome Source Plugin","description":"#Gridsome uses Source Plugins to get data from third party CMS' or API's into your #JAMstack website. Recently I felt I needed a custom source plugin and in this video I explain how you can do that as well.\n\nCode is open source: \nhttps://github.com/timbenniks/gridsome-source-example\n\nAlso check out: \nhttps://gridsome.org/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejs","date":"2020-06-30T14:00:16Z","position":"080","image":"https://i.ytimg.com/vi/V50mHzzFFaA/maxresdefault.jpg","videoId":"V50mHzzFFaA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:080-V50mHzzFFaA.md","_source":"content","_file":"3.videos/tim/080-V50mHzzFFaA.md","_extension":"md"},{"_path":"/videos/tim/081-pu8f59x14-y","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"My audio setup 2020","description":"Based on high demand I'm hereby sharing my audio setup for 2020. I create YouTube videos, I make music and I do a ton of public speaking and conference calls. Audio is arguably more important than video so I did my research and put together an awesome setup for a fair price.\n\nIn this video I will go over audio basics, what you need at a minimum and what I chose as my tools for success. If this setup is not budget friendly enough make sure to watch until the end, I give cheaper alternatives that served me very well over the last year.\n\nTimestamps:\n00:00 Introduction\n01:18 My background in audio gear\n03:21 Audio Interface\n06:36 Microphone\n10:36 Audio caparison with and without gear\n11:08 Studio Monitors\n12:39 Headphones\n13:18 Monitor volume control\n15:03 Cheaper alternatives\n16:01 Alternative USB microphone\n17:13 Ultra cheap but awesome lav mic.\n18:10 Concluding\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-06-23T10:14:41Z","position":"081","image":"https://i.ytimg.com/vi/Pu8F59X14-Y/maxresdefault.jpg","videoId":"Pu8F59X14-Y","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:081-Pu8F59X14-Y.md","_source":"content","_file":"3.videos/tim/081-Pu8F59X14-Y.md","_extension":"md"},{"_path":"/videos/tim/082-a54ifas8rts","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Azure Static Web Apps","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. In this video I look at #Azure Static Web Apps. Azure clearly noticed the trends in the JAMstack world and likely also figured out that just static file hosting is not enough. They offer way more features than Netlify for example. But is it good enough? Let's see...\n\nConclusion: this thing just works! I'm impressed.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nDocs: https://azure.microsoft.com/en-us/services/app-service/static/\nA great tutorial by Gift Egwuenu (I didn't use it): https://www.giftegwuenu.com/deploy-a-gridsome-app-on-azure-static-web-apps/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries #jamstack","date":"2020-06-15T10:48:34Z","position":"082","image":"https://i.ytimg.com/vi/A54iFAS8rts/maxresdefault.jpg","videoId":"A54iFAS8rts","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:082-A54iFAS8rts.md","_source":"content","_file":"3.videos/tim/082-A54iFAS8rts.md","_extension":"md"},{"_path":"/videos/tim/083-ggaoxqtc7ke","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tutorial: Vue 3 composition API and Vite to recreate TikTok","description":"In this video you will learn how to use the new Vue 3 composition API to create a simple version of TikTok. We are also using Vite, the new dev build tool build by Evan You!\n\nI thought it would be hard to learn, but it really wasn't. Please, jump in and try this yourself!\n\nThe code is open-source. Find it here: https://github.com/timbenniks/vue3-vite-tiktok-tutorial\n\nLinks: \nhttps://www.vuemastery.com/vue-3-cheat-sheet/\nhttps://github.com/vitejs/vite\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vue3 #compositionapi #vite","date":"2020-06-10T08:17:18Z","position":"083","image":"https://i.ytimg.com/vi/gGaoxqTc7kE/maxresdefault.jpg","videoId":"gGaoxqTc7kE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:083-gGaoxqTc7kE.md","_source":"content","_file":"3.videos/tim/083-gGaoxqTc7kE.md","_extension":"md"},{"_path":"/videos/tim/084-bpjjxxqycdi","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Tim Tries: Slice Machine by Nuxt and Prismic","description":"I sometimes just try out new tech or web services for the first time and give my feedback as I go. In this video I look at Slice Machine, a #Vuejs component library connected to the #Prismic headless CMS. This service is a collaboration between the Prismic and #Nuxtjs. \n\nConclusion: Solid base. Needs some fine tuning.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nhttps://www.slicemachine.dev/\nhttps://vue-essential-slices.netlify.app/\nhttps://prismic.io/\nhttps://nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries","date":"2020-06-02T13:23:14Z","position":"084","image":"https://i.ytimg.com/vi/bPJJxxqycDI/maxresdefault.jpg","videoId":"bPJJxxqycDI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:084-bPJJxxqycDI.md","_source":"content","_file":"3.videos/tim/084-bPJJxxqycDI.md","_extension":"md"},{"_path":"/videos/tim/085-zpq_gqmit5y","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Interview with Scott Tolinski from Level up Tutorials","description":"I got to interview Scott Tolinski! Wow! Scott is first and foremost a web developer. With years of experience on his belt he decided to start creating tutorials on YouTube. This now grew into one of the best places to go for learning about the web. He also started leveluptutorials.com where you can get premium lessons.\n\nNext to all this he is the co-host of the Syntax podcast. Scott and his buddy Wes Bos go in-depth on code stuff and teach each-other new things.\n\nThe interview is wide ranging and we go over how to create for YouTube and to how to manage social media. We also discuss how Scott learnt to fail and get success after by being a Bboy with the Robotops Crew.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Scott Tolinski here:\nWebsite: https://www.leveluptutorials.com/\nTwitter: https://twitter.com/stolinski\nYouTube: https://www.youtube.com/c/leveluptuts\nPodcast: https://syntax.fm/\n\nFollow Tim Benniks here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-05-26T10:30:20Z","position":"085","image":"https://i.ytimg.com/vi/zPQ_gQMiT5Y/maxresdefault.jpg","videoId":"zPQ_gQMiT5Y","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:085-zPQ_gQMiT5Y.md","_source":"content","_file":"3.videos/tim/085-zPQ_gQMiT5Y.md","_extension":"md"},{"_path":"/videos/tim/086-5jaypm6gx1o","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Lazy Loading Images with Prismic and Vue.js","description":"In this video I explain how I managed to add lazy loading images in Vue.js while getting image data from the headless CMS Prismic. \n\nIn this case it’s not just a matter of creating a Vue component as I also get images rendered in HTML from the Prismic Rich text field. \n\nThis is a lazy loading solution for images that works both in vanilla JS and Vue. \n\nSee it in action here: http://timbenniks.nl\nFind the code here: https://github.com/timbenniks/timbenniks2020\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejs #prismic #lazyloading","date":"2020-05-22T13:48:42Z","position":"086","image":"https://i.ytimg.com/vi/5jAYPM6gX1o/maxresdefault.jpg","videoId":"5jAYPM6gX1o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:086-5jAYPM6gX1o.md","_source":"content","_file":"3.videos/tim/086-5jAYPM6gX1o.md","_extension":"md"},{"_path":"/videos/tim/087-cf5_pit-ai","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Interview with Jen Looper from Microsoft","description":"I had the privilege to interview Jen Looper. Jen is a cloud advocate lead at Microsoft, she is the founder of Front-end Foxes (previously Vue Vixens) and she is a seasoned speaker and developress.\n\nWe had a lovely wide-ranging conversation where we learn about how she came up during the first Internet bubble, managing work and life with kids and starting Front-end Foxes.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Jen here:\nWebsite: https://jenlooper.com\nTwitter: https://twitter.com/jenlooper\nFront-end Foxes: https://www.vuevixens.org\n\nFollow me here:\nWebsite: https://timbenniks.nl\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-05-13T12:44:46Z","position":"087","image":"https://i.ytimg.com/vi/cf5_pit--aI/maxresdefault.jpg","videoId":"cf5_pit--aI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:087-cf5_pit--aI.md","_source":"content","_file":"3.videos/tim/087-cf5_pit--aI.md","_extension":"md"},{"_path":"/videos/tim/088-tqr2eo7tivc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","description":"Ever wanted to know how you can use #Prismic and #Gridsome to make an awesome, super fast, #JAMstack website? This is your chance! In this 30 minute video I give you an overview of both Prismic and Gridsome and we dive into the code to see how it all connects.\n\nI could spend hours on going through the specifics on how to build a proper website. I might do that in a different video series, stay tuned! For now enjoy this more general overview of the tools and it should be enough to get you going!\n\nRead more about this project on the blog: https://timbenniks.nl/writings/a-new-website/\nThe project is open source: https://github.com/timbenniks/timbenniks2020/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-05-07T10:36:44Z","position":"088","image":"https://i.ytimg.com/vi/tqR2EO7Tivc/maxresdefault.jpg","videoId":"tqR2EO7Tivc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:088-tqR2EO7Tivc.md","_source":"content","_file":"3.videos/tim/088-tqR2EO7Tivc.md","_extension":"md"},{"_path":"/videos/tim/089-aw4nl6hgjb0","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Debbie O'brien from Nuxtjs","description":"In this video I'm interviewing Debbie O'brien from Nuxtjs! We have a lovely and LONG conversation, as friends do. We talk about her new job as Head of Learning at Nuxtjs, her ways of working and cultural differences. We flow from tender, insightful moments to jokes. This is a good one.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Debbie here:\nhttps://debbie.codes\nhttps://twitter.com/debs_obrien\nhttps://nuxtjs.org\nhttps://dev.to/debs_obrien\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-04-29T11:04:04Z","position":"089","image":"https://i.ytimg.com/vi/aw4nl6hGjb0/maxresdefault.jpg","videoId":"aw4nl6hGjb0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:089-aw4nl6hGjb0.md","_source":"content","_file":"3.videos/tim/089-aw4nl6hGjb0.md","_extension":"md"},{"_path":"/videos/tim/090-gxwrzna4udq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Quarantine licks #2 - Folksy Tunes","description":"During #COVID19 pandemic I decided to do more with music. In this series called \"Quarantine Licks\" I will show you fun and juicy guitar licks every week.\n\nFor now I kept them acoustic but expect electric guitar also. Rock 'n roll will commence :)\n\nI'm open for collaborations. Comment on this video if you're keen.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\n\n#guitarlicks #quarantinelicks","date":"2020-04-23T10:34:07Z","position":"090","image":"https://i.ytimg.com/vi/gXwRzna4udQ/maxresdefault.jpg","videoId":"gXwRzna4udQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:090-gXwRzna4udQ.md","_source":"content","_file":"3.videos/tim/090-gXwRzna4udQ.md","_extension":"md"},{"_path":"/videos/tim/091-xit7qtmcmik","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"COVID-19 Work from home: how to make your webcam look good","description":"In this Video I will show you a couple of simple do's and don'ts to make your webcam look more professional. You don't need any technical knowledge at all to do the things I'm about to tell you.\n\nPerception of how professional you look is super important. During the COVID-19 pandemic everybody has to work from home. This generally involves using webcams to do meetings. \n\nMaybe you lost your job during the COVID-19 crisis and you need to do interviews via Skype, Zoom or Teams. Looking professional gets your foot in the door in a meeting with your boss or a job interview.\n\nTime stamps\n1:14 The most important thing for your webcam\n2:47 About settings\n4:27 Fun stuff\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-04-20T08:08:37Z","position":"091","image":"https://i.ytimg.com/vi/xiT7qtMCmIk/maxresdefault.jpg","videoId":"xiT7qtMCmIk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:091-xiT7qtMCmIk.md","_source":"content","_file":"3.videos/tim/091-xiT7qtMCmIk.md","_extension":"md"},{"_path":"/videos/tim/092-bebr8ev2no8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Weight loss with Serveless architecture and the JAMstack","description":"What do Serverless and JAMstack have to do with weight loss? Well, in my case, a lot!\n\nTo be able to loose weight I need a good incentive. And for me that incentive is public accountability. I have created a #Vue.js PWA app called \"Fatty\" that is built on a serverless architecture and the JAMstack. The app shows how much weight I have lost and it tweets an update into the world every time I step on my WiFi enabled scale. In this video I explain how it all connects!\n\nNext to talking about the tech that powers the Fatty app I also tell about my fitness story. If I can loose all that weight than you can as well.\n\nRead about Fatty here: https://timbenniks.nl/writings/fatty-is-alive/\nSee Fatty in action: https://fatty.timbenniks.com\nMore on my fitness story: https://timbenniks.nl/writings/my-fitness-story/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#jamstack #serverless","date":"2020-04-15T10:14:21Z","position":"092","image":"https://i.ytimg.com/vi/beBR8ev2nO8/maxresdefault.jpg","videoId":"beBR8ev2nO8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:092-beBR8ev2nO8.md","_source":"content","_file":"3.videos/tim/092-beBR8ev2nO8.md","_extension":"md"},{"_path":"/videos/tim/093-wlqlclwjorc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Quarantine Licks #1 - Acoustic Blues","description":"Now that I have entered my fifth week of staying home during the #COVID19 pandemic I decided to do more with music. In this series called \"Quarantine Licks\" I will show you fun guitar licks every week. \n\nI might do some collaborations with other musicians too!\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#guitarlicks","date":"2020-04-14T10:50:39Z","position":"093","image":"https://i.ytimg.com/vi/WLQLCLWJorc/maxresdefault.jpg","videoId":"WLQLCLWJorc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:093-WLQLCLWJorc.md","_source":"content","_file":"3.videos/tim/093-WLQLCLWJorc.md","_extension":"md"},{"_path":"/videos/tim/094-zzrqozpc068","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Tim Benniks from Valtech","description":"In this video I'm the interviewee for a change! We speak about the #vuejsamsterdam conference I just spoke at, about how I interact with the Vue.js community, how I personally interact with clients and teams, about the future of automation in the tech space and how I see innovation in enterprise software. Lot's of good stuff!\n\n1:20 About the conference.\n1:50 About the talk: Team First.\n4:00 FATTY. Public Accountability.\n10:19 Innovation on enterprise level.\n17:30 About failing and behavior.\n21:10 What do you drink while coding?\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam","date":"2020-04-08T12:19:43Z","position":"094","image":"https://i.ytimg.com/vi/ZZRQOzpC068/maxresdefault.jpg","videoId":"ZZRQOzpC068","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:094-ZZRQOzpC068.md","_source":"content","_file":"3.videos/tim/094-ZZRQOzpC068.md","_extension":"md"},{"_path":"/videos/tim/095-f5f7n2kc7hq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"HTTP/2 performance: you still need a bundler!","description":"Every project I deal with outdated beliefs about performance and people not really knowing about the power of HTTP/2. This video is a crash course into some of the most valuable features HTTP/2 has to offer: header compression and multiplexing. I do a real time demo in which you can see that multiplexing works but actually has caveats! \n\nIf you want to know about bundle sizes and how many connections can be \"in flight\" at the same time, this video is for you!\n\n#HTTP2 #performance #webpack\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-04-02T11:07:53Z","position":"095","image":"https://i.ytimg.com/vi/f5F7N2kc7hQ/maxresdefault.jpg","videoId":"f5F7N2kc7hQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:095-f5F7N2kc7hQ.md","_source":"content","_file":"3.videos/tim/095-f5F7N2kc7hQ.md","_extension":"md"},{"_path":"/videos/tim/096-nw0y6dkx1ku","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","description":"In this video I'm interviewing Una Verhoeven. Una and I work together at Valtech. When she joined the global team as a Sitecore Architect we teamed up to help out on a challenging project. We became fast friends and when I learnt about her story I decided an interview had to take place. Some people just impress. Una is one of those.\n\nWe talk about switching cultures from Serbia to the Netherlands, starting your own company and fashion.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Una here:\nTwitter: https://twitter.com/unaverhoeven\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#sitecore #interview #valtech","date":"2020-03-25T12:20:43Z","position":"096","image":"https://i.ytimg.com/vi/nw0y6dkx1KU/maxresdefault.jpg","videoId":"nw0y6dkx1KU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:096-nw0y6dkx1KU.md","_source":"content","_file":"3.videos/tim/096-nw0y6dkx1KU.md","_extension":"md"},{"_path":"/videos/tim/097-vqjp5qfiolg","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Filip Rakowski from Vue Storefront","description":"Filip is the co-founder and tech lead of Vue Storefront. Vue Storefront is a revolutionary Headless PWA for e-commerce that works with any back-end. In this interview we discuss why he thinks Vue Storefront needs to exist and what he thinks about the future of e-commerce. \n\nFilip is also a very active speaker and OSS contributor. He shares his tips and tricks to write better CFP's and more!\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFind Filip here:\nhttps://twitter.com/filrakowski\nhttps://twitter.com/VueStorefront\nhttps://www.vuestorefront.io/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam\n\n#interview #vuestorefront #vuejs","date":"2020-03-20T15:33:05Z","position":"097","image":"https://i.ytimg.com/vi/vqjP5qFiOLg/maxresdefault.jpg","videoId":"vqjP5qFiOLg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:097-vqjP5qFiOLg.md","_source":"content","_file":"3.videos/tim/097-vqjP5qFiOLg.md","_extension":"md"},{"_path":"/videos/tim/098-ltm7wz0q564","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"[Livestream] Team First - How to lead a team to success in a high pressure environment","description":"Producing high quality work is dependent on a well-organized team, especially in a high-pressure environment like an ad agency or a production studio. At a certain scale almost every team struggles with cultural differences, perceived pressure from management or misaligned definitions of success.\n\nThese examples are only a handful of the problems teams face, which results in developers that are unhappy and stressed out. Processes outside of their control keep them from doing the thing they love: write great code.\n\nOver the years I have learned that you are more successful if you understand what motivates people. We know happy teams produce better work. Motivated and responsible people are the core of our success. Therefore, I have created a framework (yes, I'm a developer) to deal with projects in complex environments that I call \"Team First\".\n\nThis video is about how the \"Team First\" framework came to be and how it works. It contains best practices and rules to follow in order to make yourself and your team successful. I share anecdotes from years of experience that most developers can identify with.\n\nBefore writing a single line of code you have to deal with all challenges that prohibit you from producing a quality product. The \"Team First\" framework helps leaders, teams and developers get there.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#teamfirst #career #management #motivation","date":"2020-03-12T15:31:27Z","position":"098","image":"https://i.ytimg.com/vi/LTM7wz0Q564/maxresdefault.jpg","videoId":"LTM7wz0Q564","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:098-LTM7wz0Q564.md","_source":"content","_file":"3.videos/tim/098-LTM7wz0Q564.md","_extension":"md"},{"_path":"/videos/tim/099-u5s4dqqlt1o","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","description":"Natalia is a Ukrainian software engineer. She works at Gitlab and she is part of the Vue.js core team. Those are the two positions a lot of people desire. We dive deep into how she experienced the amazing gitlab hiring process and how she managed to get through it.\n\nNatalia is humble and kind and she explains how she sees life and what gives some great insights on how to succeed. \n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFind Natalia here:\nhttps://www.nataliatepluhina.com/\nhttps://twitter.com/N_Tepluhina\nhttps://gitlab.com/ntepluhina\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam\n\n#interview #gitlab #vuejs","date":"2020-03-06T12:53:55Z","position":"099","image":"https://i.ytimg.com/vi/U5S4DqQlt1o/maxresdefault.jpg","videoId":"U5S4DqQlt1o","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:099-U5S4DqQlt1o.md","_source":"content","_file":"3.videos/tim/099-U5S4DqQlt1o.md","_extension":"md"},{"_path":"/videos/tim/100-boby5h-r1hc","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Vue.js Amsterdam recap and exciting announcements!","description":"In this video I recap my experience with the Vue.js Amsterdam conference and I make an exciting announcement for future collaborations on this channel. Watch until the end to find out!\n\nA recap of the talks: https://medium.com/jeff-tech/my-top-5-talks-from-vue-js-amsterdam-2020-d56b1b62f1a1\n\nMy slides: https://slides.com/timbenniks/team-first-3\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejsamsterdam #conference #announcements","date":"2020-02-26T12:47:15Z","position":"100","image":"https://i.ytimg.com/vi/bOBY5h-r1hc/maxresdefault.jpg","videoId":"bOBY5h-r1hc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:100-bOBY5h-r1hc.md","_source":"content","_file":"3.videos/tim/100-bOBY5h-r1hc.md","_extension":"md"},{"_path":"/videos/tim/101-pwqvqnnopiy","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Anastasiya Flynn from Sitecore JSS","description":"In this video I’m interviewing Anastasiya Flynn from Sitecore. Anastasiya is a full-stack developer and currently works at Sitecore, a marketing platform with advanced content personalization features, as the Front-End Technical Evangelist. She evangelizes JavaScript, the front-end community, and Sitecore’s JavaScript Services (JSS) SDK, which enables Sitecore to run “headlessly” so that front-end devs can build a single page app presentation layer using Vue, React, React Native, or Angular.\n\nAnastasiya and I discuss how she landed her job at Sitecore, and we dig deeper into some personal history. She shares her inspirational story on how she got to be where she is now in life. Pay attention, this will inspire you :)\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\n0:00 introduction \n1:25 About public speaking\r\n2:45 Moving from an agency to a product company\r\n5:22 The direction Sitecore JSS is taking with front-end technology\r\n6:41 What makes Anastasiya a good product avengalist\r\n8:10 How to be successful with JSS without Sitecore specific knowledge.\r\n11:30 About building community and how challenges in life can make you successful. \r\n16:54 Tech gives opportunities to everyone who is able to buy a computer.\r\n19:03 About creativity\r\n21:00 cats! Everybody should own a pet.\r\n21:41 Is there anything you are good at that nobody knows about?\r\n22:20 About being a woman in tech\r\n26:20 If you had a billboard that millions of people could see, what would you write on it?\n\nFollow Anastasiya here:\nhttps://twitter.com/AnastasiyaFlynn\nhttps://codealamode.blog/\nhttps://jss.sitecore.com \n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#sitecorejss #interview","date":"2020-02-21T08:29:31Z","position":"101","image":"https://i.ytimg.com/vi/pwqVQnnoPIY/maxresdefault.jpg","videoId":"pwqVQnnoPIY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:101-pwqVQnnoPIY.md","_source":"content","_file":"3.videos/tim/101-pwqVQnnoPIY.md","_extension":"md"},{"_path":"/videos/tim/102-lkiomruiaae","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Eduardo from the Vue.js core team","description":"In this video I'm interviewing Eduardo San Martin Morote from the Vue.js core team. What a privilege to speak to someone who actually built the tools I use on a daily basis! Eduardo humbly explains how he sees life and how he acts as a contributor to open source projects.\n\nWhat a guy. I'm in awe how Eduardo carries himself and what this youngster has already accomplished.\n\nIn this video series I interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nFollow Eduardo here:\nhttps://twitter.com/posva\nhttps://github.com/sponsors/posva\nhttps://esm.dev/\nhttps://twitter.com/posva/status/1146415898967908352\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-02-13T09:42:00Z","position":"102","image":"https://i.ytimg.com/vi/LKioMRuiAaE/maxresdefault.jpg","videoId":"LKioMRuiAaE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:102-LKioMRuiAaE.md","_source":"content","_file":"3.videos/tim/102-LKioMRuiAaE.md","_extension":"md"},{"_path":"/videos/tim/103-azqrjdqa_d8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Webpack basics and core concepts","description":"Ever wanted to know how Webpack works? This video explains its core concepts. I decided to do this because many people think Webpack is like a unicorn that uses rainbows and magic to do its job. But actually, Webpack is not that hard to understand once you have an overview of its feature set.\n\nAfter watching this video you will be ready to roll your own custom configuration! This insight should help you make decisions on how to bundle and optimize your application for production. \n\nPrevious video: https://youtu.be/WExoF1TFI04\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-02-06T10:33:36Z","position":"103","image":"https://i.ytimg.com/vi/AZqRjdqa_D8/maxresdefault.jpg","videoId":"AZqRjdqa_D8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:103-AZqRjdqa_D8.md","_source":"content","_file":"3.videos/tim/103-AZqRjdqa_D8.md","_extension":"md"},{"_path":"/videos/tim/104-wexof1tfi04","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"5 tips to become a better web developer.","description":"In this video I give you 5 tips you can apply to your daily work to a become a better developer. The tips are relatively easy to understand but take some effort to master. However, they can truly change your career! They sure changed mine for the better.\n\nFunny thing is: these tips have little to do with programming itself. Next to producing code, advancing your career is mostly done by having the right attitude, soft skills and taking responsibility for your work.\n\nI do a conference talk about this subject called Team First. Read more about that here: https://timbenniks.nl/writings/team-first/\n\n00:00 Introduction\n01:10 Helicopter view.\n05:15 Motivation.\n09:15 take decisions on intuition. Ask for forgiveness later.\n10:28 Champion subjects you like.\n12:17 Be pragmatic.\n\nPrevious video: https://youtu.be/H7qmArrblw8\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-29T09:55:10Z","position":"104","image":"https://i.ytimg.com/vi/WExoF1TFI04/maxresdefault.jpg","videoId":"WExoF1TFI04","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:104-WExoF1TFI04.md","_source":"content","_file":"3.videos/tim/104-WExoF1TFI04.md","_extension":"md"},{"_path":"/videos/tim/105-h7qmarrblw8","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An interview with Maya Shavin: When you have the force, nothing is impossible!","description":"In this video series I interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nBeware, this is my first interview. Please leave your feedback in the comments :)\n\nIn this installment I'm speaking to Maya Shavin. Maya is a senior web developer in the R&D team at Cloudinary. Next to being a great developer she is also a speaker, a writer and she organizes events. We dive deep (yep, 47 minutes) into how she has such an amazing output and how she deals with the challenges of culture clash, family life and being a woman in a male dominated arena.\n\nMaya truly has the force! Watch until the end where she explains her mantra to success.\n\nFollow Maya here:\nhttps://www.mayashavin.com/\nhttps://twitter.com/MayaShavin\nhttps://www.cloudinary.com\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-24T10:03:49Z","position":"105","image":"https://i.ytimg.com/vi/H7qmArrblw8/maxresdefault.jpg","videoId":"H7qmArrblw8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:105-H7qmArrblw8.md","_source":"content","_file":"3.videos/tim/105-H7qmArrblw8.md","_extension":"md"},{"_path":"/videos/tim/106-liek4kwnsbq","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"Code faster and make less mistakes","description":"Learn how to use Visual Studio Code and Hyper.js with ZSH to streamline your JavaScript developer environment for coding fast and with less errors. The setup is simple and considered and it works both both MAC and PC (With WSL Ubuntu).\n\nHow to install Ubuntu WSL: https://docs.microsoft.com/en-us/windows/wsl/install-win10\n\n0:00 Introduction\n1:00 The tools I use\n1:43 IDE\n2:47 IDE Extensions\n7:17 IDE Theme\n8:58 Terminal\n13:27 Conclusion\n\nTools used in this video:\nVisual Studio Code: https://code.visualstudio.com/\nHyper.js: https://hyper.is/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-13T11:59:22Z","position":"106","image":"https://i.ytimg.com/vi/LIek4kwnSbQ/maxresdefault.jpg","videoId":"LIek4kwnSbQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:106-LIek4kwnSbQ.md","_source":"content","_file":"3.videos/tim/106-LIek4kwnSbQ.md","_extension":"md"},{"_path":"/videos/tim/107-shtbmwkzwpi","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"An Introduction to my YouTube Channel","description":"Hi I'm Tim and welcome to my channel. This channel has content about web development. I do guides and in-depth pieces about development topics but I also interview prominent members of our community. \n\nI interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nIf you like this sort of stuff, subscribe! I'll see you in the comments.\n\nA little bit about me:\nTim is a web developer from Amsterdam who moved to Paris to explore the magical world of luxury clients and baguettes. He likes to build fancy websites, make music and cook food.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-03T15:33:38Z","position":"107","image":"https://i.ytimg.com/vi/SHtBMWkZWPI/maxresdefault.jpg","videoId":"SHtBMWkZWPI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:107-SHtBMWkZWPI.md","_source":"content","_file":"3.videos/tim/107-SHtBMWkZWPI.md","_extension":"md"},{"_path":"/videos/tim/108-vcf1xfoegwm","_dir":"tim","_draft":false,"_partial":false,"_locale":"","title":"How to make your webcam look great!","description":"In this video I go over all the things you need to know to make your webcam look better. Why webcams kind of suck, how to set-up lighting and what post-processing to add.\n\nMore details can be found here: https://timbenniks.nl/writings/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/\n\n0:20 Why webcams kind of suck\n3:03 About lighting\n5:50 Post processing\n9:40 Bonus!\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","date":"2020-01-01T00:57:56Z","position":"108","image":"https://i.ytimg.com/vi/vcf1xFOeGwM/maxresdefault.jpg","videoId":"vcf1xFOeGwM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:tim:108-vcf1xFOeGwM.md","_source":"content","_file":"3.videos/tim/108-vcf1xFOeGwM.md","_extension":"md"},{"_path":"/videos/uniform/000-sf8tcv5t9pa","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform DXCP: composability with Headless 2.0","description":"This is Uniform DXCP: composability with Headless 2.0","date":"2023-07-20T07:53:52Z","position":"000","image":"https://i.ytimg.com/vi/sF8TCV5t9PA/maxresdefault.jpg","videoId":"sF8TCV5t9PA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:000-sF8TCV5t9PA.md","_source":"content","_file":"3.videos/uniform/000-sF8TCV5t9PA.md","_extension":"md"},{"_path":"/videos/uniform/001-vkjwiqlm6_w","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: Dynamic Pages","description":"Learn more at https://uniform.dev","date":"2023-07-20T07:53:58Z","position":"001","image":"https://i.ytimg.com/vi/VkJWIqlM6_w/maxresdefault.jpg","videoId":"VkJWIqlM6_w","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:001-VkJWIqlM6_w.md","_source":"content","_file":"3.videos/uniform/001-VkJWIqlM6_w.md","_extension":"md"},{"_path":"/videos/uniform/002-ndrabg4x6ya","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: Redirect management","description":"Learn more at https://uniform.dev","date":"2023-07-20T07:54:06Z","position":"002","image":"https://i.ytimg.com/vi/nDrAbg4x6yA/maxresdefault.jpg","videoId":"nDrAbg4x6yA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:002-nDrAbg4x6yA.md","_source":"content","_file":"3.videos/uniform/002-nDrAbg4x6yA.md","_extension":"md"},{"_path":"/videos/uniform/003-hcjlhnrjzpo","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Dynamic Pages and Redirects","description":"Join us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif... \nInstagram: https://www.instagram.com/uniform.dev/","date":"2023-07-20T07:54:15Z","position":"003","image":"undefined","videoId":"hcjLHnrjzpo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:003-hcjLHnrjzpo.md","_source":"content","_file":"3.videos/uniform/003-hcjLHnrjzpo.md","_extension":"md"},{"_path":"/videos/uniform/004-qh_ekk7cfzw","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","description":"Uniform introduces new features to make content management faster and more efficient for teams. The Component Starter Kit offers open-source, customizable components for building key pages, while improved data connections via Mesh allow for easier setup and fast edge-cached content delivery. \n\nUniform Canvas now supports dynamic component patterns and one-click integration with any data source, giving marketers more flexibility in content creation. \n\nEdgehancers automatically pull selected content to the CDN edge, ensuring pages render in under 50 ms for improved performance and SEO benefits.\n\nLearn more at https://uniform.dev","date":"2023-07-20T07:54:21Z","position":"004","image":"https://i.ytimg.com/vi/qh_ekk7CfZw/maxresdefault.jpg","videoId":"qh_ekk7CfZw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:004-qh_ekk7CfZw.md","_source":"content","_file":"3.videos/uniform/004-qh_ekk7CfZw.md","_extension":"md"},{"_path":"/videos/uniform/005-ffwvyuyzewu","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: loops","description":"When connecting external data to Uniform, once in a while you will encounter a list of items. Think about: the latest products, and best blog posts. If you want to show those on the page you'll have a list of items you have to loop over to be able to render them. \n\nLearn more at: https://uniform.dev","date":"2023-07-20T07:54:27Z","position":"005","image":"https://i.ytimg.com/vi/ffWvyuyzEwU/maxresdefault.jpg","videoId":"ffWvyuyzEwU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:005-ffWvyuyzEwU.md","_source":"content","_file":"3.videos/uniform/005-ffWvyuyzEwU.md","_extension":"md"},{"_path":"/videos/uniform/006-zbi8h6-fp5c","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: data types","description":"Connecting external sources to Uniform design system components requires you to use data types. Uniform offers pre-built integration types (like Contentful, etc) or URL-based data types that offer REST APIs. From legacy to a custom microservice. Any source can be a data type and can be connected to design system component properties.\n\nLearn more at https://uniform.dev","date":"2023-07-20T07:54:33Z","position":"006","image":"https://i.ytimg.com/vi/zbi8h6-fp5c/maxresdefault.jpg","videoId":"zbi8h6-fp5c","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:006-zbi8h6-fp5c.md","_source":"content","_file":"3.videos/uniform/006-zbi8h6-fp5c.md","_extension":"md"},{"_path":"/videos/uniform/007-mczgzargim8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Canvas: component patterns","description":"Components in uniform are highly flexible. Their properties are easy to change, some are stylistic and some are data-driven. To make it easy for content editors, Uniform has released component patterns. Patterns allow architects to create new entities of components that connect to specific data sources or with pre-defined stylistic attributes. They can add overrides to particular fields, so content editors have content management flexibility but do not need to handle complex data binding themselves.\n\nLearn more at https://uniform.dev","date":"2023-07-20T07:54:41Z","position":"007","image":"https://i.ytimg.com/vi/MczGzArgIm8/maxresdefault.jpg","videoId":"MczGzArgIm8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:007-MczGzArgIm8.md","_source":"content","_file":"3.videos/uniform/007-MczGzArgIm8.md","_extension":"md"},{"_path":"/videos/uniform/008-rarbrmxkh5i","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"CityJS conference talk: How to sniff out the glue code monster","description":"This is Tim's conference talk for CityJS London. How to sniff out the glue-code monster. Learn about the various forms of glue code and how to avoid the technical-debt nightmare they cause.","date":"2023-07-20T07:55:02Z","position":"008","image":"https://i.ytimg.com/vi/RARBrmxKh5I/maxresdefault.jpg","videoId":"RARBrmxKh5I","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:008-RARBrmxKh5I.md","_source":"content","_file":"3.videos/uniform/008-RARBrmxKh5I.md","_extension":"md"},{"_path":"/videos/uniform/009-3uyyxncppd8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Setting up Canvas","description":"In this video @timbenniks shows how to get started with Visual Canvas, a feature that allows developers to implement agnostic, contextual, visual editing for content editors without having to annotate the source code with identifiers that tightly couple your components to an SDK.\n\nWant to know more? Visit https://uniform.dev or join us on Discord at: https://uniform.to/discord","date":"2023-07-20T07:57:22Z","position":"009","image":"https://i.ytimg.com/vi/3UyYXnCpPd8/maxresdefault.jpg","videoId":"3UyYXnCpPd8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:009-3UyYXnCpPd8.md","_source":"content","_file":"3.videos/uniform/009-3UyYXnCpPd8.md","_extension":"md"},{"_path":"/videos/uniform/010-krctdwmf9fg","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Setting up Project map","description":"In this video @timbenniks shows you how to get started with Project Map and what type of SDK functions you can use to render a navigation or a sitemap for your website.\n\nWant to know more? Visit https://uniform.dev or join us on Discord at: https://uniform.to/discord","date":"2023-07-20T07:57:29Z","position":"010","image":"https://i.ytimg.com/vi/KrCtdwmF9fg/maxresdefault.jpg","videoId":"KrCtdwmF9fg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:010-KrCtdwmF9fg.md","_source":"content","_file":"3.videos/uniform/010-KrCtdwmF9fg.md","_extension":"md"},{"_path":"/videos/uniform/011-j0zqlcmtseq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Getting started with Uniform DXCP - The why and the how","description":"This video explains why Uniform DXCP exists, and after that, it explains how to actually get started.\n\nJoin us on discord to ask your questions https://uniform.to/discord\n\n00:00 The why\n12:27 The how","date":"2023-07-20T07:57:47Z","position":"011","image":"https://i.ytimg.com/vi/j0zQlcmTseQ/maxresdefault.jpg","videoId":"j0zQlcmTseQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:011-j0zQlcmTseQ.md","_source":"content","_file":"3.videos/uniform/011-j0zQlcmTseQ.md","_extension":"md"},{"_path":"/videos/uniform/012-aoaqo3tlzpw","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Work in new ways by integrating Algolia with Uniform’s visual editor","description":"We’re delighted to release a major update to the Uniform + Algolia integration, which uses the power of Algolia search to accelerate and automate the creation of digital experiences - helping brands to create great apps and websites for marketing and commerce that drive conversions. \n\nTwo key features: Automated content or product suggestions based on search parameters in Algolia, easy to set up via the Uniform Visual editor.\nAnd create customized faceted search pages with instant search components from Algolia, and control how they are displayed in Uniform Canvas.\n\nWant to get started yourself? Check out this video: https://youtu.be/lfkshoNh3oc","date":"2023-07-20T07:57:52Z","position":"012","image":"https://i.ytimg.com/vi/aOaQO3tlZpw/maxresdefault.jpg","videoId":"aOaQO3tlZpw","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:012-aOaQO3tlZpw.md","_source":"content","_file":"3.videos/uniform/012-aOaQO3tlZpw.md","_extension":"md"},{"_path":"/videos/uniform/013-lfkshonh3oc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Getting Started with Uniform and Algolia","description":"This video shows the steps to integrate Algolia with Uniform!","date":"2023-07-20T07:57:59Z","position":"013","image":"https://i.ytimg.com/vi/lfkshoNh3oc/maxresdefault.jpg","videoId":"lfkshoNh3oc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:013-lfkshoNh3oc.md","_source":"content","_file":"3.videos/uniform/013-lfkshoNh3oc.md","_extension":"md"},{"_path":"/videos/uniform/014-t3avobqvwps","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Creating with Canvas by Richard Bausek and Tim Benniks","description":"See the possibilities for content creation and orchestration to empower marketers using the new version of Canvas. \nhttps://uniform.dev/dxc-assembly\n\nSession moderated by Richard Bausek, Principal Product Manager, Uniform and Tim Benniks, Principal Developer Advocate, Uniform.\nhttps://twitter.com/richardbausek\nhttps://www.linkedin.com/in/richard-bausek/\nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","date":"2023-07-20T07:58:10Z","position":"014","image":"undefined","videoId":"T3AVoBqVWPs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:014-T3AVoBqVWPs.md","_source":"content","_file":"3.videos/uniform/014-T3AVoBqVWPs.md","_extension":"md"},{"_path":"/videos/uniform/015-z_41xoh9w1w","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform + Algolia = A Magical Combination","description":"Uniform's visual canvas editor offers content editors a flexible way to interact with an Algolia search index while it allows developers to connect to Algolia in any way they want. \n\nCheck out this video to see how magical the combination is.\n\nJoin us on Discord: https://uniform.to/discord","date":"2023-07-20T07:58:31Z","position":"015","image":"https://i.ytimg.com/vi/z_41xOh9W1w/maxresdefault.jpg","videoId":"z_41xOh9W1w","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:015-z_41xOh9W1w.md","_source":"content","_file":"3.videos/uniform/015-z_41xOh9W1w.md","_extension":"md"},{"_path":"/videos/uniform/016-oqqj-tu-urc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform and Cloudinary play very well together!","description":"In this video, Tim shows how Cloudinary integrates with Uniform as a headless DAM.\n\nhttps://docs.uniform.app/integrations/content/cloudinary\nhttps://uniform.to/discord\nhttps://cloudinary.com","date":"2023-07-20T07:58:38Z","position":"016","image":"https://i.ytimg.com/vi/OQQJ-tU-urc/maxresdefault.jpg","videoId":"OQQJ-tU-urc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:016-OQQJ-tU-urc.md","_source":"content","_file":"3.videos/uniform/016-OQQJ-tU-urc.md","_extension":"md"},{"_path":"/videos/uniform/017-sy9xkqrxzk8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Nuxt 3 with Content v2 and Uniform is magic","description":"This is an alternative approach to using Markdown files with Nuxt 3 and the Nuxt Content module. Uniform allows developers and content editors to compose with different sources. Markdown is one of these sources. Want to do a POC of a personal site, but you don't want a CMS and the hassle of content modeling and an account? This is a great way to use your own tooling but still show off the composability approach of a modern stack.\n\nhttps://content.nuxtjs.org\nhttps://docs.uniform.app\n\nhttps://uniform.to/discord","date":"2023-07-20T07:58:43Z","position":"017","image":"https://i.ytimg.com/vi/sY9xKQRXzk8/maxresdefault.jpg","videoId":"sY9xKQRXzk8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:017-sY9xKQRXzk8.md","_source":"content","_file":"3.videos/uniform/017-sY9xKQRXzk8.md","_extension":"md"},{"_path":"/videos/uniform/018-e-9ylltykzk","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform CLI: how to manage your compositions","description":"The Uniform CLI enables you to interact with Uniform from a command-line interface.\n\nIn this video, we go over how you can manage your component definitions and your compositions via the Uniform CLI. You can pull all data into a folder on your local machine to make some manual changes (or save all of it in git). \n\nYou can also push the data back to Uniform, making it easy to generate different environments for a project.\n\nThe documentation:\nhttps://docs.uniform.app/guides/tools/cli\nhttps://docs.uniform.app/reference/cli/canvas\n\nJoin our Discord server if you have questions:\nhttps://uniform.to/discord","date":"2023-07-20T07:58:47Z","position":"018","image":"undefined","videoId":"E-9YllTYkZk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:018-E-9YllTYkZk.md","_source":"content","_file":"3.videos/uniform/018-E-9YllTYkZk.md","_extension":"md"},{"_path":"/videos/uniform/019-hkcxn_r0m54","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Up and running with Uniform & Nuxt 3 in three mins!","description":"We are excited to announce that the Uniform SDK is ready for Vue 3 and Nuxt 3. Today's ever-expanding landscape of headless products demands that developers somehow connect them all. Wouldn't it be cool if you had one SDK that takes care of connecting up these different APIs? Uniform is a new category of product. It lets you take control of your stack, so creating composable architecture becomes a breeze! \n\nIt enables content editors to drag and drop content from headless sources to create page compositions. Without the help of developers, they can add or remove integrations, do an A/B test or personalize across multiple headless products. Want to change up your CMS? The front end stays the same. You can retrieve a page composition through an SDK function, query, and map data as you prefer, and pass it as props to your components. It works with SSG, SSR, Edge functions, and everything in between.\n\nBlog: https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3\nGet a free account: https://uniform.dev/free\nJoin our Discord: https://uniform.to/discord","date":"2023-07-20T07:58:53Z","position":"019","image":"https://i.ytimg.com/vi/hKCXN_R0m54/maxresdefault.jpg","videoId":"hKCXN_R0m54","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:019-hKCXN_R0m54.md","_source":"content","_file":"3.videos/uniform/019-hKCXN_R0m54.md","_extension":"md"},{"_path":"/videos/uniform/020-u41omxoadtq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Setting up live preview with Uniform and Nuxt 3","description":"Uniform Canvas live preview has been built into the Uniform Nuxt module and utilizes Nuxt's native preview functionality. This video shows you how to set it up.\n\nWant to get started with Nuxt 3 and Uniform? \nhttps://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3\n\nDocs: https://docs.uniform.app/guides/composition/live-preview#nuxt-3\nGet a free account: https://uniform.dev/free\nJoin our Discord: https://uniform.to/discord\n\nMore info:\nWe are excited to announce that the Uniform SDK is ready for Vue 3 and Nuxt 3. Today's ever-expanding landscape of headless products demands that developers somehow connect them all. Wouldn't it be cool if you had one SDK that takes care of connecting up these different APIs? Uniform is a new category of product. It lets you take control of your stack, so creating composable architecture becomes a breeze! \n\nIt enables content editors to drag and drop content from headless sources to create page compositions. Without the help of developers, they can add or remove integrations, do an A/B test or personalize across multiple headless products. Want to change up your CMS? The front end stays the same. You can retrieve a page composition through an SDK function, query, and map data as you prefer, and pass it as props to your components. It works with SSG, SSR, Edge functions, and everything in between.","date":"2023-07-20T07:58:58Z","position":"020","image":"https://i.ytimg.com/vi/U41OmxoadtQ/maxresdefault.jpg","videoId":"U41OmxoadtQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:020-U41OmxoadtQ.md","_source":"content","_file":"3.videos/uniform/020-U41OmxoadtQ.md","_extension":"md"},{"_path":"/videos/uniform/021-h-l_nj5aojs","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform MACHathon 2022 - Rage against MACHine's project demo","description":"Uniform won the Maturity award and the Audience Choice award at this year's MACHathon! The winning project from Rage against the MACHine was a composable accelerator for commerce sites. This video is a demo of how it works (and a bit about how we made it work). Here's why we built it: to allow businesses to spin up actually useable eCommerce websites with the click of one button. But how was it made? And why is it important that it was built with composability in mind and a MACH architecture? You can find out these and more details in the blog post we wrote on the subject: https://uniform.to/uniform-wins-MACH-awards","date":"2023-07-20T07:59:03Z","position":"021","image":"https://i.ytimg.com/vi/h-l_nJ5Aojs/maxresdefault.jpg","videoId":"h-l_nJ5Aojs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:021-h-l_nJ5Aojs.md","_source":"content","_file":"3.videos/uniform/021-h-l_nJ5Aojs.md","_extension":"md"},{"_path":"/videos/uniform/022-w4ppzyucowm","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"MACHathon 2022 entry Rage Against the MACHine","description":"In today’s digital landscape, data-driven experimentation has become the lynchpin of growth strategies. “Build, test, tear down and repeat” has become a mantra for businesses focused on product-led growth and customer acquisition loops. With a composable architecture based on MACH principles, businesses have the essential pieces in place to apply growth principles to the very brands they put in front of customers.\n\nBy both removing the technical barriers that slow down the launch of a consistent, repeatable stack and adopting an architecture that allows for an ultra-flexible approach to front-end component design, forward-thinking companies can hyper-target sub-brands, audience segments, global regions, verticals, or product categories - without starting from scratch every time a new site needs to be built. While much of the content may be the same as the master brand site, companies can build a site to support a specific play, test its performance with the target audience, tear it down and repeat.\n\nScaffolding composable stacks need to be more accessible to all stakeholders and not just a tech team.\n\nWhat it does\n\nFor our MACHathon Accelerate entry, team \"Rage against the MACHine\" has collaborated to deliver a next-gen MVP for a “composable commerce stack accelerator” based on Uniform experience orchestration, a BigCommerce headless commerce, and Contentstack headless CMS. This software offers the ability to scaffold new stacks easily as a business user, test performance, tear them down, then repeat.","date":"2023-07-20T07:59:11Z","position":"022","image":"undefined","videoId":"w4PPzyuCoWM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:022-w4PPzyuCoWM.md","_source":"content","_file":"3.videos/uniform/022-w4PPzyuCoWM.md","_extension":"md"},{"_path":"/videos/uniform/023-ib6dglgf7uc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Clearbit + Uniform Context = Super-powered personalization","description":"In this Video @timbenniks shows blazing fast #personalization with Uniform and Clearbit on his #jamstack site. \n\nUniform Context delivers sophisticated personalization without sacrificing page performance or scalability. Couple this with Clearbit, the leading data activation platform, and you get magic.\n\nWant to know more? Join the Uniform discord here: https://uniform.to/discord","date":"2023-07-20T07:59:18Z","position":"023","image":"https://i.ytimg.com/vi/IB6DglGF7uc/maxresdefault.jpg","videoId":"IB6DglGF7uc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:023-IB6DglGF7uc.md","_source":"content","_file":"3.videos/uniform/023-IB6DglGF7uc.md","_extension":"md"},{"_path":"/videos/uniform/024-4xykmrzo8ha","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"The Uniform Content Editing Workflow","description":"In this video Tims shows how to compose pages using multiple sources with Uniform Canvas. In composed architectures data comes in from many different places and while developers love this, content editors tend to struggle. Uniform workflow solves these issues and makes all stakeholders friends again!\n\nIn this video we use Contentful, BigCommerce, and Cloudinary.","date":"2023-07-20T07:59:23Z","position":"024","image":"https://i.ytimg.com/vi/4XyKmRzO8HA/maxresdefault.jpg","videoId":"4XyKmRzO8HA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:024-4XyKmRzO8HA.md","_source":"content","_file":"3.videos/uniform/024-4XyKmRzO8HA.md","_extension":"md"},{"_path":"/videos/uniform/025-4tuixex-iwk","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"The future of the Jamstack is composable","description":"Article here: https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g\n\nIn modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire.\n\nIn this video:\nYou will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech.\n\n1. Use the Jamstack with your favourite framework and host on your favourite CDN.\n2. Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers.\n\nCombining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future.","date":"2023-07-20T07:59:28Z","position":"025","image":"https://i.ytimg.com/vi/4TuixEx-iwk/maxresdefault.jpg","videoId":"4TuixEx-iwk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:025-4TuixEx-iwk.md","_source":"content","_file":"3.videos/uniform/025-4TuixEx-iwk.md","_extension":"md"},{"_path":"/videos/uniform/026-9q_1wzx_kju","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Progressing through Environments with Uniform","description":"When deploying anything other than a simple POC or personal website, a reliable application will need Environments. What is the right pattern for implementing environments for local developers as well as shared ones like staging and production?\n\nLet's look at how Uniform separates your configuration and content. Then look at how we can migrate both to new higher environments as a feature progresses through its software development workflow.","date":"2023-07-20T07:59:33Z","position":"026","image":"https://i.ytimg.com/vi/9q_1wZX_KjU/maxresdefault.jpg","videoId":"9q_1wZX_KjU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:026-9q_1wZX_KjU.md","_source":"content","_file":"3.videos/uniform/026-9q_1wZX_KjU.md","_extension":"md"},{"_path":"/videos/uniform/027-myj-ild_rxk","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Product Meetup: Personalizing content based on user location","description":"By customizing content for visitors, merchants and marketers can improve conversion rates and improve UX by presenting more relevant offers. Join Principal Developer Advocate Tim Benniks and Principal Sales Engineer Tony Mamedbekovfor a conversation about how you can use geo-IP localization to select the right content from a CMS and then present it to a user. You’ll also see them implement the solution using Uniform and Contentful.","date":"2023-07-20T07:59:39Z","position":"027","image":"https://i.ytimg.com/vi/MYJ-IlD_rxk/maxresdefault.jpg","videoId":"MYJ-IlD_rxk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:027-MYJ-IlD_rxk.md","_source":"content","_file":"3.videos/uniform/027-MYJ-IlD_rxk.md","_extension":"md"},{"_path":"/videos/uniform/028-jdl4a64klrg","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","description":"Building a composable DXP doesn't have to be out of reach for companies just beginning their digital journey. Join Uniform's principal developer advocate Tim Benniks to see how you can start easily -- and at no cost -- by using free plans from major vendors. \n\nTim shows you how to use Uniform to turn Contentful, BigCommerce, NextJS and Vercel into a powerful, agile platform for digital delivery. And once you set it up, nontechnical users can use Uniform Canvas to create, launch and iterate digital experiences without coming back to the dev team.","date":"2023-07-20T07:59:44Z","position":"028","image":"https://i.ytimg.com/vi/jdl4A64kLrg/maxresdefault.jpg","videoId":"jdl4A64kLrg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:028-jdl4A64kLrg.md","_source":"content","_file":"3.videos/uniform/028-jdl4A64kLrg.md","_extension":"md"},{"_path":"/videos/uniform/029-fevaivas-ye","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T: Personalization with Uniform Canvas","description":"This week we are showing off the ability to personalize parts of a website and A/B test using Uniform Canvas, Tailwind.ui and Next.js","date":"2023-07-20T07:59:48Z","position":"029","image":"https://i.ytimg.com/vi/FEvAiVAS-yE/maxresdefault.jpg","videoId":"FEvAiVAS-yE","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:029-FEvAiVAS-yE.md","_source":"content","_file":"3.videos/uniform/029-FEvAiVAS-yE.md","_extension":"md"},{"_path":"/videos/uniform/030-_8gh9oycsus","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","description":"Uniform is now available on the BigCommerce Headless Edition marketplace! Join us to see how you can use Uniform to connect BigCommerce with a headless CMS like Contentful and front-end components from TailwindUI.\n\nThe result? An agile approach to eCommerce that allows your business users to quickly and easily create beautiful pages without a developer or coding. And Uniform allows you to add personalization to your site with built-in preview, so you can see how your store will look and behave for different audiences. Build better user experiences and increase conversions by showing your shoppers what they're most interested in.\n\nWant to talk to us about how Uniform can help you take your store to the next level? Sign up for a demo here: https://uniform.dev/demo","date":"2023-07-20T07:59:54Z","position":"030","image":"https://i.ytimg.com/vi/_8gh9OYcsus/maxresdefault.jpg","videoId":"_8gh9OYcsus","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:030-_8gh9OYcsus.md","_source":"content","_file":"3.videos/uniform/030-_8gh9OYcsus.md","_extension":"md"},{"_path":"/videos/uniform/031-vvlwwonsqe8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"New features for Contentful in Uniform Canvas","description":"Uniform is excited about some new features for Contentful headless CMS users - check out this video to see these in action:\n\nMulti-space support\nContentful customers can now connect Uniform components to any space (or environment) in their account. This means that once developers wire up components to various spaces, business users can easily use our no-code editor to build experiences without needing to understand where content is coming from. The final page will present *ahem* a Uniform experience for end users. Of course, you can run A/B tests and personalization on every component too. And a bonus - this works at the environment level too, so components can even pull from specific space environments.\nRead the documentation here: https://docs.uniform.app/canvas/tutorials/add-contentful/#connecting-to-multiple-contentful-spaces\n\nIntroducing patterns\nBuilding digital experiences at scale can be repetitive and eat up development time. We’ve added patterns - a way to share a component (which could also contain other components) between multiple compositions. For example, you could use a pattern to share a legal disclaimer, news release author bio, or standard global header across many compositions. These can also be revised once added to a composition, so developers can accelerate build times when designing large sites.\nRead the documentation here: https://docs.uniform.app/canvas/tutorials/patterns\n\nLocalization for global marketing and ecommerce\nUniform components and compositions can now be localized. In addition to localizing content inside Contentful, users can now localize front-end components inside Uniform - giving users more flexibility when it comes to adopting a localization strategy. Both devs and business users get full flexibility with the ability to localize at any level - composition, component, and content.","date":"2023-07-20T07:59:59Z","position":"031","image":"https://i.ytimg.com/vi/vVLWWOnsQE8/maxresdefault.jpg","videoId":"vVLWWOnsQE8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:031-vVLWWOnsQE8.md","_source":"content","_file":"3.videos/uniform/031-vVLWWOnsQE8.md","_extension":"md"},{"_path":"/videos/uniform/032-evmwlfhv8wc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Take your BigCommerce store to the next level with faster time to market and personalization","description":"Uniform is now available on the BigCommerce Headless Edition marketplace! Join us to see how you can use Uniform to connect BigCommerce with a headless CMS like Contentful and front-end components from TailwindUI.\n\nThe result? An agile approach to eCommerce that allows your business users to quickly and easily create beautiful pages without a developer or coding. And Uniform allows you to add personalization to your site with built-in preview, so you can see how your store will look and behave for different audiences. Build better user experiences and increase conversions by showing your shoppers what they're most interested in.\n\nWant to talk to us about how Uniform can help you take your store to the next level? Sign up for a demo here: https://uniform.dev/demo","date":"2023-07-20T08:00:04Z","position":"032","image":"https://i.ytimg.com/vi/EvMwLFHV8wc/maxresdefault.jpg","videoId":"EvMwLFHV8wc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:032-EvMwLFHV8wc.md","_source":"content","_file":"3.videos/uniform/032-EvMwLFHV8wc.md","_extension":"md"},{"_path":"/videos/uniform/033-jjwwwr9uixo","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","description":"","date":"2023-07-20T08:00:18Z","position":"033","image":"https://i.ytimg.com/vi/jJwWWr9UiXo/maxresdefault.jpg","videoId":"jJwWWr9UiXo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:033-jJwWWr9UiXo.md","_source":"content","_file":"3.videos/uniform/033-jJwWWr9UiXo.md","_extension":"md"},{"_path":"/videos/uniform/034-gwbkr9ut5-w","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Tutorial Series #3: Defining Intents","description":"","date":"2023-07-20T08:00:22Z","position":"034","image":"https://i.ytimg.com/vi/GWBkr9uT5-w/maxresdefault.jpg","videoId":"GWBkr9uT5-w","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:034-GWBkr9uT5-w.md","_source":"content","_file":"3.videos/uniform/034-GWBkr9uT5-w.md","_extension":"md"},{"_path":"/videos/uniform/035-0gp_yf4fvo8","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Tutorial Series #2: Intents & Signals","description":"","date":"2023-07-20T08:00:27Z","position":"035","image":"https://i.ytimg.com/vi/0GP_Yf4Fvo8/maxresdefault.jpg","videoId":"0GP_Yf4Fvo8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:035-0GP_Yf4Fvo8.md","_source":"content","_file":"3.videos/uniform/035-0GP_Yf4Fvo8.md","_extension":"md"},{"_path":"/videos/uniform/036-_tkrrqdsolk","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Tutorial Series #1: Personalization Basics","description":"In this video we'll be discussing the basic technical approaches of personalization. By the end you'll know why Uniform's approach is highly scalable and easy to use. Ready to dive in?","date":"2023-07-20T08:00:32Z","position":"036","image":"https://i.ytimg.com/vi/_TKrRQdsoLk/maxresdefault.jpg","videoId":"_TKrRQdsoLk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:036-_TKrRQdsoLk.md","_source":"content","_file":"3.videos/uniform/036-_TKrRQdsoLk.md","_extension":"md"},{"_path":"/videos/uniform/037-pt1p8ixie-k","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Platform for business users","description":"See more at: https://uniform.to/zzkFwx\n\nIn recent years we've seen a lot of change in how enterprises use digital experiences to drive customer engagement and e-commerce.\n\nAlong with an explosion of infrastructure and tech stack options, decoupling from monolithic suites has offered more flexibility than ever.\n\nBut, traversing the headless landscape and orchestrating it into a cohesive architecture can present challenges, particularly as the number of business-critical tools behind great experiences continues to change and grow over time.\n\nToo often, that means that businesses need more and more developer expertise to tell their stories. And this at a time when developers are in short supply.\n\nContent editors and marketers are left struggling to keep up and frustrated by a lack of control they may have enjoyed with traditional suites.\n\nThat's why we're excited to announce Uniform, the world’s first truly composable DXP.\nAs a frictionless, composable digital experience platform, Uniform gives companies the power of choice to continuously adopt new tech without ever re-platforming.\n\nFront and center is the power of choice. Choose your own headless sources, your own tech stack and your own hosting. You can connect CMS, CRM and Commerce platforms with ease.\n\nUniform is completely opinion-less and therefore offers true composability. Not one integration is the center of the universe and all parts are equal. It acts as a platform to orchestrate both traditional and headless sources without telling marketers or developers what to do. Yes, you can even treat select monolithic systems like Sitecore as a headless source in Uniform.\n\nAnd with Uniform Canvas, you get powerful no-code tools to allow marketers to retain control over composition, personalization, A/B testing and managing brand experiences without developer support.\n\nUniform Canvas allows business users to seamlessly create engaging experiences based on a multitude of headless and legacy sources without concern for which systems that data is coming from, with instant preview allowing them to understand how changes impact a finished experience. Even when their tech stack changes over time.\n\nUniform ensures your team can continue to deliver incredible experiences as your architecture evolves. After all, change is the only constant. Super fast site performance, enterprise-grade security and great Core Web Vitals is only the beginning. Start telling your story now with Uniform.","date":"2023-07-20T08:00:50Z","position":"037","image":"https://i.ytimg.com/vi/Pt1p8ixie-k/maxresdefault.jpg","videoId":"Pt1p8ixie-k","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:037-Pt1p8ixie-k.md","_source":"content","_file":"3.videos/uniform/037-Pt1p8ixie-k.md","_extension":"md"},{"_path":"/videos/uniform/038-jul6h-3wrnq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Platform for Developers","description":"See more at: https://uniform.to/zzkFwx\n\nIn an ever expanding landscape of headless sources, developers are often the ones who have to connect them all. \n\nThe question of adding some products, content and personalization on one landing page always comes at a time developers are busy. The answer is generally “no” or a forced “yes, I’ll try to squeeze it in this week”.\n\nWouldn't it be cool if you only had to implement one SDK in your framework of choice and you never had to bother with this stuff again? This sounds too good to be true right? Let’s discuss what this SDK would look like.\n\nIt would allow content editors to drag and drop content from different headless sources to their heart’s content. They could add or remove integrations and even do an A/B test or add some personalization without having to wait for developers.\n\nIf the headless sources change, it would still work exactly the same way on the other end. Retrieve a page composition through an SDK function, map and enhance data to your liking and pass it as props to existing components. Regardless of tech stack, it would just work.\n\nI’m here to tell you we’ve actually built this. We proudly introduce Uniform, the world’s first truly composable DXP. The only DXP that gives developers the power of choice: from front-end framework to CDN to hosting as SSR, Jamstack, with Edge workers, partial SSG, anything goes.\n\nUniform offers a platform without opinion, without vendor lock-in and without a restricting roadmap. Not one integration is the center of the universe and nothing is tightly coupled.\nWant three different CMS systems and two commerce engines? Why not? Add an integration, query the data and map it to props for your components to use.\n\nNext to true composability regardless of tech stack, we’ve also introduced Uniform Canvas, a no-code composition builder that allows non-technical users to create experiences based on the components you define.\n\nUniform Canvas also provides a preview API with websockets, so end users can preview their composition live and in the actual codebase of the final product.\n\nUniform comes with an extremely flexible data enhancer API to help you map data from headless sources into your app. This API can run in your codebase or as an external service. We don’t care. Everything is built with flexibility in mind. You have the power of choice at your side.\n\nWe at Uniform know happy developers do better work. Good DX and great SDKs are just the beginning. With Uniform you can connect all the dots the way you like from a tech perspective. With a combination of out of the box tools for a fast time to market, and a set of APIs that allow extreme precision, we have created the world’s first truly composable DXP that will make both developers and content editors happy.","date":"2023-07-20T08:00:56Z","position":"038","image":"https://i.ytimg.com/vi/jUL6H-3wrnQ/maxresdefault.jpg","videoId":"jUL6H-3wrnQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:038-jUL6H-3wrnQ.md","_source":"content","_file":"3.videos/uniform/038-jUL6H-3wrnQ.md","_extension":"md"},{"_path":"/videos/uniform/039-pdekgezhffi","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Why is Jamstack so important for the future of DXP","description":"See more here: https://uniform.dev\n\nIn this video we will discuss why #Jamstack is so important for the future of DXPs.\n\nNowadays the general consensus is that Jamstack is the way to go. The modern web is origin-less and Jamstack allows us to make that happen.\n\nStatic sites allow for easy scaling. They also score high core web vitals due to extremely fast TTFB and the use of modern web frameworks such as Next and Nuxt. API calls and data mapping happen at build time so at runtime nothing time consuming has to happen.\n\nStill need dynamic stuff for personalization, A/B testing, product catalogs or user logins? Use CDN edge workers or #serverless functions that run on the same CDN instance as the site so they are blazing fast and close to the end user.\n\nFor the business users among you: Highly performant web pages lead to higher conversion rates and better SEO. They also scale without issue during the black Friday peak.\n\nFor the developers among you: Jamstack sites allow developers to choose their stack freely as the end result is a static site. Jamstack sites do not have an opinion of how they are build and where they run. They offer the #powerofchoice for developers.","date":"2023-07-20T08:01:01Z","position":"039","image":"https://i.ytimg.com/vi/PDEKgEzhFfI/maxresdefault.jpg","videoId":"PDEKgEzhFfI","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:039-PDEKgEzhFfI.md","_source":"content","_file":"3.videos/uniform/039-PDEKgEzhFfI.md","_extension":"md"},{"_path":"/videos/uniform/040-iaabbjfiiro","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"The problem of modern DXP (and the solution)","description":"The modern DXP is a group of headless tools connected to each other. This arrangement leaves content editors and marketers frustrated as they need to ask developers to connect services together to create a simple page.\n\nHow do we solve this? We need a low-code or no-code platform that allows content editors to easily compose pages from different headless sources with minimal developer involvement, But at the same time, developers need to love working with this platform, they need the flexibility and the #powerofchoice to choose their tech stack and anything else in the front-end.","date":"2023-07-20T08:01:06Z","position":"040","image":"https://i.ytimg.com/vi/IAaBBJFIiRo/maxresdefault.jpg","videoId":"IAaBBJFIiRo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:040-IAaBBJFIiRo.md","_source":"content","_file":"3.videos/uniform/040-IAaBBJFIiRo.md","_extension":"md"},{"_path":"/videos/uniform/041-fo9cop0znt0","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"True composability in the modern DXP","description":"In this video we will discuss what true #composability is in the context of #DXP.\nNowadays, business leaders and developers are demanding freedom of choice across the board. And this puts traditional suite vendors in a state of chaos.They are trying to change the way they work while still staying mindful of the past 10 years of marketing the \"suite\" approach.\n\nThey are literally buying companies to try to create the feeling of composability while in fact they are only allowing you to compose with the components in their suite offering. You can't coin a term like composable DXP if you do not offer real flexibility.\n\nCustomers will still suffer from vendor lock-in, complex upgrade roadmaps and lot's of work to customize anything in the system. We've seen a huge explosion in digital experience tools over the past ten years, and the market is only moving faster. The tools you have today won't be the same tools you're using in 6 months time, or 2 years' time.\n\nTrue composability is the #powerofchoice in EVERYTHING. From Tech stack to hosting, CMS, media management, marketing tools, CDN, analytics, whatever.\n\nWe need an opinion-less platform in which nobody is the centre of the universe. A platform where all elements are equal and that offers flexibility and extendability whenever needed. Never re-platform again. Just switch out integrations.\n\nA truly composable DXP offers Freedom of choice in everything but with painkillers for orchestration and content composing.","date":"2023-07-20T08:01:11Z","position":"041","image":"https://i.ytimg.com/vi/fo9cop0zNT0/maxresdefault.jpg","videoId":"fo9cop0zNT0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:041-fo9cop0zNT0.md","_source":"content","_file":"3.videos/uniform/041-fo9cop0zNT0.md","_extension":"md"},{"_path":"/videos/uniform/042-surxtza2sa0","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Astro FTW! Vue and React can work together in the same app","description":"No more comparison of which framework is better, Vue and React can work together in the same app. We're back with another episode of #Jamstack Fridays where Tony and Tim explore #Astro and what this new kid on the block means for modern web development.","date":"2023-07-20T08:01:20Z","position":"042","image":"https://i.ytimg.com/vi/sUrxtZA2sA0/maxresdefault.jpg","videoId":"sUrxtZA2sA0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:042-sUrxtZA2sA0.md","_source":"content","_file":"3.videos/uniform/042-sUrxtZA2sA0.md","_extension":"md"},{"_path":"/videos/uniform/043-wontid8zkf0","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Uniform Personalization Basics for MACHathon contenders","description":"Getting started with Uniform for your MACHathon project.\nTim and Christian help you get started with Uniform for your MACHathon project. Understand and see the basics of API first driven personalization with Uniform.\n\nhttps://uniform.dev\nhttps://docs.uniform.app\nhttps://twitter.com/timbenniks\nhttps://twitter.com/uniformdev","date":"2023-07-20T08:01:39Z","position":"043","image":"https://i.ytimg.com/vi/woNTID8zkf0/maxresdefault.jpg","videoId":"woNTID8zkf0","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:043-woNTID8zkf0.md","_source":"content","_file":"3.videos/uniform/043-woNTID8zkf0.md","_extension":"md"},{"_path":"/videos/uniform/044-fngyhaaogqc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Kentico Kontent mystery package unboxing","description":"Uniform and Kentico Kontent have recently partnered and we received a lovely and mysterious package from the Kontent team. \n\nSee how excited Tim is to open it!\n\nhttps://uniform.dev/uniform-for-kontent","date":"2023-07-20T08:01:45Z","position":"044","image":"https://i.ytimg.com/vi/fngYHAaOgqc/maxresdefault.jpg","videoId":"fngYHAaOgqc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:044-fngYHAaOgqc.md","_source":"content","_file":"3.videos/uniform/044-fngYHAaOgqc.md","_extension":"md"},{"_path":"/videos/uniform/045-itk9sgw0n7u","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Product Meetup: Uniform for Sitecore 5 is out!","description":"Uniform for Sitecore helps Sitecore customers to achieve the performance, scalability, cost and security benefits of the modern web without requiring expensive, risk and time-consuming upgrades.\n\nUniform for Sitecore offers two capabilities: Deploy and Optimize. These capabilities can be used separately or together.\n\nNew features for Uniform For Sitecore:\n* Edge-based personalization and decoupled tracking is available in Uniform Optimize.\n* Fully integrated incremental cache purge for Akamai (using Fast Purge) into the Sitecore publishing process.\n* Fully integrated incremental cache purge for Cloudflare into the Sitecore publishing process.\n\nImprovements:\n* Support for Sitecore JSS 16.\n* Ability to configure warnings that are shown to content authors when they try to make changes that once published will trigger full site redeployment.\n* New re-sync page and check page data buttons are added to facilitate in development and troubleshooting.\n* Item-based configuration has 'enabled' checkbox for temporary disabling services that were configured either via the item-configuration or even file-based config.\n* npm package dependencies updated across the board.\n* Improved content and media sync performance.\n* \"none\" publish target is now different from \"fake\" (\"none\" used to be an alias for \"fake\") and throws exceptions to remind that publish target needs to be configured.\n\nhttps://docs.uniform.dev/sitecore/\nhttps://uniform.dev/sign-up\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:01:50Z","position":"045","image":"https://i.ytimg.com/vi/Itk9sgW0N7U/maxresdefault.jpg","videoId":"Itk9sgW0N7U","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:045-Itk9sgW0N7U.md","_source":"content","_file":"3.videos/uniform/045-Itk9sgW0N7U.md","_extension":"md"},{"_path":"/videos/uniform/046-hdupegqtjrm","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Personalize Jamstack websites with Uniform for Kentico Kontent","description":"Tim from Uniform shows how to integrate Uniform Optimize #personalization into the Kentico Kontent CMS.\n\nFeel free to reach out directly on Twitter at: @unformDev or @timbenniks\nThe docs: https://docs.uniform.app/optimize/dev/content-management/kontent/getting-started\nThe starter kit: https://github.com/uniformdev/uniform-optimize-next-kontent-starter","date":"2023-07-20T08:01:55Z","position":"046","image":"https://i.ytimg.com/vi/HDUPeGqtjrM/maxresdefault.jpg","videoId":"HDUPeGqtjrM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:046-HDUPeGqtjrM.md","_source":"content","_file":"3.videos/uniform/046-HDUPeGqtjrM.md","_extension":"md"},{"_path":"/videos/uniform/047-6jkekhxmmaq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T: Next auth and Firebase","description":"We're back with another episode of #Jamstack Fridays where Tony shows @timbenniks how he connected Google #Oauth login with Firebase in #Nextjs with the Next Auth plugin.\n\nhttps://github.com/tmamedbekov/nextjs-nextauth\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:01:59Z","position":"047","image":"https://i.ytimg.com/vi/6jkEkHxmmAQ/maxresdefault.jpg","videoId":"6jkEkHxmmAQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:047-6jkEkHxmmAQ.md","_source":"content","_file":"3.videos/uniform/047-6jkEkHxmmAQ.md","_extension":"md"},{"_path":"/videos/uniform/048-h3y_jnbtrom","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","description":"We’re back with another episode of #Jamstack Fridays where Tony shows @timbenniks how he connected Netlify Forms, Google Sheets and #Next.js for some #serverless goodness.\n\nhttps://github.com/tmamedbekov/netlify-forms-nextjs\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:05Z","position":"048","image":"https://i.ytimg.com/vi/H3y_jNBTroM/maxresdefault.jpg","videoId":"H3y_jNBTroM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:048-H3y_jNBTroM.md","_source":"content","_file":"3.videos/uniform/048-H3y_jNBTroM.md","_extension":"md"},{"_path":"/videos/uniform/049-xr8eo9g6bps","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Friday news: Featurepeek is fire!","description":"In this episode Tony shares recent news from the Jamstack world.\n\nNews items: \nContentstack, Uniform and Epam event: https://info.contentstack.com/personalization-developer-workshop-uniform-05-26-2021.html\nFeaturepeek: https://www.netlify.com/blog/2021/05/19/next-generation-deploy-previews-plus-netlify-acquires-featurepeek/\nWebcontainers: https://blog.stackblitz.com/posts/introducing-webcontainers/\nNext JS Conf: https://nextjs.org/conf\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:10Z","position":"049","image":"https://i.ytimg.com/vi/Xr8Eo9G6bPs/maxresdefault.jpg","videoId":"Xr8Eo9G6bPs","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:049-Xr8Eo9G6bPs.md","_source":"content","_file":"3.videos/uniform/049-Xr8Eo9G6bPs.md","_extension":"md"},{"_path":"/videos/uniform/050-4eepxpo9iqc","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","description":"In this episode Tony and Tim explore how you can scaffold a #Next.js Jamstack website with #Contentstack and dynamic personalisation by #Uniform in 10 minutes.\n\nWant to try this yourself? Go here: https://uniform.app\n\nTony shares news from the Jamstack world\nNotion API: https://developers.notion.com/\nGatsby 3.5: https://www.gatsbyjs.com/docs/reference/release-notes/v3.5/\nSanity Exchange: https://www.sanity.io/exchange\nNode 14.7: https://nodejs.org/en/blog/release/v14.17.0/\nNetlify: https://www.netlify.com/blog/2021/05/06/now-available-configure-build-plugins-by-deploy-context/\nCloudfront Functions: https://aws.amazon.com/about-aws/whats-new/2021/05/cloudfront-functions/\nOptimize Vitals: https://web.dev/optimize-vitals-lighthouse/\nSimple Login: https://simplelogin.io/\n\nTimestamps\n00:00 Introduction\n00:24 News: Notion API\n01:13 News: Gatsby v3.5\n01:49 News: Sanity Exchange\n02:20 News: Node v14.17 LTS\n02:57 News: Netlify Build plugins\n04:03 News: Amazon Edge compute\n04:36 News: Core Web Vitals\n05:14 News: Simple Login\n05:52 Setting up Next.js with Contentstack for p13n\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:15Z","position":"050","image":"https://i.ytimg.com/vi/4EepxPO9iqc/maxresdefault.jpg","videoId":"4EepxPO9iqc","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:050-4EepxPO9iqc.md","_source":"content","_file":"3.videos/uniform/050-4EepxPO9iqc.md","_extension":"md"},{"_path":"/videos/uniform/051-fdounapttfy","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Friday news: The latest NextJS release is awesome!","description":"In this episode Tony shares recent news from the Jamstack world.\n\nNews items: \nhttps://nextjs.org/blog/next-10-2\nhttps://www.gatsbyjs.com/solutions/shopify\nhttps://vercel.com/changelog/surfacing-the-environment-of-deployments-and-domains\nhttps://www.sanity.io/changelog?platforms=Studio#change-b5752bd2-159f-4dd3-9611-bc8bce42f8c2\nhttps://mantine.dev/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:19Z","position":"051","image":"https://i.ytimg.com/vi/fDouNaPTtFY/maxresdefault.jpg","videoId":"fDouNaPTtFY","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:051-fDouNaPTtFY.md","_source":"content","_file":"3.videos/uniform/051-fDouNaPTtFY.md","_extension":"md"},{"_path":"/videos/uniform/052-gsey28saqac","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"A comprehensive view on personalization with Lars Petersen","description":"In this product meet up Lars and Tim take personalization for #Jamstack websites to the next level. They discuss negative signals, overrides, thresholds and enrichments.\n\nWant to learn how to do #personalization on your website? Check this video. It has a wealth of information.\n\nRequest a demo here: https://uniform.dev/sign-up\n\nTimestamps:\n00:00 Introduction\n01:21 Personalization basics: intents & signals\n15:09 Negative Signals\n22:06 Overriding Signals\n26:28 Thresholds\n34:21 Enrichments\n41:46 Conclusions","date":"2023-07-20T08:02:24Z","position":"052","image":"https://i.ytimg.com/vi/gSey28saQac/maxresdefault.jpg","videoId":"gSey28saQac","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:052-gSey28saQac.md","_source":"content","_file":"3.videos/uniform/052-gSey28saQac.md","_extension":"md"},{"_path":"/videos/uniform/053-r2ygbt1to4s","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","description":"It's Friday again! Tony and Tim discuss the news, they recap the Vue Storefront Summit and they dive into performance and personalization of Jamstack wesbites.\n\nNews:\nhttps://blog.tailwindcss.com/tailwind-ui-now-with-react-and-vue-support\nhttps://www.netlify.com/blog/2021/04/14/faster-builds-for-large-sites-on-netlify-with-on-demand-builders-now-in-early-access/\nhttps://blog.cloudflare.com/announcing-cloudflare-images-beta/\nhttps://strapi.io/blog/announcing-content-internationalization-v3-6\nhttps://trekhleb.dev/blog/2021/content-aware-image-resizing-in-javascript/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:29Z","position":"053","image":"https://i.ytimg.com/vi/R2YGBT1TO4s/maxresdefault.jpg","videoId":"R2YGBT1TO4s","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:053-R2YGBT1TO4s.md","_source":"content","_file":"3.videos/uniform/053-R2YGBT1TO4s.md","_extension":"md"},{"_path":"/videos/uniform/054-9m73vicako4","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","description":"Join Tony and @timbenniks at another episode of Jamstack Fridays with T&T. This week the guys are discussing how to break #Jamstack #architecture cliches and they show an out-of-the box architecture for some Friday #inspiration!\n\nNews:\nhttps://www.netlify.com/blog/2021/03/31/test-drive-netlify-beta-features-with-netlify-labs/\nhttps://www.netlify.com/blog/2021/04/05/dark-mode-fans-take-these-steps-to-set-it-up-in-the-netlify-app/\nhttps://www.gatsbyjs.com/blog/meet-new-gatsby-image/\nhttps://blog.cloudflare.com/the-teams-dashboard-home/\nhttps://twitter.com/adamwathan/status/1379154041662541828\nhttps://next-auth.js.org/\nhttps://styled-chart.com/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","date":"2023-07-20T08:02:37Z","position":"054","image":"https://i.ytimg.com/vi/9M73VIcakO4/maxresdefault.jpg","videoId":"9M73VIcakO4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:054-9M73VIcakO4.md","_source":"content","_file":"3.videos/uniform/054-9M73VIcakO4.md","_extension":"md"},{"_path":"/videos/uniform/055-d41ch2lnxtq","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack personalization with Contentstack and Uniform","description":"#Contenstack and #Uniform personalisation for #Jamstack websites. This website runs on Gatsby and we'll be showing you how easy it is to personalize website with Uniform!","date":"2023-07-20T08:02:42Z","position":"055","image":"https://i.ytimg.com/vi/D41Ch2LNxTQ/maxresdefault.jpg","videoId":"D41Ch2LNxTQ","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:055-D41Ch2LNxTQ.md","_source":"content","_file":"3.videos/uniform/055-D41Ch2LNxTQ.md","_extension":"md"},{"_path":"/videos/uniform/056-eohudn8apm4","_dir":"uniform","_draft":false,"_partial":false,"_locale":"","title":"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","description":"In this episode of Jamstack Fridays with T&T we discuss common questions our clients ask. In this video we discuss Gatsby vs Next.js and how to choose the right tool for you.\n\nNews:\nNextJS 10.1 Release\nhttps://nextjs.org/blog/next-10-1\n\nNetlify Build Plugin:\nhttps://www.netlify.com/blog/2021/03/26/netlify-build-plugin-of-the-week-lighthouse/\n\nSvelteKit:\nhttps://svelte.dev/blog/sveltekit-beta\n\n100 Day Challenge Create a Gatsby Theme\nhttps://www.gatsbyjs.com/blog/100days-challenge-5\n\nVisualized Content Modeling\nhttps://contentmodel.io/ \n\nFollow us here:\nTony: https://twitter.com/tmamedbekov\nTim: https://twitter.com/timbenniks\n\nhttps://uniform.dev","date":"2023-07-20T08:02:47Z","position":"056","image":"https://i.ytimg.com/vi/EOHudN8Apm4/maxresdefault.jpg","videoId":"EOHudN8Apm4","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:uniform:056-EOHudN8Apm4.md","_source":"content","_file":"3.videos/uniform/056-EOHudN8Apm4.md","_extension":"md"},{"_path":"/writing/digital-experience-platforms-the-old-versus-the-new","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Digital experience platforms: the old versus the new","description":"Digital experience platforms (DXPs) and the more modern digital experience composition platforms...","id":1405729,"slug":"digital-experience-platforms-the-old-versus-the-new","date":"2023-03-18T13:05:48Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1tc0ds73edh613y9yg6.png","canonical_url":"https://uniform.dev/blogs/digital-experience-composition-dxc/difference-between-dxp-and-dxcp","tags":["architecture","dxp","composable","webdev"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital experience platforms (DXPs) and the more modern "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platforms (DXCPs)"}]},{"type":"text","value":" share the same goal of making it easier for business users to create visually dynamic, personalized digital experiences. A major contrast is that DXCPs orchestrate solutions and technologies from different vendors. On the other hand, even though DXPs call themselves composable, they lock brands into a single vendor and one way of doing things at the expense of other capabilities."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To help brands decide whether to switch from a DXP to a DXCP, we explain below their key differences. More details are available in this video created by Headless Creator."}]},{"type":"element","tag":"h3","props":{"id":"dxcps-are-far-more-cloud-native"},"children":[{"type":"text","value":"DXCPs are far more cloud native"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A major disadvantage of DXPs is that their foundation is a content management system (CMS), which contains integrated add-ons or bolted-on tools along with such platforms as a digital asset management (DAM) and a product information management (PIM) system. Consequently, developers must manually apply updates, manage the hosting, customize the platform, and scale up the hosting to accommodate traffic spikes, such as those that occur around busy shopping days like Black Friday in the U.S. and Europe. The alternative is to hire the vendor to do all that at an additional cost."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Conversely, DXCPs and the headless tools they manage are all hosted in the cloud and cloud native, which means that updates can not only occur automatically, but also scale elastically as demand rises and falls. Also, since DXCPs are tech agnostic and API-first, business users can work with multiple tools there. They can do that in DXPs, too, but only to a limited extent, let alone that in venturing outside that vendor’s proverbial walled garden, they give up features and capabilities."}]},{"type":"element","tag":"h3","props":{"id":"dxcps-are-more-than-a-data-aggregator"},"children":[{"type":"text","value":"DXCPs are more than a data aggregator"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform views DXCPs as a way for brands and their developers to select advanced, API-first vendors and loosely couple those vendors’ tools together. Furthermore, thanks to DXCPs’ tooling, business users can work across the many integrated tools in a holistic, unified workflow. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Additionally:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCPs are more than a data aggregator. Even though effective tools are available for stitching APIs into a cohesive model for access and use by developers, those tools do not deftly manage experiences as DXCPs do. After all, API aggregators are meant for access by developers through code only, not for business users, whose expertise rests with a low- or no-code editing environment, in which DXCPs also specialize. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCPs are different from a CMS because, unlike a CMS that requires that all content be routed through it for a tight coupling of technology, they keep content and data sources on a level playing field and maintain the loose coupling so that you can replace and add capabilities as necessary with no technology lock-in. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In short, the entire focus of DXCPs is to accord teams freedom to collaborate smoothly, and for brands to switch tools without impacting the way other tools work and the overall web experience."}]},{"type":"element","tag":"h3","props":{"id":"dxcp-protects-domain-data"},"children":[{"type":"text","value":"DXCP protects domain data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When building webpages or experiences, developers need two types of data:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Domain data,"}]},{"type":"text","value":" which is core material, such as product models, that defines your brand across channels. For an events website, this data contains the names of the event spaces provided by your company, the dates, and the procedure for registration."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Design data,"}]},{"type":"text","value":" which is volatile, channel-specific material, such as your site’s colors and the way in which you can edit the display of week-by-week information. For an events website, for example, you can change page design or spotlight a feature with volatile data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In DXPs, both domain data and design data reside in the same CMS, potentially leading to a messy situation and a polluted content model. In DXCPs, the design data and domain data are separate, providing clean data workflows for innovation efforts and more system longevity."}]},{"type":"element","tag":"h3","props":{"id":"uniform-dxcp-readily-facilitates-transitioning-from-the-old"},"children":[{"type":"text","value":"Uniform DXCP readily facilitates transitioning from the old"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The primary function of composable frameworks like DXCPs is to enable both developers and business users to work seamlessly together, doing what they do best by leveraging the headless solutions that support them best. Composability also unlocks the potential of creating state-of-the-art, future-forward web experiences."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"dxcps-are-far-more-cloud-native","depth":3,"text":"DXCPs are far more cloud native"},{"id":"dxcps-are-more-than-a-data-aggregator","depth":3,"text":"DXCPs are more than a data aggregator"},{"id":"dxcp-protects-domain-data","depth":3,"text":"DXCP protects domain data"},{"id":"uniform-dxcp-readily-facilitates-transitioning-from-the-old","depth":3,"text":"Uniform DXCP readily facilitates transitioning from the old"}]}},"_type":"markdown","_id":"content:4.writing:digital-experience-platforms-the-old-versus-the-new.md","_source":"content","_file":"4.writing/digital-experience-platforms-the-old-versus-the-new.md","_extension":"md"},{"_path":"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Fast, personalized pages with Vercel Edge Middleware and Uniform","description":"To maintain an engaging relationship with your audience and increase conversions to your site, you...","id":1405723,"slug":"fast-personalized-pages-with-vercel-edge-middleware-and-uniform","date":"2023-03-18T12:49:56Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1yp1gg5ldu4y8tozle7.png","canonical_url":"https://uniform.dev/blogs/personalization/blazing-fast-personalized-pages-with-vercel-edge-middleware-and-uniform","tags":["performance","personalization","vercel","edge"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To maintain an engaging relationship with your audience and increase conversions to your site, you need personalization. However, creating personalized experiences is technically challenging. Most personalization techniques involve dynamic rendering and an origin server that holds personalization rules for end-users—a slow approach that often negates the conversions gained through personalization."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Among the many moving parts to consider, performance and scalability are tough nuts to crack. Fortunately, companies like Vercel, which recently released "},{"type":"element","tag":"a","props":{"href":"https://vercel.com/docs/concepts/functions/edge-middleware","rel":["nofollow"]},"children":[{"type":"text","value":"Edge Middleware"}]},{"type":"text","value":", make those problems readily solvable for developers. With Vercel in place, you only need to choose the right tech to personalize at the CDN edge without having to grapple with the one thing that slows things down: the origin server."}]},{"type":"element","tag":"h3","props":{"id":"the-benefits-of-edge"},"children":[{"type":"text","value":"The benefits of edge"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Vercel offers familiar tech to developers: it’s all JavaScript based. With Edge Middleware, developers have the tools to make great things happen that they could not before. All the dynamic tasks that typically occur on an origin server can now happen near end-users, leading to faster page loads and automatic scaling out of the box. Not only that, Edge Middleware have user data that’s handy for personalization: country, region, and the device in use."}]},{"type":"element","tag":"h3","props":{"id":"the-personalization-process-at-the-edge"},"children":[{"type":"text","value":"The personalization process at the edge"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By eliminating the origin server that is typically far away from end-users and bringing the dynamic rendering closer with Edge Middleware, you can personalize with high performance and in a decentralized manner. The only way to personalize without a central brain that knows all the personalization rules is to bring that brain into the software as a first-party tool. This is how that works:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create and store the configuration rules, i.e., all the "},{"type":"element","tag":"a","props":{"href":"https://docs.uniform.app/capabilities/personalization","rel":["nofollow"]},"children":[{"type":"text","value":"criteria for personalization"}]},{"type":"text","value":", in the codebase as a manifest JSON file at build time."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Store variations of the personalized content in the codebase at build time. Since a headless CMS is generally in use, those variations are tiny JSON models in the form of components."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The Edge Middleware has a tracker that monitors user behaviors, which are signals that users give off by doing something on the site. The Edge Middleware awards a score to the personalization criteria configured in step 1. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The tracker automatically creates a profile of user actions and, based on the scores awarded against the various criteria, displays the right content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You can render the content via the Edge Middleware or in the front end at hydration time."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The above approach to personalization is how Uniform Context works. Combining Edge Middleware rendering of personalized content with JavaScript hydration for subsequent page loads renders highly dynamic pages within ~50 milliseconds only. The approach is to initially render all the pages statically (SSG/Jamstack) and ensure that the Edge Middleware knows which parts it can personalize. While serving a page, the Edge Middleware checks if personalization is needed and, if so, fills the identified components with the correct personalized content."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"uniform-vercel-edge-middleware","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/4lvoQsz6WNCbJXIWQVQJSI/b36e13c87c86ca668fea6adf3da2b078/uniform-vercel-edge-middleware.svg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another benefit of the Vercel edge is that at the edge level, the CDN knows a lot about the end-users: their location, city, device, browser version, etc. Thus, Uniform Context can prepersonalize pages with Edge Middleware according to the location or device information from the Vercel CDN."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Want to try that out for yourself? You’ll find all the details in Uniform’s "},{"type":"element","tag":"a","props":{"href":"https://docs.uniform.app/integrations/cdn/vercel/personalization","rel":["nofollow"]},"children":[{"type":"text","value":"documentation on Vercel’s edge-side personalization"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To recap, by combining Uniform Context on Edge Middleware with statically rendered pages (SSG/Jamstack), you can create highly dynamic, personalized pages that load in less than a minute. In the past, Uniform offered dynamic personalization features through Vercel ESI. Edge Middleware now gives you a much more flexible and intuitive model for implementing personalization at scale. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-benefits-of-edge","depth":3,"text":"The benefits of edge"},{"id":"the-personalization-process-at-the-edge","depth":3,"text":"The personalization process at the edge"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","_source":"content","_file":"4.writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","_extension":"md"},{"_path":"/writing/how-to-dynamically-stream-video","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to dynamically stream video","description":"Build it yourself or use Cloudinary Dynamic video streaming is a video delivery technique...","id":1406138,"slug":"how-to-dynamically-stream-video","date":"2023-03-18T21:56:45Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wx2ix9t60eajoccgjh7.png","canonical_url":"https://dev.to/timbenniks/how-to-dynamically-stream-video-135f","tags":["video","cloudinary","streaming"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"build-it-yourself-or-use-cloudinary"},"children":[{"type":"text","value":"Build it yourself or use Cloudinary"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Dynamic video streaming is a video delivery technique that adjusts the quality of a video stream in real time. It does this according to detected bandwidth and CPU capacity of a user. In this article we will explore the two techniques which allow you to dynamically stream video."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"HLS and MPEG-DASH are the two most popular formats out there. Dynamic or adaptive video delivery requires outputting a video in different quality settings along with some additional files. Both HLS and MPEG-DASH have different approaches to the problem."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The process of making adaptive streaming work is complex. Most services out there do not provide an end-to-end solution for this and the ones that do a are quite costly. The adaptive video streaming paradigm is not one that many companies have conquered as it requires specific knowledge and access to hardware. There is a reason we don't have many competitors for Netflix and YouTube. Adaptive streaming of video is hard."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"First we’ll go into how adaptive streaming works and then I’ll explain exactly how to do this yourself. It’s much easier than you think once you have the knowledge and the right third party tool to do the heavy lifting."}]},{"type":"element","tag":"h3","props":{"id":"how-adaptive-video-delivery-works"},"children":[{"type":"text","value":"How adaptive video delivery works"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The video stream adapts itself based on a set of rules. The user’s bandwidth, CPU load and video player resolution on the page. To be able to stream adaptively you need to be able to stream different versions of a video. Each variant is of different quality, has a different bitrate and potentially has a different codec or resolution. Think of it as progressive enhancement in web development. The simplest stream always works and based on the features you have (in this case, CPU power, bandwidth, resolution), you get a nicer looking video stream."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Each adaptive video is also joined by an index file that specifies predefined segments of the video. In the HLS standard these segments are usually 10 seconds long where in MPEG-DASH we use 1 second. There is also a master playlist that points to the available video variations with additional information about each one."}]},{"type":"element","tag":"h4","props":{"id":"an-audio-playlist-adaptation"},"children":[{"type":"text","value":"An audio playlist adaptation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s pretty cool that dynamic video streaming is based on the spec from the M3U8 audio playlist. M3U8 was originally designed for audio files, such as MP3, but nowadays it is commonly used to point media players to audio and video sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An adaptive streaming video player uses the playlist information to decide which of the available video variations fits the user’s network conditions, CPU load or resolution best. It can switch to another source at each 10 second segment (these segments can also be shorter, see examples below) if the network conditions change."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This approach works well to minimise bandwidth use and optimise it for a smooth playback for everybody who watches the video stream. It can also be used the other way around, if the streaming service is completely overloaded it can send a video stream with a smaller bitrate or resolution to the viewer."}]},{"type":"element","tag":"h3","props":{"id":"about-hls-and-mpeg-dash"},"children":[{"type":"text","value":"About HLS and MPEG-DASH"}]},{"type":"element","tag":"h4","props":{"id":"hls"},"children":[{"type":"text","value":"HLS"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"HLS was originally created by Apple to provide video for the iPhone, but now it’s a common format used across HTML5 web applications. You’ll need to encode your video with H.264 or HEVC/H.265 codecs, which can be decoded by all major browsers. With HLS, the video is chopped up into 10 second intervals and sent to the user."}]},{"type":"element","tag":"h4","props":{"id":"mpeg-dash"},"children":[{"type":"text","value":"MPEG-DASH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MPEG-DASH is the latest HLS competitor. It was originally created to be an alternative to HLS. It has a few advantages over HLS, mainly because it is open-source. This means the media content publisher community as a whole can contribute to its changes and updates. MPEG-DASH is globally supported and codec agnostic, which means that you can encode video without worrying about codec support. It has lower latency than HLS. It's playlist file is an "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".MPD"}]},{"type":"text","value":", which is an "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"XML"}]},{"type":"text","value":" format."}]},{"type":"element","tag":"h3","props":{"id":"doing-it-yourself"},"children":[{"type":"text","value":"Doing it yourself"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deliver videos using adaptive streaming you must generate multiple video versions, add an index file per variant and add a master playlist. The formats and encoding for HLS and MPEG-DASH are different for each of these files. If you want to stream using both HLS and MPEG-DASH formats you need to double the effort for every video you want to deliver. Additionally, for MPEG-DASH, the best practice is to deliver the audio and video separately. This stuff is complex and time consuming."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you are a developer who likes to get into the nitty gritty of "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"ffmpeg"}]},{"type":"text","value":" you can deep dive and create all sources for HLS and MPEG-DASH yourself."}]},{"type":"element","tag":"h4","props":{"id":"diy-steps-for-mpeg-dash"},"children":[{"type":"text","value":"DIY steps for MPEG-DASH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MPEG-DASH is simplest to do yourself. Let's give it a go!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Imagine we have a video file called "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"video.mp4"}]},{"type":"text","value":". To make sure we can adaptively stream the video we need to create video files with different bitrates and an audio file. "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Beware that this is a simplified version for illustration purposes. In real life "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"ffmpeg"}]},{"type":"text","value":" has many quirks based what video you give it."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 1: extract the audio"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Extract the audio track:"}]},{"type":"element","tag":"pre","props":{"code":"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 2: extract and re-encode the video track"}]}]},{"type":"element","tag":"pre","props":{"code":"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The video is encoded using H.264 codec. This forces to have a key frame every 24 frames, in this case, every second. This allows the video to be segmented in chunks of 1 second. The bitrate is evaluated according to the buffer size, so in order to be sure the encoding is close to the requested rate, the buffer size should be lower than the bitrate."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 3: generate the MPD file"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We now have one audio file and five video files. A Media Presentation Description (MPD) file has to be created. An MPD file functions as an index referencing the different video and audio tracks with their bitrate, size and how the segments are ordered."}]},{"type":"element","tag":"pre","props":{"code":"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The -dash option sets the duration of each segment to one second."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to preparing adaptive streaming content MP4Box can do a lot more. So much more in fact that it's best to just read more "},{"type":"element","tag":"a","props":{"href":"https://github.com/gpac/gpac/wiki/MP4Box","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 4: configure your webserver"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Make sure your webserver understands "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".mpd"}]},{"type":"text","value":" files by adding the following mime type: "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"application/dash+xml"}]},{"type":"text","value":" to its config."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 5: make sure your video player understands adaptive streaming"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Implement "},{"type":"element","tag":"a","props":{"href":"https://github.com/Dash-Industry-Forum/dash.js","rel":["nofollow"]},"children":[{"type":"text","value":"dash.js"}]},{"type":"text","value":" into your video player or build a custom video player around dash.js."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Concluding"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Obviously, doing this at scale or as a slightly less technical user this process is not realistic. You'll want to automate this completely."}]},{"type":"element","tag":"h4","props":{"id":"enter-cloudinary"},"children":[{"type":"text","value":"Enter: Cloudinary"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to being market leader in image delivery Cloudinary also provides features for video: from dynamic streaming profiles to cropping the subject perfectly on different video ratios. They even use AI to generate captions for muted videos or meaningful previews."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Today we are discussing the dynamic streaming service they offer. Cloudinary has created "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/video_manipulation_and_delivery#adaptive_bitrate_streaming_hls_and_mpeg_dash","rel":["nofollow"]},"children":[{"type":"text","value":"smart pre-defined"}]},{"type":"text","value":" streaming profiles to help you out. A streaming profile holds a set of video variation definitions with different qualities, bitrates, and codecs. For example, the one profile specifies 10 different variations ranging from extremely high quality to audio-only. You can also create "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/admin_api#adaptive_streaming_profiles","rel":["nofollow"]},"children":[{"type":"text","value":"custom profiles"}]},{"type":"text","value":" through their admin API."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once you have selected a profile, you upload your video file with an eager transformation that instructs the system to generate all the required files for the requested profile in either HLS or MPEG-DASH format. If you want to deliver both formats, add two "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/transformations_on_upload#eager_transformations","rel":["nofollow"]},"children":[{"type":"text","value":"eager transformations"}]},{"type":"text","value":" within your upload command."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This upload code is for the Node.js SDK."}]},{"type":"element","tag":"pre","props":{"code":"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '',\n public_id: '', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '',\n public_id: '', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that the file has been uploaded, it generates a bunch of different video and audio streams. These streams are represented in the playlist files below."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For the HLS version of the video this is what comes out as the m3u8 playlist file:"}]},{"type":"element","tag":"pre","props":{"code":"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For the MPEG-DASH version of the video this is what comes out as the MPD playlist file (I have shortened the file for readability):"}]},{"type":"element","tag":"pre","props":{"code":"\n \n \n \n /dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n /dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\n \n \n \n /dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n /dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that we have the playlist files and all the video streams we can either build our own fancy video player that understands dynamic streaming or we go for the "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/cloudinary_video_player","rel":["nofollow"]},"children":[{"type":"text","value":"Cloudinary player"}]},{"type":"text","value":". In this case I suggest we use the Cloudinary player as it works out of the box. Check out the code sandbox for a very simple vanilla JavaScript example of loading the player for both HLS and MPEG-DASH."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Try throttling your connection and see the differences in quality. To do this, open your web developer tools (assuming you use chrome), open the network tab and select a different connection type in the dropdown next to the \"preserve log\" and \"Disable cache\" checkboxes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Cloudinary video player is based on "},{"type":"element","tag":"a","props":{"href":"https://videojs.com/","rel":["nofollow"]},"children":[{"type":"text","value":"videojs"}]},{"type":"text","value":" and has both the HLS and MPEG-DASH plugins installed by default. In the code sandbox below you'll see both the HLS and the MPEG-DASH version. Beware that the HLS version has better support for showing different statistics than the MPEG-DASH version."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See the code here: "},{"type":"element","tag":"a","props":{"href":"https://codesandbox.io/s/white-cherry-g4ixt","rel":["nofollow"]},"children":[{"type":"text","value":"https://codesandbox.io/s/white-cherry-g4ixt"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"build-it-yourself-or-use-cloudinary","depth":2,"text":"Build it yourself or use Cloudinary","children":[{"id":"how-adaptive-video-delivery-works","depth":3,"text":"How adaptive video delivery works"},{"id":"about-hls-and-mpeg-dash","depth":3,"text":"About HLS and MPEG-DASH"},{"id":"doing-it-yourself","depth":3,"text":"Doing it yourself"}]}]}},"_type":"markdown","_id":"content:4.writing:how-to-dynamically-stream-video.md","_source":"content","_file":"4.writing/how-to-dynamically-stream-video.md","_extension":"md"},{"_path":"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to get your webcam to look decent in a few simple steps","description":"If you have used a webcam before you know what it means to look like shit on camera. Even the most...","id":1407808,"slug":"how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","date":"2023-03-20T13:01:35Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finfev45k3ve6i4dgtu2r.png","canonical_url":"https://dev.to/timbenniks/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps-5eo4","tags":["webcam"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have used a webcam before you know what it means to look like shit on camera. Even the most expensive consumer webcams produce a “meh” result. So why do webcams suck? It’s their design. The webcam form factor has a bunch physical challenges that limits them from producing a good looking picture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Beware, the ideas outlined below are based on my experience and are by far not comprehensive or complete. That is not the idea of this post. Someone in the field of cameras will probably pick this apart on details. The global ideas stand, however."}]},{"type":"element","tag":"h3","props":{"id":"why-webcams-suck"},"children":[{"type":"text","value":"Why webcams suck"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Let’s get a bit technical. Almost all webcam "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Image_sensor","rel":["nofollow"]},"children":[{"type":"text","value":"image sensors"}]},{"type":"text","value":" are somewhere between 1/4\" and 1/3\" in size and they have a crop factor of around 7. Crop factor is a term that describes the difference between your camera’s sensor size and a traditional 35mm film frame. In the case of a webcam’s image sensor size and its crop factor a normal 18mm lens is the equivalent of a 126mm zoom lens. I might be a bit off here. The idea is that the crop factor plays a huge role."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A webcam tends to be positioned around 40cm (1.3 feet) from your face. Due to the high crop factor an extremely wide angle lens is needed to get a good visual at that distance. Think about it. If a 18mm lens is the equivalent of an 126mm lens it means that something we consider normal on a SLR camera is extremely zoomed in on a webcam. So, we need to zoom it out. BY A LOT. To do that, we use a wide angle lens."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Sensor explanation","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16nf6fvk0v76s11zb1ph.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The problem is, the wider you go, the less sharp the picture gets. If there wasn’t enough against the webcam form factor: the lenses in webcams are generally cheap and shitty. The webcam’s physical limitations make it terrible in low light situations. Even with studio lighting the image can appear grainy."}]},{"type":"element","tag":"h4","props":{"id":"there-are-more-issues-yikes"},"children":[{"type":"text","value":"There are more issues. Yikes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you check out high quality content there is always a nice "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Bokeh","rel":["nofollow"]},"children":[{"type":"text","value":"bokeh effect"}]},{"type":"text","value":". The more light a lens can capture (aperture) and the bigger the image sensor, the more bokeh you can expect. Bokeh is awesome, everybody needs bokeh."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In webcams autofocus works from about 1cm until 60cm (2feet). After that everything is always sharp. Webcams have a shallow depth of field. No bokeh. Not even close."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Combine a small sensor, a crappy wide angle lens and a shallow depth of field and you have the average webcam. A 200 euro webcam isn’t that much better than a 50 euro webcam. Sad but true."}]},{"type":"element","tag":"h4","props":{"id":"but-why-does-my-phone-camera-look-so-good"},"children":[{"type":"text","value":"But why does my phone camera look so good?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A real camera or a phone have much more computational power. The camera on a phone is almost its main feature nowadays. It’s where all the advertisement dollars go. Phones have bigger sensors, better lenses and sometimes even a dedicated hardware chip just for image processing."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most webcams also have some sort of processing power on board but it always kind of sucks. It mainly compresses the video feed so it’s streamable over the USB connection. Due to the compressed stream the PC hardly needs any processing to show the video. You have no access to aperture, shutter speed or ISO though."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can only post process the signal. But the damage is usually already done at this stage."}]},{"type":"element","tag":"h4","props":{"id":"but-why-arent-there-any-amazing-webcams-out-there"},"children":[{"type":"text","value":"But why aren’t there any amazing webcams out there?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s definitely possible and there are niche brands that build 1000 euro webcams. But if you have to spend that much, why not just buy a real camera? The actual market for webcams is likely just for conference calls, skype with family (if you don’t have a laptop or a phone) or content creators who are starting out. If webcams get too expensive, nobody will buy them."}]},{"type":"element","tag":"h3","props":{"id":"you-can-make-it-work-however"},"children":[{"type":"text","value":"You can make it work however"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In this post I’ll outline some tips and tricks you can apply to make your webcam look better. All techniques described below are applicable to any sort of camera setup. If you have a proper camera it just works better. We will be covering two topics. Lighting and post processing settings."}]},{"type":"element","tag":"h4","props":{"id":"lighting"},"children":[{"type":"text","value":"Lighting"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Lighting is by far the most important part of your setup if you want to make your webcam image look good. As mentioned before, webcams are not great in low light situations. To overcome this limitation you have to blast the filming subject (you) with light."}]},{"type":"element","tag":"h5","props":{"id":"light-temperatures"},"children":[{"type":"text","value":"Light temperatures"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are different types of light that need different white balance settings. Generally light bulbs are yellow and sun light is blue. When combining both you can green a green overtone. White balancing your camera in software is very important in this case."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I’d suggest not to use sunlight as it is hard to control. Close your blinds and go for light bulbs or LED lights only. There are many cheap options out there. Most lights can deliver different color temperatures ranging from 2500 (sunset) to 10000 (blue sky). Generally 5500 is considered noon daylight."}]},{"type":"element","tag":"h5","props":{"id":"shadows-diffusion"},"children":[{"type":"text","value":"Shadows & diffusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Light can be cast in different ways. Harder shadows and lighting from the top is used to depict movie villains for example. If you want an dramatic look, use hard shadows and light yourself from one side. If you want to look more mainstream use softer shadows and light yourself from more angles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To generate softer shadows you have to diffuse your light. The more focused a light source is, the harder the shadows. The more diffusion is added, the softer the shadows. I personally use a couple of cloths of white t-shirt fabric stretched over my lights. Obviously there are also more professional ways to diffuse light but these are not available to everyone."}]},{"type":"element","tag":"h5","props":{"id":"your-light-setup"},"children":[{"type":"text","value":"Your light setup"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that we have our color temperatures and diffusion out of the way, let’s talk about how to set up your lights so you are lit properly for the webcam. If you have very limited options, just put a big light behind your camera and blast your face with white light. This will give you a 100% quality boost over having no lights."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have a little bit more flexibility I suggest using a three point light setup. The three point light setup is considered industry standard and will generally give you great results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Lighting setup","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/keef3ou8sbzpg24acrzj.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The three point light setup assumes you have a “key light”, a “fill light” and a “hair light”."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Key light: This is the main light source. It shines directly on the subject, usually from the front right or front left. It establishes the overall look and feel of the shot."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Fill light: The fill light provides balance to the key light by “filling in” the rest of the subject’s face with softer light. It should be positioned to the side opposite side of the key light."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hair light: Also called “back light” or “rim light”. This light creates a flattering rim of light around the subject, separating him or her from the background."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is how to set up your lights. To start turn all lights off so you are in a dark room."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Turn on your key light. Your key light is the brightest light in the scene and the one that creates the overall feel of the shot. Adjust its brightness to your liking. You should position the key light in a relatively high spot to reduce shadows on the face."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Add your fill light. The fill light should be on the opposite side of the key light, but still in front of the subject. Don’t make the key and fill lights symmetrical. The fill should be at the subject’s face level, and should get rid of any remaining shadows. The intensity of the fill light should be about half that of the key light."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Bring in the hair light. The back light separates you from the background. It can be placed anywhere behind the subject. Make sure to keep it out of the shot. Angle it down from a high position to achieve a sharp outline on the edge of the subject."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If there are lights behind you, make sure these have a very low intensity so they do not distract from you, the subject of the shot. To make the shot more interesting you can add some fun colored lights behind you as long as they are not too distracting. This is obviously not needed but it’s a fun thing to add."}]},{"type":"element","tag":"h3","props":{"id":"application-settings"},"children":[{"type":"text","value":"Application settings"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We are almost there! Let’s tweak some settings to make the camera quality appear much higher."}]},{"type":"element","tag":"h4","props":{"id":"turn-things-off"},"children":[{"type":"text","value":"Turn things off."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have a Logitech webcam. This camera comes with a little control panel that allows for some post process tweaking of the camera feed. If you are well lit you can turn off a bunch of things in this interface. First of all, keep the settings for brightness, contrast, saturation and sharpness at the default. We will fix these at a later stage."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Set the white balance on a fixed setting and make sure it is not set to auto. For my setup a white balance at around 4000 works."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make sure to turn off Backlight compensation and Gain. We do not need these as we are well lit."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"In the next tab make sure exposure is set to “auto”. If you attempt to expose yourself manually with a Logitech webcam all hell brakes loose. The image either looks like crap or your framerate will drop significantly."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make sure to turn off Low Light compensation. There is no need for this as you are well lit."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Webcam settings","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rktns1m78yyy1owfexqd.png","width":1280},"children":[]}]},{"type":"element","tag":"h4","props":{"id":"color-correction"},"children":[{"type":"text","value":"Color correction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I use OBS, which comes with a great plugin to color correct the video feed from your webcam. The smallest adjustments give a great result. Stay subtle with the changes and your video will look a lot better fast."}]},{"type":"element","tag":"h4","props":{"id":"lut"},"children":[{"type":"text","value":"LUT"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Instagram filters can make a simple picture of food look like a very fancy picture of food. You can use these same kinds of filters on webcams too! It’s amazing what a little cosmetic tweak can do to your video quality. The filters I’m talking about are called "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/3D_lookup_table","rel":["nofollow"]},"children":[{"type":"text","value":"LUT"}]},{"type":"text","value":". LUT’s are generally used in the professional film world to color grade a movie."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"LUT’s are simple, easy-to-use filters that can be applied directly into "},{"type":"element","tag":"a","props":{"href":"https://obsproject.com/","rel":["nofollow"]},"children":[{"type":"text","value":"OBS"}]},{"type":"text","value":" allowing your webcam presentation to become brighter or more cinematic. For a great free pack of LUT’s go here: "},{"type":"element","tag":"a","props":{"href":"https://gamingcareers.com/guides/30-free-webcam-filters-obs/","rel":["nofollow"]},"children":[{"type":"text","value":"https://gamingcareers.com/guides/30-free-webcam-filters-obs/"}]}]},{"type":"element","tag":"h4","props":{"id":"you-can-try-one-more-thing"},"children":[{"type":"text","value":"You can try one more thing"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have a cheap camera with a shallow depth of field and your lights are set up well, you can use a program called xsplit vcam to create a software bokeh effect! Beware, you need a relatively strong graphics card and the lighting needs to be spot on. Also, the program is not free."}]},{"type":"element","tag":"h3","props":{"id":"thats-it"},"children":[{"type":"text","value":"That's it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is the result I got after a bit of research and tweaking settings."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Before","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53ums57svft6zuza79l9.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"After","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h293vez6piv68hyzfy98.png","width":1280},"children":[]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-webcams-suck","depth":3,"text":"Why webcams suck"},{"id":"you-can-make-it-work-however","depth":3,"text":"You can make it work however"},{"id":"application-settings","depth":3,"text":"Application settings"},{"id":"thats-it","depth":3,"text":"That's it"}]}},"_type":"markdown","_id":"content:4.writing:how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","_source":"content","_file":"4.writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","_extension":"md"},{"_path":"/writing/how-to-sniff-out-the-glue-monster","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to sniff out the Glue Monster","description":"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic...","id":1405727,"slug":"how-to-sniff-out-the-glue-monster","date":"2023-03-18T13:00:21Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8mwj68dscwvzuvcdd4y.png","canonical_url":"https://uniform.dev/blogs/how-to-sniff-out-the-glue-monster","tags":["javascript","architecture","composable","devops"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic platforms to "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architectures"}]},{"type":"text","value":", glue code that connects to systems or cleanses data has grown exponentially. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reality is, you as developers must connect headless systems for a cohesive, feature-complete architecture, but that’s a messy task. The amount of glue you must create hinges on deadlines, the potential need to switch systems later, and the answers to these questions:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you clean up that messy API response so its data fits the front end?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you adapt your front-end components to specific API output and add logic locally?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you separate domain data with design-related data, or mix up everything in data models in different headless systems?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue Code SPREAD","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5iPWgs3hiyQZb1O7cZECJt/671395cc3852d456f1dc02d34d6d5b2c/GlueCode_Blog_SPREAD.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Glue code is a nightmare of technical debt that leads to less innovation, more development effort, and, ultimately, higher expense on hidden requirements."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Types of glue"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue code Icon","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5n8VoHX3RPLBLFWg2IJsYP/f2e9ccc22bd7541b352b7bf19d24ffcb/GlueCode_Blog_Images_Glue_code_Icon.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else"},"children":[{"type":"text","value":"Code that queries a source or receives data that maps the input to fit something else. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example is code that queries an API endpoint and retrieves a huge yet incomplete dataset for the following steps:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Map the initial result into a more specific object. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enrich that object by querying another endpoint and add the result to the original. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Tidy up the code and create a final data set."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here’s a real-world use case: queries on a YouTube playlist and retrieval of the metadata on the videos there. The process runs as follows:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The code traverses the response to identify and arrange the video IDs in an array. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You query the YouTube video API for each video ID for all the needed data. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Given the massive amount of data that results, you go through the response for the exact data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the case of a less reputable source than YouTube or a legacy API, any changes could break the data structure you assume is returned. Not only that, since you have no inkling of the type of the returned data, your data-mapping code must be defensive. Some fields might be empty or even nonexistent sometimes. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Plus, placing all that code in your front end spells complexity. What to do when you’re building another front end like a mobile app or an Apple TV app? Do you duplicate the code in all the new channels?"}]},{"type":"element","tag":"h3","props":{"id":"polluting-stable-domain-data-with-volatile-design-data"},"children":[{"type":"text","value":"Polluting stable domain data with volatile design data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Generally, a data model for videos contains the following fields: "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"titleClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"descriptionClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"poster imageClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"durationClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"upload dateClick to copy"}]},{"type":"text","value":", and "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"video fileClick to copy"}]},{"type":"text","value":". But what to do if the product owner wants to highlight this video as “featured” for the week? You would add a “featured” checkbox to the data model and ask content editors to check “featured” in the CMS. In the front-end code, you would look for the “featured” flag and show a bigger version of the video card along with a boldfaced title. If the video appears in another context, like a search result or on another website, that “featured” flag has no meaning."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In time, you would add other checkboxes and dropdowns to show the content differently in various contexts, causing the content model to grow. At that point, if an architect who’s cleaning house removes a checkbox, multiple projects that leverage the video would crash and burn."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To sustain a setup with data models that are regularly polluted in that manner, you must build a plethora of defensive code that catches all the additional data. That’s how undesirable glue code and tech debt build up."}]},{"type":"element","tag":"h3","props":{"id":"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers"},"children":[{"type":"text","value":"Creating glue layers by vendors to stay sticky (pun intended) with customers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue Code STICKY architecture","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5zwPAAafgm4qZpoU9H2Bbw/8d4928142367cd19f8b76528bfc61ef0/GlueCode_Blog_STICKY.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The more “official” glue vendors add to a composable system, the harder it is for their customers to perform updates, or switch or add components. The more tech debt, the more support hours vendors can sell. Also, since modern, more agile vendors are bound to outpace the less competitive ones in time, the wise thing for the latter to do is adopt solutions that offer hyperflexible systems at lower cost, enabling their customers to focus on storytelling and solving business problems for their audience without sticky glue."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Ways to deglue"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Unglue Icon","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/16F6FELfCSkZjE8cCuRauw/2c81553462dd1d16be36b2a56dffd443/GlueCode_Blog_Images_Unglue_Icon.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The new product category digital experience composition facilitates degluing. Typically, you create pages on "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platforms (DXCPs)"}]},{"type":"text","value":" with data from numerous headless sources without having to understand how those sources work. With the DXCP hosting a brand’s design system in page components, you can drag and drop them onto the page and connect data from external sources to them. No need to write connection code at all. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXCPs map component properties to specific data fields of APIs. That means you could add to your video component an image from a DAM, a title and description from YouTube, and viewer metadata from an ERP system. Want to feature the video somewhere? Simply add a checkbox in the DXCP in the context of the component in question without affecting the data model of external systems. As a last step, add the data attached to the component to the CDN edge for caching. Alternatively, grab the information on the data source and query it yourself. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The front end contains a light and fast SDK that can query component compositions in the CDN-edge cache. With the content mapped explicitly to your component properties in the DXCP, no data mapping is required. And you are now deglued!—with no need to build code to straighten up data or query external systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Want to add a tiny bit of glue nonetheless? The SDK also contains hooks through which you can enrich or map data from the API before sending the data to the components."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the meantime, content editors can take advantage of the DXCP’s live-preview feature to contextually edit the website by connecting new headless sources and mapping API responses to the components you created. Updating a CMS or adding a legacy source takes only a few clicks, code free. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, content editors can manually type in content on the DXCP and, later on, attach a CMS or commerce system that replaces the static copy with dynamic pointers from component fields to API responses. Again, no code is required to accommodate those functions."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else","depth":3,"text":"Code that queries a source or receives data that maps the input to fit something else. "},{"id":"polluting-stable-domain-data-with-volatile-design-data","depth":3,"text":"Polluting stable domain data with volatile design data"},{"id":"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers","depth":3,"text":"Creating glue layers by vendors to stay sticky (pun intended) with customers"}]}},"_type":"markdown","_id":"content:4.writing:how-to-sniff-out-the-glue-monster.md","_source":"content","_file":"4.writing/how-to-sniff-out-the-glue-monster.md","_extension":"md"},{"_path":"/writing","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Writing","description":"My articles","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Writing"},"children":[]},{"type":"text","value":":articles{:small=\"false\"}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:index.md","_source":"content","_file":"4.writing/index.md","_extension":"md"},{"_path":"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Level up your collaboration game: Developer insights for winning with marketing pros","description":"Building outstanding user experiences takes, first and foremost, effective collaboration between...","id":1456239,"slug":"level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","date":"2023-05-03T15:49:29Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhfuu567f1khlxvglcn0.png","canonical_url":"https://uniform.dev/blogs/level-up-your-collaboration-game-developer-insights-for-winning-with","tags":["webdev","marketing","collaboration"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Building outstanding user experiences takes, first and foremost, effective collaboration between marketing and development teams. Oftentimes, however, those teams’ different perspectives lead to misunderstandings and opacity, which could seriously impact progress and revenue. Over the last two years of interacting and working within a marketing department as a seasoned technical leader, I've developed strategies to enhance collaboration, boost cross-team communications, and promote project success. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Below are the steps to take."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Set clear objectives"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Since both development and marketing play vital roles in implementing user experiences that drive business goals, the contributors in question must share clear, common objectives, e.g., projected sales, number of service signups, and brand messaging. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reaching those goals sometimes requires both technical and marketing-driven activities, such as code refactoring, site-performance boosts, messaging-success measurements, and analytics gathering. Those work streams, whose specifics are highly contextual to the specific job marketers or developers do, could easily cause conflict."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid miscommunication, do the following:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Invite participation from all team members."}]},{"type":"text","value":" Involve them in planning sessions, explain the background of the strategies to be built, and ascertain that everyone is on the same page."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Set SMART goals."}]},{"type":"text","value":" Create specific, measurable, attainable, relevant, and time-bound objectives."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Plan together"}]},{"type":"text","value":". Align schedules based on the teams’ different workflows."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Understand how the other discipline works"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A healthy dose of the qualities below is key:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Respect."}]},{"type":"text","value":" To minimize friction, respect for each other's operating methods, styles, and process is essential. Besides acquiring an understanding of the various workflows, team members must be willing to compromise for alignment’s sake."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Patience."}]},{"type":"text","value":" Be accommodating, thoughtful, and tolerant when explaining processes to the other team. A unified approach like Agile project management can forge collaboration by breaking projects into stages, constantly engaging with stakeholders, and enabling both teams to simultaneously track goals and meet objectives."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Remember, a world of difference exists in how developers and marketers think. Establishing a mechanism through which they can learn about one another's tasks and routines goes a long way in championing collaboration."}]},{"type":"element","tag":"h2","props":{"id":"leverage-each-others-skills"},"children":[{"type":"text","value":"Leverage each other’s skills"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Developers and marketers contribute unique, value-add skills:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Developers"}]},{"type":"text","value":" can offer product or technical insights by clarifying why certain code approaches and rendering modes help reach marketing goals."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Marketers"}]},{"type":"text","value":" can share user feedback, messaging learnings, and test data with developers as support for spiffing up the UI and product features."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Essentially, developers work in the context of the “how,” and marketers, of the ”why.” Both are equally valuable for successful projects."}]},{"type":"element","tag":"h2","props":{"id":"make-data-based-decisions"},"children":[{"type":"text","value":"Make data-based decisions"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Data is crucial for measuring success. Developers and marketers play a different role vis-à-vis data:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers create technology for harnessing data that marketers need to optimize conversion."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Marketers collect data and strategize campaigns accordingly. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Using analytics tools and personalization engines is instrumental for fulfilling project goals. Ultimately, developers must find a way to integrate “hated tools” so that both teams are happy."}]},{"type":"element","tag":"h2","props":{"id":"use-the-tools-that-appeal-to-both-teams"},"children":[{"type":"text","value":"Use the tools that appeal to both teams"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tools that propel collaboration fall into different categories. For example, Jira and Linear are process systems, and Figma and Zeplin are design devices. Other tools are slated for website architecture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though developers love the freedom to choose the tools they prefer to build websites, it comes at the price of abstract interfaces and many open tabs for marketers. As technology evolves, techies must keep up with industry trends without being bogged down by marketers’ tool choices. That’s where headless has failed us: The pendulum of architecture choices to build websites has swung too far. Developers love it, yet marketers hate it. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":" affords both developers and marketers control of features, content, and the ever-ticking clock. Though technically agnostic, a DXCP—"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Helps developers funnel data to a front-end channel of their choice without compromises. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enables marketers to independently and visually edit content in a no-code environment without having to seek developer assistance."}]}]},{"type":"element","tag":"h2","props":{"id":"faithfully-perform-the-paramount-steps"},"children":[{"type":"text","value":"Faithfully perform the paramount steps"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By setting clear objectives, understanding each other's processes, leveraging each other’s unique skills, making data-driven decisions, and adopting tools that cater to both parties, marketing and development teams can cooperate smoothly, eliminate roadblocks, and deliver phenomenal projects. With the right strategies and mindset, the sky's the limit for the potential of those high-performing teams to achieve exceptional results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://uniform.dev/demo","rel":["nofollow"]},"children":[{"type":"text","value":"Check out Uniform DXCP"}]},{"type":"text","value":", on which developers and business teams can access all the tools they need to deliver well and fast."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"leverage-each-others-skills","depth":2,"text":"Leverage each other’s skills"},{"id":"make-data-based-decisions","depth":2,"text":"Make data-based decisions"},{"id":"use-the-tools-that-appeal-to-both-teams","depth":2,"text":"Use the tools that appeal to both teams"},{"id":"faithfully-perform-the-paramount-steps","depth":2,"text":"Faithfully perform the paramount steps"}]}},"_type":"markdown","_id":"content:4.writing:level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","_source":"content","_file":"4.writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","_extension":"md"},{"_path":"/writing/mach-versus-monolithic-suites","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"MACH versus monolithic suites","description":"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are...","id":1399552,"slug":"mach-versus-monolithic-suites","date":"2023-03-13T20:37:36Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfwuyqdwlw3du1k96z1l.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/mach-versus-monolithic-suites#mach-as-an-evolution-of-monoliths","tags":["mach","composable","architecture","webdev"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are no longer viable and that companies must evolve continually to keep up with consumer expectations. However, making technology decisions can be difficult, confusing, and stressful, especially since you might have to live with them for years. You also run the risk of being locked into products that cannot keep up with your organization's changing needs or, even worse, products that were never a good fit in the first place. No wonder that when an architecture emerges that promises to reduce that risk, people pay attention."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reality is, monolithic suites are no longer the safest choice. In their quest to stay agile, nimble, customer-centric, and future-proof, businesses must find more effective ways for transforming digital experiences and are turning to the increasingly popular MACH architecture."}]},{"type":"element","tag":"h2","props":{"id":"mach-architecture-explained"},"children":[{"type":"text","value":"MACH architecture explained"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MACH stands for microservices, API-first, cloud-based, and headless, comprising decoupled, modular, self-contained, and independent components that work together as one, as explained below:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Microservices"}]},{"type":"text","value":": These are individual business capabilities that are independently built, deployed, and managed."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"API-first"}]},{"type":"text","value":": APIs function as the pipeline through which applications interact, resulting in a microservices-based architecture that activates data exchange among the services."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Cloud-native"}]},{"type":"text","value":": Since cloud computing offers scalability and adaptability, cloud-native applications foster innovation, accelerating the creation and optimization of microservices and, in turn, the process of project initiation through delivery."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Headless"}]},{"type":"text","value":": This approach of decoupling the front-end user experience from the back-end logic spells complete freedom in building omnichannel digital experiences."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Together, those four components promise to reduce the risk of product lock-in and enable enterprises to adopt technologies that best meet their needs in a timely manner. As a response to the monolithic architectures that have long dominated enterprise applications, MACH addresses the limitations of legacy technologies while staying flexible for businesses to adapt to changes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Understanding MACH requires coming to grips with its two foundational concepts, integration and composability, as well as the advantages and disadvantages of its monolithic predecessor."}]},{"type":"element","tag":"h2","props":{"id":"mach-as-an-evolution-of-monoliths"},"children":[{"type":"text","value":"MACH as an evolution of monoliths"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Though costly, monoliths are convenient because, being from a single vendor, their components are likely to work well together. Additionally, since most monolithic vendors are well-established market players, they offer all the features required for building and maintaining digital experiences and serve as a single contact for businesses to call on in case of issues."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Encompassing its services in one interdependent package, MACH evolves from a monolithic, tightly coupled system. Those services, frequently called a “best-of-need” stack, comprise robust APIs for facilitating data exchange among services along with the best tools for experience creation without incurring expenses on unnecessary features. Another benefit is that businesses need not depend on a single vendor’s roadmap for new channels or technologies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, businesses might find it difficult to evaluate the array of MACH vendors and tools and make the right decisions. Also, given MACH’s multivendor setup, teams might need to perform their tasks with several tools instead of one, as in the case of a monolithic system. Another major challenge is that integration of the tools often requires heavy custom coding."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To decide which system, MACH or monolithic, to opt for, businesses must find out if the advantages are real and whether the advantages surpass the disadvantages."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Suites versus MACH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The difference between a suite and MACH comes down to choice. In the case of a suite, the vendor selects the products for you. With MACH, you pick the products you want from the vendors you prefer."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Back when suites were popular, building a stack was just not practical for most businesses. Nowadays, vendors are building products with the expectation that companies will integrate them with other products. Moreover, delivering those products through a cloud-based infrastructure means that businesses need not support multiple products built with different technologies. That’s the world enabled by MACH."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For businesses that aim at building a technology stack of products that meet their unique requirements, MACH provides the foundational architecture. Therefore, if you buy a CMS, a personalization tool, and an enterprise module built on MACH principles, you can seamlessly and consistently connect them all."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Still, the suite approach continues to predominate, and businesses often adopt it even while designing a modern, composed architecture. That practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Uniform as the infrastructure of composable systems"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform offers a fast track to composability by handling all the difficult and time-consuming integration tasks, personalization settings, etc., so that you can focus on critical undertakings like web design and content creation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Remarkably, Uniform offers composability right out of the box. You get to select the components that you want in your stack, and we handle all the connections and orchestration. You need not build this complex but valuable integration yourself."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To recap, building composable systems on a MACH architecture is a modern, sustainable approach that resolves the difficult problems organizations have accepted as a natural part of working with enterprise software. With composability, you can build stacks with tools of your choice. The MACH architecture makes all that happen in a sustainable, scalable manner, and Uniform provides the infrastructure for orchestration across your MACH platforms."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mach-architecture-explained","depth":2,"text":"MACH architecture explained"},{"id":"mach-as-an-evolution-of-monoliths","depth":2,"text":"MACH as an evolution of monoliths"}]}},"_type":"markdown","_id":"content:4.writing:mach-versus-monolithic-suites.md","_source":"content","_file":"4.writing/mach-versus-monolithic-suites.md","_extension":"md"},{"_path":"/writing/make-the-web-greener-luxury-edition","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Make the Web Greener, Luxury Edition","description":"If the internet were a country, it would be the world’s sixth biggest polluter. The...","id":1406180,"slug":"make-the-web-greener-luxury-edition","date":"2023-03-18T22:30:27Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3e00qrk4jojitb5tu06.jpg","canonical_url":"https://www.valtech.com/insights/make-the-web-greener-luxury-edition/","tags":["webdev","environment"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter"},"children":[{"type":"text","value":"If the internet were a country, it would be the world’s sixth biggest polluter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The internet consumes around 416TWh per year in electricity. That number does not say much until you compare it to the 300TWh the United Kingdom consumes. These are staggering numbers, and they will only go up as the internet keeps growing. Whether you realize it or not, carbon emissions are generated all over the place."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that is 211 kg CO2 per year or about twice the weight of a professional basketball player. This is more carbon than ten trees can absorb. If you think about how many websites we have on the internet, this comparison paints a pretty scary picture."}]},{"type":"element","tag":"h3","props":{"id":"the-luxury-dilemma-the-rich-experience-and-fast-page-loads"},"children":[{"type":"text","value":"The Luxury Dilemma: The Rich Experience and Fast Page Loads"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every web page is crafted with art-directed elements that tell the right story. Luxury product pages are rich experiences that make the user linger and enjoy the ride. This approach is great for the potential customer, but there is a dark undertone when we consider the environment. These pages are full of heavy images, videos and animations. The heavier the page, the more carbon is emitted. If pages take longer to load, the emissions go up due to more device usage–and the antenna and screen are used for a longer period too."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are some conflicting goals within luxury on the web. We want a rich experience, but we also want hyper-fast page loads. We all know that slow pages mean more user drop-off. And to make matters worse, we also need to think about the environment. We need to contain how much carbon is blasted into the atmosphere when someone visits a page."}]},{"type":"element","tag":"h3","props":{"id":"how-to-reduce-carbon-emissions-from-your-website"},"children":[{"type":"text","value":"How to Reduce Carbon Emissions from Your Website"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The above describes a complicated mix of problems to solve. We know that carbon emissions are lowest if:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A page is fast to find"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The page loads fast and with little resources"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Users stay on a page for a very short time"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"These three points are hard to carry out in the current way of working in luxury. That is not because we do not know how to build websites but because the goals are different. We want visitors to explore the brand, linger and become influenced by the product story. They should become lifelong customers. Sadly, this goes against what is best practice for websites with a low carbon footprint."}]},{"type":"element","tag":"h3","props":{"id":"being-sustainable-without-compromising-quality"},"children":[{"type":"text","value":"Being Sustainable Without Compromising Quality"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But fear not: There is a solution that can get us much closer to being sustainable. We can even keep the same level of quality we have now. In addition to being greener, this solution makes our websites more accessible to people in upcoming markets. The answer is: optimization of image and video delivery. We solve the problem by reducing excess and only loading what is needed in the context of the user."}]},{"type":"element","tag":"h3","props":{"id":"are-we-there-yet-optimizing-media-asset-delivery"},"children":[{"type":"text","value":"Are We There Yet? Optimizing Media Asset Delivery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most traditional CMS systems focus on content editing or cataloguing of content and not on serving of content per se. Serving the content is part of the suite of tools in the platform, but the focus tends to be on other aspects. We call this the “best-of-suite” approach where one vendor deals with all aspects of the website."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nowadays, there are companies that solve specific problems within the eco-system of websites. We call these “best-of-breed” solutions, and they tend to be cloud native SaaS companies. Among these companies, there is a category that only deals with media asset delivery."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Images and videos are particularly hard. If we ask a content editor, filmmaker, or web developer how to optimize assets for the web, they generally do not know. The same goes for the best-of-suite CMS systems. They do not specifically optimize assets for the web—they serve them as is."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This leaves the responsibility to the content editor. We have seen people struggle with photoshop and not know how to optimize an image. Teaching courses and paying for Adobe licenses is commonplace and awfully expensive."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Fortunately, there is a plethora of ways to optimize images and videos for the web—and the SaaS solutions mentioned above take care of the problem for you. They serve assets in the right format for the user’s context (browser, device, resolution). And they reduce the file size with AI to be indistinguishable from the original—doing this by hand as a content editor is impossible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We have had projects where the page weight dropped by 90 percent without loss of quality. Content editors would only upload the original image and the system did the rest."}]},{"type":"element","tag":"h3","props":{"id":"loading-the-right-assets-in-the-context-of-the-user"},"children":[{"type":"text","value":"Loading the Right Assets in the Context of the User"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to serving optimized assets, the most gain is made when not serving them at all. As funny as this may sound, it is the most effective way to have a low-carbon website. If a user never scrolls down or never opens the big mega menu, what is the use in loading these assets in the first place? You should only load assets you know the user will see. We call this “lazy loading,” and it is one of the most powerful tools in the bag of tricks of web developers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to lazy loading, it is also important to load assets in the right context. If a user visits your website on a phone, make sure to load an image with the same resolution the phone has. Loading bigger assets unnecessarily degrades the user experience. It also makes the website have a higher carbon footprint due to excessive file size."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The same goes for file types. If you want an animated background image on the hero banner (we all do), do not use a GIF, but rather a video. GIF’s are about five times as big as videos and tend to not work well on mobile devices."}]},{"type":"element","tag":"h3","props":{"id":"looking-ahead-on-website-sustainability"},"children":[{"type":"text","value":"Looking Ahead on Website Sustainability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We cannot always optimize our web pages according to the best practices for low-carbon websites. This is just the nature of luxury. But we can focus on smaller parts of the equation that have a huge influence on how sustainable the website is. All of this can be accomplished without compromising on quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Look at the future and choose a best-of-breed solution that handles one of the most complex parts of the web: images and media. By combining optimized assets and lazy loading we make our pages lighter. This means they are more accessible to new customers in emerging markets."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And wouldn’t it be nice if content editors did not need photoshop licenses anymore? The overhead of training and the extra process is not worth it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Instead, have your media delivered by a specialized solution—Mother Nature will thank you for having a low-carbon website."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter","depth":2,"text":"If the internet were a country, it would be the world’s sixth biggest polluter.","children":[{"id":"the-luxury-dilemma-the-rich-experience-and-fast-page-loads","depth":3,"text":"The Luxury Dilemma: The Rich Experience and Fast Page Loads"},{"id":"how-to-reduce-carbon-emissions-from-your-website","depth":3,"text":"How to Reduce Carbon Emissions from Your Website"},{"id":"being-sustainable-without-compromising-quality","depth":3,"text":"Being Sustainable Without Compromising Quality"},{"id":"are-we-there-yet-optimizing-media-asset-delivery","depth":3,"text":"Are We There Yet? Optimizing Media Asset Delivery"},{"id":"loading-the-right-assets-in-the-context-of-the-user","depth":3,"text":"Loading the Right Assets in the Context of the User"},{"id":"looking-ahead-on-website-sustainability","depth":3,"text":"Looking Ahead on Website Sustainability"}]}]}},"_type":"markdown","_id":"content:4.writing:make-the-web-greener-luxury-edition.md","_source":"content","_file":"4.writing/make-the-web-greener-luxury-edition.md","_extension":"md"},{"_path":"/writing/my-fitness-story","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"My Fitness Story","description":"From fat and sick to slim and happy Aside from a short period in high school I have always...","id":1406186,"slug":"my-fitness-story","date":"2023-03-18T22:39:46Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86xayxbotaqwk8get75h.jpg","canonical_url":"https://dev.to/timbenniks/my-fitness-story-1p97","tags":["fitness","personal"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"from-fat-and-sick-to-slim-and-happy"},"children":[{"type":"text","value":"From fat and sick to slim and happy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Aside from a short period in high school I have always been a chubby kid. When I lived at home my mom made sure I didn’t go overboard with food. She stopped me here and there when needed and always made sure we had healthy food on the table."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After highschool I started living on my own and became a lot more active as a musician. I got used to a very burgundian lifestyle and started eating all kinds of junk. The free drinks for musicians also didn’t help."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have always been interested in muscles and posture but never had the discipline to change myself into something I liked. I quickly turned into a lazy musician. Beer and fast food, either before or after a gig, were the norm. I didn’t know any better and ate highly refined foods containing a shitload of ingredients with long and incomprehensible names. Looking back it’s unbelievable how little I knew about stuff I put in my body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Being fat was always in the back of my mind and it nagged at me. When I reached 120kg I felt horrible and knew change was needed. I was always sweating, tired and out of breath. I had high blood pressure and was often feeling ill. Diabetes type 2 was creeping up on me."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"fat","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z7h5x2kxppg53w4is65y.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even after this turning point I was still completely inadequate at sports and I didn’t have any discipline. I didn’t even know how to properly contract my muscles to lift something. I had no body sense at all."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I asked my mate "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/chrisfinch","rel":["nofollow"]},"children":[{"type":"text","value":"Chris"}]},{"type":"text","value":" to help me out. He was (is) a complete legend and instantly jumped at the chance to help a friend. We started doing his “half hour of power”, lifted weights and ran as often as possible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Well, I tried."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I had excuses. Many of them. “But I had a gig last night” or “I’m still too sore from last week”. I was a complete pussy and it must have frustrated Chris. But he was strong and pulled me through."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As I finally saw some results I overcame my disciplinary problems step by step. I changed my diet and the fat started coming of quickly. I even gained some muscle."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started researching and a whole world of bro-science opened up to me. I did programs like P90X, 5x5, and 4-hour body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"weightloss","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0wcd7nly7arzfjs9glt.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The thing that helped me most was my Facebook activity. I posted my weight daily. People would respond if it went up or down and it kept me motivated. This was the first time in my life peer pressure actually had a positive influence on my state of mind."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"weightloss","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8oa7r37rqrhgldhtegpd.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"guitars","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4yyrv0qc0q0r59piv0n.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In April 2014 my wife and I moved to Paris. At that point I was vegan for half a year and I was at my lightest weight since I started training. We had to deal with different stress factors when we arrived and I let go of the strict livestyle a little and gained some weight again. The cheese, wine and French baguettes are too awesome not to enjoy. In January 2014 I got up to ~95kg and Paris had officially turned me into a croissant."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But I wasn’t a croissant for long. I started lifting some weights again and slowely started to get back into it. When the marathon passed by our apartment in Rue Saint-Antoine in April 2014 I signed up on the spot. I became a long distance runner over night. New goals were set, and crushed over the proceeding six months."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oph2vujeha2kjojtab6i.jpg","width":1280},"children":[]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"from-fat-and-sick-to-slim-and-happy","depth":2,"text":"From fat and sick to slim and happy"}]}},"_type":"markdown","_id":"content:4.writing:my-fitness-story.md","_source":"content","_file":"4.writing/my-fitness-story.md","_extension":"md"},{"_path":"/writing/new-job-alert","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"New job alert!","description":"After an exciting journey at Uniform, it's time for a new adventure. At Uniform, we thrived during...","id":1569148,"slug":"new-job-alert","date":"2023-08-16T13:42:10Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadfg5ciysfamka395zir.png","canonical_url":"https://dev.to/timbenniks/new-job-alert-443n","tags":["career","webdev","devrel"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After an exciting journey at "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"]},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":", it's time for a new adventure."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At Uniform, we thrived during the pandemic, hiring the best talent remotely and finding success in a new product category. I not only learnt a lot but also created value towards company perception and trust along the way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Inspired by the startup life, I wanted a new challenge at a company further along their journey. "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"]},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" caught my attention with its product-led growth, open source SDKs, solid product-market fit, and strong fit for developer relations."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I'm excited to join Hygraph as the Developer Relations Lead for Outreach and Awareness. With 15 years of agency experience, deep knowledge of the developer space, and connections within the MACH alliance, I'm confident in bringing my skills to this product-led growth company."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Working alongside experienced professionals like "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/bryanlrobinson/","rel":["nofollow"]},"children":[{"type":"text","value":"Bryan Robinson"}]},{"type":"text","value":" (Orbit, Algolia, Sanity) and "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/lowisren/","rel":["nofollow"]},"children":[{"type":"text","value":"Lo Etheridge"}]},{"type":"text","value":" (Sanity, and many other dev gigs), I'll be part of Hygraph's developer relations team within the larger marketing organization led by "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/omergokcetumer/","rel":["nofollow"]},"children":[{"type":"text","value":"Omer Gokce Tumer"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph is at the forefront of the composability and content federation space. They provide a solution to the challenges faced by scaled headless architectures, bringing stability and flexibility. Companies like Netlify, Conscia, and Octoo have embraced Hygraph's approach to content federation, validating the category."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you're seeking content federation at scale, Hygraph has a remarkable head start and addresses the current code-first problems in the MACH architecture space."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I'm eager to get started and can't wait for what lies ahead. See you soon!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Cheers,\nTim"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:new-job-alert.md","_source":"content","_file":"4.writing/new-job-alert.md","_extension":"md"},{"_path":"/writing/the-2015-paris-maratho","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The 2015 Paris marathon","description":"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue...","id":1406188,"slug":"the-2015-paris-maratho","date":"2023-03-18T22:45:48Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furlbqaankzj82uhwrfq7.jpg","canonical_url":"https://dev.to/timbenniks/the-2015-paris-marathon-i0l","tags":["personal","fitness"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue Saint-Antoine. Seeing all these people swooshing by impressed me so much that I signed-up for the 2015 marathon on the spot. The goal was set, the easy part was over."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gu3psk58kwz3gfppsmc8.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I gave myself five months to conquer the beast. 42.195 kilometres. After running on and off for a couple of years it was time to get serious. As I work for AKQA I naturally chose to train with the Nike+ app and all the related products."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nike’s marathon training program was brutal. Even at the rookie level it made me run five times a week from the get-go. After living the good life for eight months in Paris both my endurance and cardio vascular strength were shit. It’s safe to say I was happy that the distances were short for the first couple of weeks."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I didn’t have any specific goals in mind, just general stuff like: “I want to get a bit lighter so the running gets easier” or “I’d love to set a new half marathon personal best at one point”. I trusted the rigorous training schedule would get me there eventually."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It didn’t. The training was so intense that I had skip workouts and I had to start experimenting with food to figure out how I could get my legs ready for the next run. My body could just not cope with the sheer amount of kilometres I had to run each week."}]},{"type":"element","tag":"h3","props":{"id":"january"},"children":[{"type":"text","value":"January"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After two months of pain I had finally found a balance. Turns out that eating super low fat and high carb was the best for my recovery. I was basically eating according to the 80/10/10 principle. 80% carbs, 10% fats, 10% protein. I’m not preaching this way of eating, it was just great for me."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"January","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9z60d58hzj247adpsmsn.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To achieve eating this macro ratio I had to cut out all animal products. If I ate too much fat on a rest day, like when you go out to dinner and you don’t want to be the asshole who can’t eat anything, I would have heavy legs the next day."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started eating copious amounts of fruit, rice, pasta, quinoa and veggies. My brain started functioning ten times better and I didn’t even think about coffee anymore. January was awesome. I ran pain free and the long distances started to become enjoyable. Good times. I ran 147km that month. This might not seem a lot to seasoned runners but I came from ~50km a month. I started a new chapter in my running career."}]},{"type":"element","tag":"h3","props":{"id":"february"},"children":[{"type":"text","value":"February"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We went on a ski trip in the beginning of February. I was an amazing holiday with loads of skiing, good food and laughs. I did some workouts in the gym and a proper mountain walk. I really hoped I hadn’t lost my running gains."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"February","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etfg0xoxax0zbyzrmcig.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first Monday back I had a nasty cough but decided to at least try my fast 8km run I had planned for that day. Bad decision. Over the course of the week I developed a bronchitis and both the doctor and my wife (the boss and a bad ass physiotherapist) forbade me to run the following two weeks."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I slept a lot and kept on eating well and as soon as the illness lifted I started running short distances again. I cursed my way through the first week. Even though the running hurt, my pace was still fast."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In February I ran the awesome amount of 37.98km over five runs. The last of the five was the most painful 15km run of my life. We’d strolled around “Le Salon d’Agriculture” for three hours before. We tasted wines and tried cheeses. I had forgotten to drink any water. Rookie mistake. Lactic acid legs for days!"}]},{"type":"element","tag":"h3","props":{"id":"march"},"children":[{"type":"text","value":"March"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Back to awesome. I ran 181km in 4 weeks. An absolute record month in my book. I had an amazing run in Amsterdam on which my whole family followed me by bike. I also ran personal bests on the 5km, 10km, 15km and 21km. I decided to drop the Nike+ program as I had missed too much the month before. This was a smart move. The Nike+ program would have burnt me out."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I had been in training for 4 months by now and I had been sick the month before. The exhaustion was setting in a bit. I didn’t particularly feel it in my legs, but I started having problems staying focused on evening runs. One time I had to jump aside while a policeman was arresting someone. I flipped my ankle and had to walk home for an hour."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"March","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r8u4pxda4nalwwa4x0o.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I felt stupid for being distracted. Even though I had super light shoes without much cushioning I stopped being in touch with the ground I was running on. Sounds like I’m a hippy aye? It’s a runners thing."}]},{"type":"element","tag":"h3","props":{"id":"april"},"children":[{"type":"text","value":"April"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Only two weeks left. I did a 27km run in a very busy, rainy and hilly Paris. After that I was so exhausted that I decided to start my tapering period a week early. I thought I’d hurt my feet too much and suddenly got very nervous. My marathon veteran colleagues told me this is normal and I should just chill out."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I only ran a handful of runs up until the big day. The thing I liked most about the tapering period was the carbo-loading. My food intake doubled in the week before the big race. #CTFU. I felt amazing and started dropping weight. I should have eaten much more the past four months."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"April","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4p4xky34q3vxlhfcgfg6.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"d-day"},"children":[{"type":"text","value":"D-DAY"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I was so nervous I hardly even looked at the enormous amount of runners around me. I was standing on the Champs-Elysees with 50.000 other athletes. This was going to be the most epic challenge of my life."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"D-DAY","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qsgkyqt7mudojkqok6z.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first bit felt like heaven. Especially because my mate "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/chrisfinch","rel":["nofollow"]},"children":[{"type":"text","value":"Chris"}]},{"type":"text","value":" had just given me an amazing pep-talk over the phone. The Champs Elysees was mine and mine alone. Turns out I clocked the first kilometre at a 6:12 pace. Slow as fuck but a nice start to a long day. After that I slowly picked up the pace to a nice average between 5:25 and 5:35."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Around the 7km point my awesome friend "},{"type":"element","tag":"a","props":{"href":"https://www.instagram.com/henrike.theda.klug/","rel":["nofollow"]},"children":[{"type":"text","value":"Henrike"}]},{"type":"text","value":" spotted me from the sidelines and joined me for about 1.5km. We picked up the pace and race had properly started."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It was super warm so I drank water every chance I got. My training had been during winter time so I was used to running with a maximum temperature of 10 degrees celcius. Even though it was warm I ran a great half marathon (for me at least, 01:52:34)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The heat had silently sneaked up on me and at kilometre 22 the wall hit me like a hammer."}]},{"type":"element","tag":"h3","props":{"id":"the-wall"},"children":[{"type":"text","value":"The Wall"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The wall is really the biatch people say she is. I could not even put one foot in front of the other anymore. It took me half an hour to stumble to the next food station. It took 35 minutes to run 3km. I had some water, a sugar cube, a GU gel and a slice of mandarin. Obviously this was way too much so I felt sick for the next 5km. My brain was telling me to stop but I just couldn’t let go."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the following kilometres it didn’t get any better. I managed to find a happy medium in between running and walking. My nike+ app was all over the place and wasn’t accurate at all anymore. At one point I just turned it off and upped my Spotify volume. The next song was by Motörhead and I felt my heart skip a beat. The race was back on.For 2km.After that I went back to my previous state."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"During the five months I trained my wife had always been there for me. She gave me tips and picked me back up when I had hit a low point. When I saw her at kilometre 30 I couldn’t be happier. I gave her a quick kiss and a smile and I was on my way again."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Just before hitting the Bois de Boulogne I became captain slow. I was having a real rough patch when I heard people shout my name. These people were "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/photo.php?fbid=10153775712979392&set=a.10151354689589392&type=1&theater","rel":["nofollow"]},"children":[{"type":"text","value":"Marie and her son Adrian."}]},{"type":"text","value":" It’s great to have the support of your friends. It made me start running again. As it turns out, my wife had been sending loads of photo’s to my family back in Amsterdam. They had been following my every move."}]},{"type":"element","tag":"h3","props":{"id":"bois-de-boulogne"},"children":[{"type":"text","value":"Bois de Boulogne"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Bois de Boulogne was truly intense. They call it “the march of the death” and rightfully so. It starts at kilometre 35, there are hardly any supporters and it’s mostly uphill."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I did the “pain shuffle” for the last 7km. The pain shuffle means that you can’t really bent your legs anymore but you still run. In my case, stumbling without falling. I ran from km sign to km sign without even hearing my music."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When I saw the 40km sign I decided to not walk anymore and I did whatever it took to make that happen. At kilometre 41 I noticed that a lot of the faster runners were coming back to show us their medals and cheer us on. There was an amazing feeling of companionship in the pack of runners."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At kilometre 42 I saw the finish AND my wife at the same time. It was finally over. I didn’t even bother to sprint."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It took me four hours and forty six minutes. A total pain train. While riding home on the metro I felt a little shit because I walked so much. Should I have gone deeper? But while writing this piece, pride is taking over. I actually did this. My first marathon in the heat in under five hours. #putain."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"finisher","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdxzyzf1wztrl220nwa4.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"some-numbers"},"children":[{"type":"text","value":"Some Numbers"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ran 615.14km over 67 runs with an average pace of 05:42"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average distance was 9.18km per run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I went from 95 to 86.7 kilos (and lost all gains)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I slept 7h 50m a night on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ate 1840kcal a day on average (probably not enough)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I took 12609 steps a day on average"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"january","depth":3,"text":"January"},{"id":"february","depth":3,"text":"February"},{"id":"march","depth":3,"text":"March"},{"id":"april","depth":3,"text":"April"},{"id":"d-day","depth":3,"text":"D-DAY"},{"id":"the-wall","depth":3,"text":"The Wall"},{"id":"bois-de-boulogne","depth":3,"text":"Bois de Boulogne"},{"id":"some-numbers","depth":3,"text":"Some Numbers"}]}},"_type":"markdown","_id":"content:4.writing:the-2015-paris-maratho.md","_source":"content","_file":"4.writing/the-2015-paris-maratho.md","_extension":"md"},{"_path":"/writing/the-content-graph-is-the-future","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The content Graph is the future","description":"Content management is as essential as it is complex, especially at scale. As brands grow, they often...","id":1683758,"slug":"the-content-graph-is-the-future","date":"2023-12-05T10:40:00Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ilcbgm74yygk14s4g7.png","canonical_url":"https://hygraph.com/blog/the-content-graph-is-the-future","tags":[],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph."}]},{"type":"element","tag":"h2","props":{"id":"the-emergence-of-new-buzzwords-best-of-breed-and-composable"},"children":[{"type":"text","value":"The emergence of new buzzwords: best-of-breed and composable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you want to learn more details about industry buzzwords, check out this "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords","rel":["nofollow"]},"children":[{"type":"text","value":"blog post"}]},{"type":"text","value":"."}]}]},{"type":"element","tag":"h2","props":{"id":"its-not-all-sunshine-and-rainbows"},"children":[{"type":"text","value":"It’s not all sunshine and rainbows"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Composable challenges","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgy63rwzc7dm5mnmk9wl.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"introducing-the-content-graph"},"children":[{"type":"text","value":"Introducing the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"The Contwnt Graph","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qngsih12lys9s6yww0j.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-benefits"},"children":[{"type":"text","value":"The benefits"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use these one-liners when you talk about this subject to your boss."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"With the content graph, you query only what you need from any source and in the same unified way."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple."}]}]},{"type":"element","tag":"h2","props":{"id":"challenges-and-considerations"},"children":[{"type":"text","value":"Challenges and considerations"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph."}]},{"type":"element","tag":"h2","props":{"id":"the-tech-behind-the-content-graph"},"children":[{"type":"text","value":"The tech behind the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it."}]},{"type":"element","tag":"h2","props":{"id":"a-real-life-use-case-for-the-content-graph"},"children":[{"type":"text","value":"A real-life use case for the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-emergence-of-new-buzzwords-best-of-breed-and-composable","depth":2,"text":"The emergence of new buzzwords: best-of-breed and composable"},{"id":"its-not-all-sunshine-and-rainbows","depth":2,"text":"It’s not all sunshine and rainbows"},{"id":"introducing-the-content-graph","depth":2,"text":"Introducing the content graph"},{"id":"the-benefits","depth":2,"text":"The benefits"},{"id":"challenges-and-considerations","depth":2,"text":"Challenges and considerations"},{"id":"the-tech-behind-the-content-graph","depth":2,"text":"The tech behind the content graph"},{"id":"a-real-life-use-case-for-the-content-graph","depth":2,"text":"A real-life use case for the content graph"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:the-content-graph-is-the-future.md","_source":"content","_file":"4.writing/the-content-graph-is-the-future.md","_extension":"md"},{"_path":"/writing/the-future-of-headless-cms-content-federation-with-graphql","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of headless CMS: Content Federation with GraphQL","description":"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing...","id":1614623,"slug":"the-future-of-headless-cms-content-federation-with-graphql","date":"2023-09-28T14:39:16Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pk8b2ihfddxqlt3w4tu.jpg","canonical_url":"https://hygraph.com/blog/content-federation-with-graphql","tags":["headless","cms","graphql","federation"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing amount of fragmentation in tooling, it offers a way to decouple data and systems, giving organizations more flexibility and agility."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Despite the promise of headless architecture, data, and systems easily become tightly coupled. Whether through custom middleware or frontend stitching, one system can have ripple effects on all others. This can make it difficult to manage and update content and causes technical debt. In the past, I called this the"},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/","rel":["nofollow"]},"children":[{"type":"text","value":" MACH Monolith"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A federated architecture, on the other hand, truly decouples data and systems. Federation is a technique of using autonomous systems to work with the data and logic they’re best suited for. What differentiates that from the MACH Monolith is how the data comes back together. Federation takes these autonomous services and crafts a unified, standardized, and powerful API for use in any application."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While there are many patterns for accomplishing federation, one architecture is Content Federation. Content federation is the process of bringing together content from multiple sources into a single, unified view that can be accessed both at the API layer, as well as at the editor level."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In a federated architecture, the content federation layer brings together content from the different systems. This layer acts as a single point of access for data, making it easy for users to get the content they need, regardless of where it is stored."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A few benefits of a federated architecture include:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increased flexibility and agility: Each system is responsible for its data and logic, which gives them more autonomy and flexibility. This makes it easier to manage and update systems and makes it easier to add new systems to the architecture."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Improved security: A federated architecture can reduce the attack surface. When data and systems are tightly coupled, a vulnerability in one system can compromise other systems. A federated architecture reduces the risk of this happening by decoupling data and systems."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reduced complexity: A federated architecture can simplify how data is managed. In a traditional architecture, data is often stored in multiple systems, making it difficult to keep track of. A federated architecture brings together data from different systems into a single, unified view, which makes it easier to manage, inspect, and use data. The implementation layer has one standardized, unified way to ask for the content."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Overall, a federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Federated Content Platform","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/4wC9B4MBSaZDeQvB26QA","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-importance-of-autonomy-in-a-federated-architecture"},"children":[{"type":"text","value":"The importance of autonomy in a federated architecture"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While most federation articles focus on the benefits of unification, system autonomy is really the key benefit. This autonomy means that systems can be developed and managed independently without worrying about the other systems in the architecture. This can be a major advantage, as it allows organizations to be more agile and responsive to change while still maintaining standards."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This enforced autonomy increases the reach of standardization. In an e-commerce application, product information — pricing, description, categorization — should be standardized wherever it’s used. Without Content Federation, the product data would be re-entered in the systems that don’t house it. When an editor of the blog goes to create a post about a product, they introduce the human potential for error. If they merely select a product from the e-commerce system, they can rely on the owners of that data to keep their data standardized."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When the standards for a particular piece of data changes, the data is changed in the home system, and each other system is ready to receive that change. No additional work necessary."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security. Federation brings autonomy to the data layer while also giving rise to a unification layer Content Federation brings a deeper sense of standardization through systemic change instead of human change. Without autonomy, we have complexity; without unification and standardization, we have glue code. We need both in the modern stack."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-importance-of-autonomy-in-a-federated-architecture","depth":2,"text":"The importance of autonomy in a federated architecture"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-headless-cms-content-federation-with-graphql.md","_source":"content","_file":"4.writing/the-future-of-headless-cms-content-federation-with-graphql.md","_extension":"md"},{"_path":"/writing/the-future-of-jamstack-is-composable","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of jamstack is composable","description":"This post is either for developers who want an “at-scale” overview of modern architecture or for...","id":998786,"slug":"the-future-of-jamstack-is-composable","date":"2022-02-23T13:04:08Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso0lvl9w5rea6i7sfp6u.jpeg","canonical_url":"https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g","tags":["jamstack","architecture","composable","orchestration"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This post is either for developers who want an “at-scale” overview of modern architecture or for technical decision-makers looking at a great way to build a digital pipeline in this new composable world."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire."}]},{"type":"element","tag":"h2","props":{"id":"in-this-article"},"children":[{"type":"text","value":"In this article"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Use the Jamstack with your favourite framework and host on your favourite CDN."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Combining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future."}]},{"type":"element","tag":"h2","props":{"id":"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures"},"children":[{"type":"text","value":"The Jamstack: why it sits front and centre in modern architectures"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sites built with the Jamstack approach are a combination of static files generated by the CI/CD pipeline of your choice. Most dynamic stuff happens in the generation step, where the codebase reaches out to APIs and services to render all pages statically."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Jamstack: build time vs runtime","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpp5kpu4k3wxs91wne0b.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The performance gains alone justify this approach. There is no runtime page generation, and the app doesn’t have to connect to an origin server to figure out what content to serve. If you want to scale up for Black Friday, just put the static files in more places on the CDN edge, and all is well. Next to the performance gains, you also have a much more secure system. If your architecture has an origin server with all the knowledge of the system, that is a weak point for security."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Traditional web vs Jamstack","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp86io6058n938u4dw70.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can add dynamic data as well. CDN providers have built the ability to run code on the edge, implementing serverless functions and edge workers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A serverless function is a service that lets you run code without provisioning or managing servers. Serverless functions tend to be simple and do not have a state. They require an input, and they will give an output. After use, they will not stay up unless you request them to do that. The benefit is that the cost is low and that these functions are not running if not needed - consuming less energy. You can use them when compiling your Jamstack site, but they also work well at runtime."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Edge workers (as Cloudflare calls them) are pieces of code that live on the CDN edge close to the user and execute when a user visits a URL. This is ideal for reading cookie values and changing the stream of HTML that the CDN renders for that page. With this approach, you can dynamically manipulate what the user sees in their context while still serving a static page initially created by your Jamstack site. This approach is excellent for rendering personalised content based on user actions without the need for JavaScript hydration or an origin server."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Add dynamic parts to the Jamstack with serverless and edge compute","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfn819631e7mvnau8mwl.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-orchestration-how-to-cable-manage-your-architecture"},"children":[{"type":"text","value":"The orchestration: how to cable manage your architecture"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How you connect things up before the site is rendered is vital for the platform you are building. There are many technical and organisational problems to address when you scale a composed architecture to big organisations."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Choices, choices, choices: CMS, Commerce, CDN, Marketing clouds, DAM, Personalization, A/B testing, CRM, etc."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration is complex, and orchestration is hard to build."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Often there is a lack of intuitive tools for non-devs to build and manage experiences."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Early implementation decisions can limit the ability to change and evolve."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Wrong choices can create developer bottlenecks and hinder time to market and agility."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The bigger the organisation, the more critical this statement becomes: "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"To achieve true value, you need to orchestrate technology, people, and processes."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The digital pipeline can be stalled at many places. You’ll need a platform to help you orchestrate the whole architecture into a usable system for all stakeholders. A cohesive system has the ability for multiple systems to work together as one - for each system to have an awareness of what the other systems are doing. This same story goes for the practitioners in the system. From developers to content editors and from marketers to data analysts. All these people play a vital role in your online success."}]},{"type":"element","tag":"h3","props":{"id":"the-platform-we-need"},"children":[{"type":"text","value":"The platform we need"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The platform we need has to be “opinionless” and technology agnostic. Its primary goal is to cater to all stakeholders and prevent re-platforming."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Services integrators or agencies often use the “re-platform” model. Out with the old monolith and in with the new monolith. This way, they can sell their business transformation story and do a big bang release. The drawback here is that re-platforming takes a long time and is costly. It is also the complete opposite of an agile approach to a project. Agencies tend to be \"platform partners\" and sell in a platform first solution rather than a specific value solution to a brand. This is logical as they can hire specialists that retain their value project after project. However, modern architectures demand making choices for the business's needs, not what the agency or software vendors want to sell in. Square pegs and round holes could work for a while until it’s too hard to manage, and then you re-platform. Again…"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The orchestration platform should support end-to-end delivery of digital products:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Development"}]},{"type":"text","value":": developers build components that incorporate content from multiple sources without building custom integrations."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Authoring"}]},{"type":"text","value":": practitioners build personalised digital experiences using no-code tools, including instant preview without involving developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Deployment"}]},{"type":"text","value":": developer and practitioner activities automatically trigger deployments to your CDN of choice to ensure digital experiences are always current."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Delivery"}]},{"type":"text","value":": Personalization and experimentation is delivered from the edge for the fastest possible performance."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The key is the “power of choice” for the tech stack, hosting / CDN, data fetching and what integrations are used. The point is that you as a technical stakeholder can choose when to add, remove or scale something without being held back by the system. There is no vendor lock-in, roadmap constraints, and re-platforming (swap an integration, migrate the data, and change some data mapping code)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"What a composable orchestration platform looks like","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvs9u5inctpg4f7iiu9h.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"data-fetching-approaches"},"children":[{"type":"text","value":"Data fetching approaches"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flexibility in how data is fetched from different sources is vital for the longevity of an orchestration platform. The platform SDK should not apply any opinion on how data is fetched. It offers an SDK that helps developers fetch it the way they want."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s essential that page compositions only point to data sources and that the platform itself does not store anything except for the identification of the component it references. The benefits are:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t store potentially sensitive data;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t duplicate content;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t have to know when data changes in the external source;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The platform does not have to serve the data and ingest the SLA provided by the source data it delivers."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s up to the developer to use the platform SDK to retrieve the compositional data and use platform provided helper tools to query the different API endpoints. The beauty of this approach is that the SDK and how the data is fetched can live anywhere. From the local codebase to an external middleware layer or a serverless function. There are some benefits to positioning the data fetching outside of your codebase:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You can hire separate developers who only focus on the API and the data mapping to the desired format. This separates concerns between disciplines, and back-end developers now have a place where they can feel at home."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The front-end application doesn’t need to know what external sources are queried. It queries one endpoint that returns the desired format for the front-end components to render."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A standalone front-end without knowledge of what external APIs feed it is highly flexible, future-proof, and hard to hack. Imagine a design system full of components with excellent documentation of what properties they need and a simple SDK to query data and map it directly to these properties. If you have to switch CMS or commerce engine, it’s a matter of remapping the data to the component properties and you are done."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data fetching in a composable orchestration platform","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u75kbivciz0ayqg3t7fd.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"concluding"},"children":[{"type":"text","value":"Concluding"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To successfully manage your digital pipeline, we need orchestration that adds structure to the stack, making it easier to align API first sources toward the same business goal and empowering all of the various teams contributing to the end product - developers, content authors and marketers. To keep the digital pipeline productive as new technologies emerge, you need orchestration that gives freedom of choice in every aspect of the architecture both today and tomorrow."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Imagine if marketers and developers could be friends again and work together to create the best experience for their website visitors?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"in-this-article","depth":2,"text":"In this article"},{"id":"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures","depth":2,"text":"The Jamstack: why it sits front and centre in modern architectures"},{"id":"the-orchestration-how-to-cable-manage-your-architecture","depth":2,"text":"The orchestration: how to cable manage your architecture","children":[{"id":"the-platform-we-need","depth":3,"text":"The platform we need"},{"id":"data-fetching-approaches","depth":3,"text":"Data fetching approaches"}]},{"id":"concluding","depth":2,"text":"Concluding"}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-jamstack-is-composable.md","_source":"content","_file":"4.writing/the-future-of-jamstack-is-composable.md","_extension":"md"},{"_path":"/writing/the-future-of-managing-projects-at-agencie","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of managing projects at agencies","description":"Calling for a revolution in how agencies run tech projects I spent a lot of time working...","id":1405725,"slug":"the-future-of-managing-projects-at-agencie","date":"2023-03-18T12:56:10Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipu6a76iegjp4d19mb0u.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/the-future-of-managing-projects-at-agencies","tags":["composable","architecture","agency","process"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"calling-for-a-revolution-in-how-agencies-run-tech-projects"},"children":[{"type":"text","value":"Calling for a revolution in how agencies run tech projects"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I spent a lot of time working through messy production processes during my years at digital agencies. From single campaigns to building 800+ websites for a brand and its sub-brands, easier processes would have been better for the final result and my hairline. I’m so excited to work with new technology that will change the game for managing agency processes—making everything from delivery to collaboration much easier and faster."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have no illusions that I can fix everything—but I hope that you read this with an open mind and see that a better way is possible. Agency processes are ever-changing, and things always seem to fall apart as deadlines near. Nonetheless, by following what I describe below, you can deliver faster from day one and show results to clients for better feedback, all while setting up brands with a future-proof architecture. And yes, you can stay agile at the same time!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Why agencies embracing composable architectures face challenges"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Agencies that start working with "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architectures"}]},{"type":"text","value":" quickly see the benefits during the pitch stage, but when the work starts, so do the problems—mainly when you connect services and when content editors or marketers start working. Because projects are complex, agencies generally sell discovery phases, workshops, and agile methodologies. That’s a great practice, but one that also runs face-first into the challenge of building composable projects at scale."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here are two key issues:"}]},{"type":"element","tag":"h3","props":{"id":"the-way-agencies-work-makes-parallel-collaboration-difficult"},"children":[{"type":"text","value":"The way agencies work makes parallel collaboration difficult."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, choosing a CMS or front-end framework depends on the discovery phase or finalization of a client contract. When a CMS or a design is ready, front-end developers can start building the interface, and back-end developers can commence data modeling. QA always happens at the end, inevitably spilling over into the next sprint."}]},{"type":"element","tag":"h3","props":{"id":"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way"},"children":[{"type":"text","value":"The architecture is code-first, i.e., composed of glue code that works in only one way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As you scale that up, things get very painful very fast. "}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Abstract, code-first systems aren’t built for content editors. At best, they tolerate them. Given that it’s hard to deliver great work while constantly fighting with your own tools, people become upset and less productive, or they leave. Either result can cause major project delays."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers are constantly involved with the publication process because content editors need technical support to create experiences. That means that developers are kept from building new, value-adding features and pursuing innovation, and every sprint is filled with unpredictable disruption."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A tech stack connected through tightly-coupled integration code is way worse than the legacy monoliths. If things go wrong, no sole organization is at fault. Instead, the people with the overall responsibility—the agency—are held accountable."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"That glue code I mentioned before? It sticks "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"hard"}]},{"type":"text","value":". You must prepare for pain when you try to replace a single headless source in a web of hard-integrated sources and front-end code. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There is a better way, but it requires a major shift in your thinking."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How a great DXCP unlocks parallel workflows"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Time-to-value is much more critical than time-to-market. Going to market quickly with a terrible product doesn’t do much more than damage your reputation and annoy customers. The fact you least did it quickly won’t be much consolation to anyone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The secret for time to value is working more in parallel. Of course, that’s much easier said than done for difficult tasks like ideation of page composition, component definition, data-model design, CI/CD setup, and, concurrently, choice of the front-end framework. Fortunately, cool new tools are around to make it much easier. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To work in parallel, first, integrate design-related data into your process with a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":". Design data presents your content in a certain way in the context of each page and potentially for each audience. For example, a featured product shows as being featured because you tell the page to feature it in that specific way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On the other hand, the product data comes from your commerce engine, which just serves the product info and has no knowledge of whether the product is featured on a page. The DXCP orchestrates and links your design to the external source(s) that hold your data. This crucial context step allows you to work effectively in parallel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note the difference between domain data and design data. With a DXCP, you design pages based on the components that make up a page. You can link each component to a resource, i.e., an external API like a headless CMS, DAM, PIM, or a legacy system. Your domain data resides in those systems. You then bind the external API data to parameters and fields on the components in the DXCP to create the final experience for your audience on a channel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can set up connections with DXCP so that the system acts as an API data aggregator that loosely couples to external sources. Additionally, you can establish access rules that define which users can add resources and bind to components. For example, content editors could add the Instagram API and feed that data to a component for campaign pages without developer assistance. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once resources are bound, API results are cached at the CDN edge for fast and easy querying. Developers only need to connect to the CDN endpoint to access the data from all the sources that channel data to the components on the page."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even without a CMS, content editors can fill in the component fields with content, accelerating the UX and prototyping phases of a project. Once a CMS is in place, the content connects as a resource to a component without the need to rebuild the component. For efficiency, you can configure the fields to be dynamic. No coding is required."}]},{"type":"element","tag":"h3","props":{"id":"how-a-dxcp-enables-parallel-collaboration"},"children":[{"type":"text","value":"How a DXCP enables parallel collaboration"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you know what kind of components you need or have a library like "},{"type":"element","tag":"a","props":{"href":"https://www.kickstartds.com/","rel":["nofollow"]},"children":[{"type":"text","value":"kickstartDS"}]},{"type":"text","value":" or "},{"type":"element","tag":"a","props":{"href":"https://tailwindui.com/","rel":["nofollow"]},"children":[{"type":"text","value":"Tailwind UI"}]},{"type":"text","value":", you can configure them in the DXCP and start composing pages—with no need for a CMS initially. Simultaneously, the back-end team can select the headless tool while the front-end team can choose a front-end framework and start querying the composed pages. The QA team can start testing the front end as soon as the first few pages have been created with the component library."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Since the DXCP does not dictate what kind of hosting or CI/CD stack is needed, the DevOps team can work on the setup while the rest of the process is proceeding. Once you install the CDN integration, anyone with the appropriate access privileges can handle releases. Can’t find the prebuilt integration? Build your own, or just add a few webhooks for communication."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On top of that, DXCPs also feature a project map as a basis for creating pages and subpages. The product owner can start building user journeys in the same system while all the other operations are going on. Say goodbye to journey spreadsheets because you can now use the tool you will also use when teh project is in production."}]},{"type":"element","tag":"h3","props":{"id":"how-to-ensure-the-architecture-is-divisible-and-maintainable"},"children":[{"type":"text","value":"How to ensure the architecture is divisible and maintainable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Due to the nature of DXCP, you don’t need to interconnect external tools; they all talk directly to the DXCP. Likewise, changing or adding headless sources does not affect developers in nearly the same way. Without developer involvement in the no-code editor, universal previews, and project maps, content editors are much more productive. Business users don’t need to ‘publish and pray’ when they build a page from multiple sources—it’s all right there."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, since the no-code editor integrates flawlessly with external sources and normalizes their interfaces, content editors don’t need to understand how those systems work—making it far easier to onboard new team members. Add that to the freedom of grouping components together and easily personalizing those sources; business users are empowered to own their workflows and results without depending on overworked devs. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given that DXCP is front-end, hosting, and CDN agnostic, developers can use the tools they love, which makes the most sense for the job at hand. No more compromising with the whims of legacy tech! Even though DXCP has an opinion on the direction of the architecture, once developers go down that road, they have complete freedom to do their job in the way they prefer."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How DXCP transforms the project-development process"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Adopting DXCP can revolutionize how you build projects—if you let it. With traditional blockers out of the way, teams can accomplish more in parallel and show value much faster. For all that composable architecture at scale is generally messy and chaotic, forcing agencies and brands to work around issues never seen before: digital experience composition adds structure while staying tech-agnostic and accelerates time-to-value."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter how much things change, some things stay the same. The agencies that best embrace new technologies and new mindsets to maximize their impact will gain an edge in the market. As the market gets less certain, finding ways to deliver more value for clients faster and effectively showcase it will be crucial. When that also creates a platform that will deliver in the long term and position your agency as a key strategic partner—that’s where the magic happens. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"calling-for-a-revolution-in-how-agencies-run-tech-projects","depth":2,"text":"Calling for a revolution in how agencies run tech projects","children":[{"id":"the-way-agencies-work-makes-parallel-collaboration-difficult","depth":3,"text":"The way agencies work makes parallel collaboration difficult."},{"id":"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way","depth":3,"text":"The architecture is code-first, i.e., composed of glue code that works in only one way."},{"id":"how-a-dxcp-enables-parallel-collaboration","depth":3,"text":"How a DXCP enables parallel collaboration"},{"id":"how-to-ensure-the-architecture-is-divisible-and-maintainable","depth":3,"text":"How to ensure the architecture is divisible and maintainable"}]}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-managing-projects-at-agencie.md","_source":"content","_file":"4.writing/the-future-of-managing-projects-at-agencie.md","_extension":"md"},{"_path":"/writing/the-lost-promise-of-headless","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The lost promise of headless","description":"In recent years, headless technology, which boosts performance, developer experience, and...","id":1517485,"slug":"the-lost-promise-of-headless","date":"2023-06-26T18:18:19Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrvfb6a8wh5lt0mbyzat.png","canonical_url":"https://uniform.dev/blogs/the-lost-promise-of-headless","tags":["headless","architecture","mach"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In recent years, headless technology, which boosts performance, developer experience, and best-of-breed headless systems, has gained significant traction in web development. At its core, headless streamlines and accelerates the process of building and delivering web experiences  through APIs, which separates content creation and management from presentation. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, despite the excitement and promise, headless technology has fallen short in living up to its potential in several key areas."}]},{"type":"element","tag":"h2","props":{"id":"technical-complexity"},"children":[{"type":"text","value":"Technical complexity"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The primary appeal of headless technology lies in decoupling content creation and presentation, as a result of which developers can work on the presentation layer with their preferred tools and frameworks while content editors can focus on building and managing content. However, that separation comes at a cost. Specifically:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To connect the multiple layers, a significant amount of code must be written, which leads to technical debt, a heavier workload, and inflexibility. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Adding data to content models to address design-driven choices for an output channel, e.g., checkboxes to enlarge an image, pollutes the data model. The more design-related and channel-specific data you add to content models, the more technical debt you create."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"If you must connect a different data source to the same front-end component, but the content models do not align, issues arise. "}]}]},{"type":"element","tag":"h2","props":{"id":"content-editing-challenges"},"children":[{"type":"text","value":"Content-editing challenges"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another major challenge with headless technology is the disconnect between content editors and the systems they work with. Due to the abstract nature of headless CMS, content editors often struggle to pinpoint how their content will be displayed on the front end, leading to confusion, frustration, and a steep learning curve for novices."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, the lack of a clear connection between content and presentation makes it difficult for content editors to preview their work and ensure that it looks and functions as intended. A suboptimal user experience results, let alone a time sink for revisions and troubleshooting."}]},{"type":"element","tag":"h2","props":{"id":"the-way-forward-dxcp"},"children":[{"type":"text","value":"The way forward: DXCP"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Without question, despite the promise of headless technology for revolutionizing the way we build web experiences, serious hurdles remain. To overcome them, tools and processes that facilitate team collaboration and streamline the development process are necessary so that developers and content editors can work closely together to bridge the gap between content creation and presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A proven solution is a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":", which seamlessly integrates content and presentation. While on that platform, nondevelopers can visually create and manage digital experiences with content from multiple sources, delivering those experiences agnostically to a front-end of choice, significantly reducing technical debt, and gaining flexibility. Businesses can then adapt and innovate much faster, especially since the connection to all headless systems and APIs occurs in the DXCP, and the code remains clean."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What’s more, the incorporation of a DXCP into the development process affords content editors a clear view of how their content will be displayed and the ability to interact with the presentation layer. Plus, the absence of data silos means a more streamlined and efficient workflow as well as a more intuitive user experience for both content creators and developers."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"technical-complexity","depth":2,"text":"Technical complexity"},{"id":"content-editing-challenges","depth":2,"text":"Content-editing challenges"},{"id":"the-way-forward-dxcp","depth":2,"text":"The way forward: DXCP"}]}},"_type":"markdown","_id":"content:4.writing:the-lost-promise-of-headless.md","_source":"content","_file":"4.writing/the-lost-promise-of-headless.md","_extension":"md"},{"_path":"/writing/the-mach-monolith","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The MACH monolith","description":"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take...","id":1399535,"slug":"the-mach-monolith","date":"2023-03-13T20:20:45Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdj396fv4iyh8zce4rsg.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/the-mach-monolith","tags":["architecture","composable","webdev","javascript"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take action. Now that everybody is jumping on the bandwagon, interesting developments have surfaced: Traditional monoliths have adopted new messaging with the terms “composable” and “headless” in it, and headless systems are integrating more monolithic-like features. Meanwhile, at a loss as to what to do to ensure that their architecture is scalable, secure, and future-proof, brands make decisions out of sheer FOMO. All that has created the beast I call the MACH Monolith."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The MACH approach for building digital architecture is the way to go, and it can be an amazing journey. However, you must apply the MACH principles correctly. This article explains what that means."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We can agree on one thing: web development is complex, hence the word "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"development"}]},{"type":"text","value":". For years, software vendors tried to simplify the job by creating suites with all the features businesses would need, from front-end accelerators to editing capabilities for rich content. Such an approach of having one platform to tackle all digital-business challenges worked pretty well."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, drawbacks do exist. For one thing, businesses must buy into how the suite is developed as a product. Additionally, they’re stuck with vendor lock-in and dependent on the suite’s roadmap, which holds back innovation and causes developers to break out of the system with customization. When updates are necessary to the underlying monolith, the architecture becomes flawed."}]},{"type":"element","tag":"h2","props":{"id":"a-paradigm-shift"},"children":[{"type":"text","value":"A paradigm shift"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The general mindset in web development is that even though everything is headless and API-first, we are still operating in the “suite” paradigm. Even the technical people who tried to break away from the monolith approach in the recent past still have that frame of mind. Paradigm shifts take time, and we are currently in the middle of one."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In today’s composable world, where architectures are crafted with best-of-breed tools, we must recognize the fact that no software can take the sting out of the challenges involved. Reality is, no full-chain covering pieces of software exist in the SaaS world even though that’s a bitter pill to swallow because that’s what we were used to with suites."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hence, the suite approach continues to predominate, and people often tend to adopt that even while designing a modern composed architecture. As reflected across disciplines, such a practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures. Let’s talk about how the MACH monolith surfaced."}]},{"type":"element","tag":"h2","props":{"id":"monolith-like-features-from-headless-first-products"},"children":[{"type":"text","value":"Monolith-like features from headless-first products"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Because only techies like the headless space, the market doesn’t seem ready to fully embrace API-first designs and composable architectures. After all, APIs are techspeak, and since architectures are created with a tech hat on, the experience is unfriendly to practitioners like content editors and marketers. For details on this phenomenon, see this "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/digital-experience-composition-dxc/tame-the-martech-chaos-with-dxc-and-mach","rel":["nofollow"]},"children":[{"type":"text","value":"article"}]},{"type":"text","value":" on orchestrating MACH architectures."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also, because headless systems are built by and for techies, API-first products are ahead of their time with no connecting mechanism for the composing elements to benefit all stakeholders. A way to resolve that is described later in this article."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid losing market share, headless systems must have the following features to become more usable to practitioners:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration fields into the CMS and other headless systems, e.g., search, DAM, PIM, commerce, CRM, and personalization, to unify the editing experience and offer a singular API for developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An ability to preview functionalities, tightly coupling the front end to the preview SDK of the CMS."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An ability to compose pages inside the CMS data model to add contextualized data for compositions to the clean data model of the CMS content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Routing and sitemap-related content mapping in the CMS that gives practitioners a clear overview of the system."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"All those features put the CMS in the center of the universe of digital architecture. Questions come to mind, however:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you have multiple CMS systems?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you want to switch your commerce engine but it’s tightly coupled to the CMS?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you'd like to switch to another CMS?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you must add another channel like a TV app, yet the data models with desktop presentational context cannot accommodate that?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The answers to those questions result in a load of pain for developers, who often must wrestle with a system replatform every few years. With things becoming too interconnected and concerns not separated, the ultimate choice is usually to discard the old architecture and start anew. Doing that gets very expensive very fast."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Surprisingly, since the paradigm shift is as yet incomplete, the original, highly innovative API-first companies are now adding other semi headless products to their portfolio so as to stay relevant in a slightly lagging market. Consequently, software vendors must serve the mid-market tier of businesses with accelerated product launches and ease of use. Otherwise, website-in-a-box systems like WordPress or Shopify will outperform them."}]},{"type":"element","tag":"h2","props":{"id":"hybrid-headless-and-pretend-composability-from-suites"},"children":[{"type":"text","value":"Hybrid headless and pretend composability from suites"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To stay relevant in the interim, traditional suite vendors are implementing a form of hybrid headless products. You can use their system in a headless, API-first manner but must stick to their way of operations. The fact that you need specialized knowledge of the system to work with it goes against the API-first proposition of total developer freedom. Still, you now have an API and, therefore, a headless system."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suite vendors are splitting up the suite or buying additional service providers and selling their products as composable pieces to their platform. That’s not real composability because you’re not free to choose your best-of-breed tools and can only select from the vendor’s pool of services, which are generally tightly coupled to the suite's core and, therefore, challenges filled. Being interconnected and indivisible is typical of monolithic software, not composable software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I call that approach compostable architecture."}]},{"type":"element","tag":"h2","props":{"id":"the-mach-monolith"},"children":[{"type":"text","value":"The MACH monolith"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We’re seeing a couple of patterns over and over again."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"MACH Monolith","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fp3gnzgd3unj8tbvru3c.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If the separation of concerns is not respected, software vendors create an indivisible and interconnected bundle of best-of-breed tools—a complicated scenario that makes it tough to discern what’s connected to what, not to mention that you have created your very own vendor lock-in. Things work in only one way, and only the original build team understands how they work. Onboarding of new team members becomes complicated and burdensome, leading to frustration among developers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Separately, contextual composition data is often stored in the CMS and mixed with the clean data model you started with, such as adding a checkbox to spotlight an item on a page, which is a design decision for the item in a specific context. What if that context changes when the item is shown in a different place on the website? Composing pages with specific user contexts is problematic in a CMS, invariably generating dirty data over time. Instead, page composition in the context of a user must occur in the front end or a composition platform."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another approach is not to fully interconnect the systems. That’s a great start, but where does that connection usually occur? In the front end. As a result, the front-end application contains all the knowledge of the link to all the systems that compose your website, generating a considerable risk for maintenance and security, let alone that it’s not future-proof. To be effective, a front end must be \"stupid\" and \"stateless\" for updates."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Besides, business problems also exist:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if the architecture does not behave the way it’s supposed to? Determining where it went wrong is complicated."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who do you seek help after pinpointing the issue? The best-of-breed tool, your team who made architecture decisions, or the agency that built the system? Businesses with a failing architecture that can’t point the liability finger eventually replatform and start the process from scratch. The MACH monolith thus ends up being much more inferior to the traditional suite with only one vendor."}]}]},{"type":"element","tag":"h2","props":{"id":"the-solution"},"children":[{"type":"text","value":"The solution"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What businesses need is an opinionless platform that does the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Orchestrates best-of-breed tools."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers a user-friendly interface to developers and practitioners alike."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers an entirely tech-agnostic SDK."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers no-code tools for practitioners to work with in such a way that they do not notice they are composting pages with different headless sources."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though the paradigm shift to truly composable architectures is still ongoing, the platform described above already exists. Enter "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"]},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":", on which developers and marketers have complete control of their digital-experience stack, and I’m proud to run its developer relations team. Uniform is slated to solve many issues developers, architects, and practitioners will face in the coming years."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"a-paradigm-shift","depth":2,"text":"A paradigm shift"},{"id":"monolith-like-features-from-headless-first-products","depth":2,"text":"Monolith-like features from headless-first products"},{"id":"hybrid-headless-and-pretend-composability-from-suites","depth":2,"text":"Hybrid headless and pretend composability from suites"},{"id":"the-mach-monolith","depth":2,"text":"The MACH monolith"},{"id":"the-solution","depth":2,"text":"The solution"}]}},"_type":"markdown","_id":"content:4.writing:the-mach-monolith.md","_source":"content","_file":"4.writing/the-mach-monolith.md","_extension":"md"},{"_path":"/writing/the-move-from-monolithic-to-composable-architectures","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The move from monolithic to composable architectures","description":"Success in business can be attributed to many factors, notably team talent and efficacy of products...","id":1399554,"slug":"the-move-from-monolithic-to-composable-architectures","date":"2023-03-13T20:42:55Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56u97go8avwyexrr01nx.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/composable-architectures-are-the-future-of-the-digital-sphere","tags":["mach","webdev","composable","monolith"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Success in business can be attributed to many factors, notably team talent and efficacy of products or services. What also counts in this digital age are immersive and performant online experiences. Realistically, delivering engaging experiences is a never-ending undertaking. To avoid lagging behind rivals, brands must do that time and again in all their interactions with consumers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can you adapt and iterate as rapidly as necessary? Can you quickly respond to current trends and launch digital experiences without tech support? When it comes to digital capabilities and speed to market, technology makes all the difference. This post explains why the industry is moving from monolithic to composable architectures and how those two architectures can actually work together."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##What are monolithic applications?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Built as a single unit, monolithic applications (aka monolithic architectures) are all-in-one, self-contained suites with robust features. Known as legacy systems, monolithic applications occupy a long-standing place in today’s makeup of businesses as the easy way to acquire digital capabilities. You go through one purchase for all your business needs and sign a contract with one solution provider, who would make it all happen and support you along the way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Such a mono approach might not be the best for the long haul, however. In a free-market economy, monopolies are generally frowned upon because of the guardrails put up by those dominant players, who would enforce rules and regulations to stifle or eliminate competition altogether. What’s more, monopolies have no incentives for innovation or improvements in efficiency."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That’s not a direct comparison to monolithic solutions in tech per se since competition does exist among tech solution providers. Rather, a brief assessment of monopolies is helpful context for why stand-alone architectures aren't ideal for businesses. If one vendor has all the say about the ways your tech stack is used and adapted, you are limited in many ways."}]},{"type":"element","tag":"h2","props":{"id":"why-are-monolithic-applications-not-the-way-forward"},"children":[{"type":"text","value":"Why are monolithic applications not the way forward?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A pro-con analysis shows real—or at least perceived—benefits in relying on a monolithic architecture for your tech stack. If your IT team is well versed in the vendor along with its code and operating system, an established ease of use exists. Furthermore, it feels simple to keep and manage everything in one place and to have, theoretically, one source of truth, with all the tools housed together under the purview of one provider. Not to mention that you have one all-knowing point of contact or support team to call on in case of issues."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nonetheless, given the future of business and the digital experiences consumers demand, the cons of monolithic applications far outweigh the pros in three key areas:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Customization"}]},{"type":"text","value":". Limited is the ability to tailor monolithic applications to meet business needs. Also, even though those applications offer wide-reaching features, you might not ever use some of the features. And you’re at the whims of the monolith’s technology roadmap for innovation. For example, something you need to meet customer needs might not be available until the application’s next software update, potentially months away. In addition, in contrast to today’s fast market changes, upgrades can be time-consuming and slow with a need for developers to make changes or adaptations. With those modifications come complexities, third-party add-ons, or new applications that developers must painstakingly build themselves."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Agility"}]},{"type":"text","value":". Trends change and new opportunities emerge more rapidly than monolithic applications can keep up. Adaptability becomes a struggle, especially if you’re locked into the suite on contract."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Scalability"}]},{"type":"text","value":". Businesses that aspire to be fast-moving and competitive are hindered by monolithic technologies that are difficult to scale. Accordingly, growth is hampered because of the slow and heavy lift for developers to morph one monolithic architecture into an all-things-for-all-people stack."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another hurdle businesses face is adapting a monolithic application to be composable or as a “"},{"type":"element","tag":"a","props":{"href":"https://dev.to/timbenniks/the-mach-monolith-2knd","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":".” Rather than replatforming or ditching an established monolithic architecture to build a new microservices-centric one, brands apply API-first and composable solutions to an existing framework by integrating a host of composable products. Doing so could seriously muddy the waters, however, creating a beast of an architecture that’s not composable, sustainable, or agile."}]},{"type":"element","tag":"h2","props":{"id":"how-can-monoliths-and-composable-work-together"},"children":[{"type":"text","value":"How can monoliths and composable work together?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Legacy monolithic architectures can, in fact, work with composable applications through digital experience composition platform (DXCP), which acts as composable’s opinionless foundation by doing the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offer the prebuilt system integrations and tools business users need, lightening the burden of innovation through new features."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enable teams to merge their legacy platform with a composable approach, orchestrating best-of-need tools and offering a user-friendly interface for developers and practitioners alike."}]}]},{"type":"element","tag":"h2","props":{"id":"how-does-dxcp-help-make-composable-mainstream"},"children":[{"type":"text","value":"How does DXCP help make composable mainstream?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Without doubt, monolithic architectures are no longer ideal for brands that are focused on creating digital experiences that drive impact and conversions. Composable architectures give control of the experience-creation process to the brands responsible for the end results, instead of one tech vendor."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Despite the promise of future-ready composable stacks, building them can be a slow and expensive process, with weeks of custom glue code needed to integrate the multiple services. They are often also incredibly frustrating for marketing teams, content writers, graphic designers, and other business users, as previously simple tasks require multiple tools and developer support."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is where DXCP and companies like Uniform enter the picture. With rapid integration tools that dramatically speed system build and maintenance and powerful no-code interfaces for marketers and other business users to create engrossing experiences in a single, integrated environment using every tool they need."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-are-monolithic-applications-not-the-way-forward","depth":2,"text":"Why are monolithic applications not the way forward?"},{"id":"how-can-monoliths-and-composable-work-together","depth":2,"text":"How can monoliths and composable work together?"},{"id":"how-does-dxcp-help-make-composable-mainstream","depth":2,"text":"How does DXCP help make composable mainstream?"}]}},"_type":"markdown","_id":"content:4.writing:the-move-from-monolithic-to-composable-architectures.md","_source":"content","_file":"4.writing/the-move-from-monolithic-to-composable-architectures.md","_extension":"md"},{"_path":"/writing/the-real-deal-about-content-management-buzzword","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The real deal about content management buzzwords","description":"Buzzwords are labels that describe tech approaches that become so commonplace over time that the...","id":1614626,"slug":"the-real-deal-about-content-management-buzzword","date":"2023-09-28T14:43:37Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr5frm3ra3q3liidcpev.jpg","canonical_url":"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords","tags":["buzzwords","dxp","composable","cms"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Do you like watching more than reading? Watch this "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=EXzp3OkQTXk","rel":["nofollow"]},"children":[{"type":"text","value":"YouTube video"}]},{"type":"text","value":" instead."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"{% embed "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=EXzp3OkQTXk","rel":["nofollow"]},"children":[{"type":"text","value":"https://www.youtube.com/watch?v=EXzp3OkQTXk"}]},{"type":"text","value":" %}"}]},{"type":"element","tag":"h2","props":{"id":"mach"},"children":[{"type":"text","value":"MACH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/mach-architecture","rel":["nofollow"]},"children":[{"type":"text","value":"MACH architecture"}]},{"type":"text","value":" comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Microservices"}]},{"type":"text","value":" are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"API-first"}]},{"type":"text","value":" means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Cloud-native"}]},{"type":"text","value":" means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Headless"}]},{"type":"text","value":" means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"mach","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/jZfjXdJMSGTG1gLrwGQQ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"composable"},"children":[{"type":"text","value":"Composable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/composable-architecture","rel":["nofollow"]},"children":[{"type":"text","value":"Composable architecture"}]},{"type":"text","value":" refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first \"A\" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"composable","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/D2oCAxwTpuhKfZ5xwEB0","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxp-digital-experience-platform"},"children":[{"type":"text","value":"DXP (Digital Experience Platform)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/what-is-a-dxp","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience platform (DXP)"}]},{"type":"text","value":" is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxp","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/rIUS6taoQJ2pcvTDA2YZ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxc-digital-experience-composition"},"children":[{"type":"text","value":"DXC (Digital Experience Composition)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"Digital experience composition"}]},{"type":"text","value":" refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxc","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/irNrx7isRUKaZ0QoDnzQ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxo-digital-experience-orchestration"},"children":[{"type":"text","value":"DXO (Digital Experience Orchestration)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxo","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/WgGDwsNLTTa4wAoL7WVd","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"why-you-dont-have-to-care-about-the-buzzwords"},"children":[{"type":"text","value":"Why you don’t have to care about the buzzwords"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Ultimately, it is up to "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"you"}]},{"type":"text","value":" to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before."}]},{"type":"element","tag":"h3","props":{"id":"company-maturity"},"children":[{"type":"text","value":"Company maturity"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, as companies mature, they may struggle with the "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/monolithic-cms-limitations","rel":["nofollow"]},"children":[{"type":"text","value":"limitations of these monoliths"}]},{"type":"text","value":". Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry."}]},{"type":"element","tag":"h3","props":{"id":"connecting-it-all"},"children":[{"type":"text","value":"Connecting it all"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture."}]},{"type":"element","tag":"h3","props":{"id":"content-federation"},"children":[{"type":"text","value":"Content federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid a "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":" or "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=so7-c2bOXpA","rel":["nofollow"]},"children":[{"type":"text","value":"MACHlash"}]},{"type":"text","value":", you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"content federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/fbNw1hhTSHykSwk19ggJ","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information."}]},{"type":"element","tag":"h3","props":{"id":"after-content-federation-is-in-place"},"children":[{"type":"text","value":"After Content federation is in place"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"after content federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/4xZbpHRgTI2CzXQ88GG7","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"concluding"},"children":[{"type":"text","value":"Concluding"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mach","depth":2,"text":"MACH"},{"id":"composable","depth":2,"text":"Composable"},{"id":"dxp-digital-experience-platform","depth":2,"text":"DXP (Digital Experience Platform)"},{"id":"dxc-digital-experience-composition","depth":2,"text":"DXC (Digital Experience Composition)"},{"id":"dxo-digital-experience-orchestration","depth":2,"text":"DXO (Digital Experience Orchestration)"},{"id":"why-you-dont-have-to-care-about-the-buzzwords","depth":2,"text":"Why you don’t have to care about the buzzwords","children":[{"id":"company-maturity","depth":3,"text":"Company maturity"},{"id":"connecting-it-all","depth":3,"text":"Connecting it all"},{"id":"content-federation","depth":3,"text":"Content federation"},{"id":"after-content-federation-is-in-place","depth":3,"text":"After Content federation is in place"}]},{"id":"concluding","depth":2,"text":"Concluding"}]}},"_type":"markdown","_id":"content:4.writing:the-real-deal-about-content-management-buzzword.md","_source":"content","_file":"4.writing/the-real-deal-about-content-management-buzzword.md","_extension":"md"},{"_path":"/writing/this-is-headless-20","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"This is headless 2.0","description":"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about...","id":1533031,"slug":"this-is-headless-20","date":"2023-07-11T07:48:19Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4ykeb6acv0q288ygpaj.png","canonical_url":"https://www.linkedin.com/pulse/headless-20-tim-benniks/","tags":["webdev","mach","headless","architecture"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about the "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":" before. Here, I’ll describe how to avoid ending up in a codebase full of technical debt, aka glue code—chores that overburden and frustrate developers."}]},{"type":"element","tag":"h3","props":{"id":"the-why"},"children":[{"type":"text","value":"The why"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Headless technology has gained prominence in web development, offering benefits like higher performance, front-end freedom, DX features, and management through APIs—a thrill for techies. However, at scale, complexities arise due to an endless need for glue code for connecting content sources, let alone authoring issues caused by disconnects between content editors and front-end presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In particular, separation of content authoring and presentation results in a steep learning curve for content editors, who would need help to preview their work and ensure a correct display. But how do you preview content that connects to multiple sources, all offering some form of preview capability? As a fix, people do either of the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Connect to the sources via CMS plugins and add data-modeling capabilities for page layouts unrelated to core CMS functionalities. For more details, read my article on the "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":". "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hard-code all the connections in the front end, forcing content editors to file IT tickets for updates."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For web projects to succeed, since developers, marketers, and content editors boast "},{"type":"element","tag":"a","props":{"href":"https://dev.to/timbenniks/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pros-17k","rel":["nofollow"]},"children":[{"type":"text","value":"different strengths"}]},{"type":"text","value":", teams must be able to collaborate harmoniously and seamlessly. For all that headless promises freedom and excellent developer experience, it pushes the pain threshold of marketers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Connecting lots of services creates glue code and technical debt.","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7a0lii31280n03qva7v.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connecting lots of services creates glue code and technical debt."}]},{"type":"element","tag":"h3","props":{"id":"the-how"},"children":[{"type":"text","value":"The how"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Two things are paramount as a fix:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple, easy-to-maintain front-end codebases that contain minimal glue code and technical debt. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Elimination of the need for content editors to tackle the abstractness of a composable architecture populated by a plethora of different tools. Content editors need a visual-editing capability across headless sources to ensure the display is exactly what they desire without giving up on a solid technical architecture."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In other words, content editors need a page-composition process similar in concept to that of GraphQL, i.e., one that returns only the needed properties and content of all page components. All the editors need to do is add the component props with data from external sources—with no need to know the data’s origin. The result is curated, page-specific JSON output that can be consumed by the front end, which need not connect to external data sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually.","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fu1m8gqp9r20nq7fx7dy.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What emerges is a transparent and simple platform on which to compose pages based on design components, whose props point to a field in an external API endpoint. That platform would "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" be a CMS or data-federation tool. All it needs to know is which component points to which data source for a specific page composition."}]},{"type":"element","tag":"h3","props":{"id":"a-visual-workspace"},"children":[{"type":"text","value":"A visual workspace"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Therefore, the job of the platform, which represents all the design components with linked data sources (CMS, PIM, DAM), is to connect them and store the result like a curated GraphQL query on a CDN edge. The only data this platform would potentially store are one-off content strings like “latest blog posts” or the fact that a particular component variant, e.g., the image on the left or right, is shown in a specific context."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That setup gives rise to a streamlined workflow:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To publish content, editors visually connect external data to components properties. That data can come from any source."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Editors compose their design-system components visually to represent the page design they want."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A curated JSON structure of the composition is saved to the CDN edge."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The front end connects to the API endpoint of the platform. An intuitive and light SDK connects to the CDN edge, keeping the front end code simple."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To make it all visual for content editors, match the naming of the design-system components in the codebase to the ones in the platform and have the SDK show the components in a preview window. Simultaneously, content editors can bind data from external sources to the props and design how the components should look and behave."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With solid cache purging for data sources, you can create dynamic pages that connect to any amount of data and deliver in less than 50ms from a CDN edge near you. In case of external data-source changes, the TTL on the field or a webhook purges the cache, resulting in fresh data. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If used in conjunction with the latest Next, NuxtJS, or Astro features, this approach leads to a robust yet no-frills front end with no need to connect to data sources in code or mapping their data to component props. Talk about happy developers!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Image description","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gxchvyapco21ibgpkxl9.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Map design system component props to individual API response fields to create a visual editor that works across headless sources."}]},{"type":"element","tag":"h3","props":{"id":"a-recap"},"children":[{"type":"text","value":"A recap"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connecting everything code-first at scale is painful for developers and content editors alike, the former having to maintain the connections and content mappings, and the latter getting lost in the abstract tools with no clues of what happens on a click to publish."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A composable architecture of headless sources must be a team buy, not just a developer choice. What’s needed is a visual workspace that’s—"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Friendly to content editors but also feature-rich for developers while maintaining excellent technical architecture without compromises. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Agnostic and not a one-size-fits-all offering from a single CMS vendor. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In other words, we need a modern, composable form of the old-school DXPs like Adobe AEM. I believe what I described above resembles digital experience composition as coined by Gartner."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"This is Headless 2.0"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-why","depth":3,"text":"The why"},{"id":"the-how","depth":3,"text":"The how"},{"id":"a-visual-workspace","depth":3,"text":"A visual workspace"},{"id":"a-recap","depth":3,"text":"A recap"}]}},"_type":"markdown","_id":"content:4.writing:this-is-headless-20.md","_source":"content","_file":"4.writing/this-is-headless-20.md","_extension":"md"},{"_path":"/writing/uniform-dxcp-the-what-why-and-how","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Uniform DXCP: the what, why, and how","description":"Nowadays, you’re hard pressed to find an application with all the functionalities you need for...","id":1405728,"slug":"uniform-dxcp-the-what-why-and-how","date":"2023-03-18T13:03:16Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0iccm5uux0ndu9ulnc2g.png","canonical_url":"https://uniform.dev/blogs/uniform-dxcp-the-what-why-and-how","tags":["cdn","edge","sitecore","headless"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nowadays, you’re hard pressed to find an application with all the functionalities you need for delivering personalized digital experiences. Even though with headless solutions, you can select the best options for your goals, you can, through composability, easily connect the applications that drive personalized experiences. Still, simply adopting headless technologies isn’t enough; you also need a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architecture"}]},{"type":"text","value":" that fosters innovation and a seamless authoring experience for business users. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The answer is Uniform "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"Digital Experience Composition Platform (DXCP)"}]},{"type":"text","value":", whose vendor-agnostic capabilities scale to your needs, enabling you to assemble, change, and reassemble your tools as requirements evolve. But what is Uniform DXCP and why does it exist? Read on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##What is Uniform DXCP?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform DXCP is a new, unique product category with which you can effortlessly integrate legacy and composable services with your design system and front end of choice. In particular, you can switch to and maintain composable systems without having to build and support the connections among those systems. In a composable architecture, that means adding and removing the tools without breaking your personalized, omnichannel digital experience. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Why is now the time to move beyond the modern tech stack?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Similar to a composer who arranges the notes of a musical score, you’re the composer of your project’s tech stack. Say, your stack comprises various tools—a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/headless-cms/uniform-for-headless-cms","rel":["nofollow"]},"children":[{"type":"text","value":"headless content management system (CMS)"}]},{"type":"text","value":", a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/uniform-for-headless-commerce","rel":["nofollow"]},"children":[{"type":"text","value":"commerce platform"}]},{"type":"text","value":", a digital asset management (DAM) system, and so on—from different vendors. By combining those technologies and hosting them on a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/sitecore/deliver-better-digital-experiences-with-a-cdn","rel":["nofollow"]},"children":[{"type":"text","value":"content delivery network (CDN)"}]},{"type":"text","value":", you render a webpage. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nonetheless, connecting headless tools with APIs doesn’t necessarily produce a high-quality or "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/headless-versus-composable-everything-you-need-to-know","rel":["nofollow"]},"children":[{"type":"text","value":"composable experience"}]},{"type":"text","value":". As your enterprise scales up, your business must grow as well, meaning that you must incorporate more and more applications into your tech stack, all of which are hard coded into one another through their app stores or your front-end technology. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What you end up with is a messy, unwieldy, and inflexible tech stack—a maintenance headache  for your developers. Not to mention that "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/switching-vendors-for-digital-architectures-without-replatforming","rel":["nofollow"]},"children":[{"type":"text","value":"replatforming"}]},{"type":"text","value":" or rebuilding your project from scratch can be nightmarish and expensive. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How do you transform your tech stack from a cacophony of integrations connected by endless "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/glue-code","rel":["nofollow"]},"children":[{"type":"text","value":"glue code"}]},{"type":"text","value":" into a composable architecture that bridges your tools into a harmonious experience? You do it with digital experience composition.  "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How do you transition from chaos to composable with DXCP"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With Uniform DXCP, you need not create and maintain the custom code that connects your APIs and front-end layers. Instead, you can compose and organize headless solutions in your tech stack without the exorbitant costs, laborious upgrades, and complexities. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here are the major benefits of moving to composable with Uniform DXCP: "}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Remember the messy tech stack we cited earlier? "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/the-mach-monolith","rel":["nofollow"]},"children":[{"type":"text","value":"Monolithic architectures"}]},{"type":"text","value":" require development of new features or investment in complicated integrations. Not so with Uniform DXCP, whose API-orchestration layer handles the connections among your digital experiences and the applications that power them."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"No more “publish and pray” moments. Uniform DXCP’s no-code orchestration layer accords business users an editor with which to drag and drop components wherever they want and preview the resultant display."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"In DXCP, your front end is unaware of your connections so no proprietary limitations exist, and you can select any front-end technology you desire. Whether you choose Java or PHP, your digital experience remains consistent and seamless."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCP offers a new paradigm for page creation around where data lives and how you manage that data. No more worries about product information being displayed outside the context of its intended design and user experience. With Uniform sitting on the end of your design data and keeping domain data intact, you’re free to deliver digital experiences through multiple services at scale. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How do you fuel your stack with digital experience composition?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After you’ve built a composable architecture in DXCP:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your developers can easily add features and swap out tools from the stack individually."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your stack stays organized with no need for those time-consuming, costly integrations that impede your speed to market."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your marketers can drag and drop the components they need to create personalized omnichannel experiences without developer assistance. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The result is less code, greater agility and flexibility, and a more smooth approach for handling orchestration and integrating new tools into your tech stack. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:uniform-dxcp-the-what-why-and-how.md","_source":"content","_file":"4.writing/uniform-dxcp-the-what-why-and-how.md","_extension":"md"},{"_path":"/writing/uniform-is-nuxt-3-read","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Uniform is Nuxt 3 ready","description":"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with Vue...","id":1405730,"slug":"uniform-is-nuxt-3-read","date":"2023-03-18T13:10:06Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96gzr0p69e9frwbj3i8w.png","canonical_url":"https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3","tags":["webdev","javascript","nuxt","vue"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with "},{"type":"element","tag":"a","props":{"href":"https://blog.vuejs.org/posts/vue-3-as-the-new-default.html","rel":["nofollow"]},"children":[{"type":"text","value":"Vue 3"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"https://v3.nuxtjs.org/","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt 3"}]},{"type":"text","value":". "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nuxt 3 is fast approaching GA. To ensure that Vue.js enthusiasts can build next-generation web experiences with the awesome features offered by Nuxt 3, our new SDK fully supports all Uniform capabilities: from no-code presentation management by Uniform Canvas, complete with web-socket-based live previews, to edge-side personalization and A/B testing through Uniform Context. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With the Nuxt 3 Nitro engine, developers can now run an entire site on the edge or combine personalization on the edge with delivery of the remaining content in SSG mode through a CDN. Even for highly dynamic pages, the latter choice results in blazing-fast page loads. We’re talking sub 50 milliseconds!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nuxt 3 is truly game changing, and Uniform takes full advantage of that with an easy-to-install SDK that follows Nuxt’s no-config ethos."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Features of Uniform’s Nuxt 3 module"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is what the module can do:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Auto-registers the required Uniform components."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Auto-creates a Uniform Canvas client."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Creates a Uniform Context instance (for personalization) and makes it available throughout the app without the need for a wrapping component."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Builds a handy "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"$useCompositionClick to copy"}]},{"type":"text","value":" composable on top of Nuxt's "},{"type":"element","tag":"a","props":{"href":"https://v3.nuxtjs.org/api/composables/use-async-data","rel":["nofollow"]},"children":[{"type":"text","value":"useAsyncData"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Displays live previews seamlessly."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Monitors query-string changes, which Nuxt doesn't do by default."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Benefits of using Uniform with Nuxt 3"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As a rule, no single system offers all the functionalities you need for an app. Instead, multiple systems must work together for the app to run smoothly. A "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architecture"}]},{"type":"text","value":" is one in which you can pick and choose the components for your technology stack, but getting them to work together well can be challenging. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Modern headless systems can connect with other systems as part of a composable architecture. However, using some composable services doesn’t give you a full composable architecture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Real composability means that you can add or remove components easily as your needs evolve. That’s what Uniform offers. With Uniform’s composition layer, you can build and maintain a modern stack with composable services without tightly coupling them. As a result, developers, content creators, and marketers alike can create and deliver experiences quickly, independently and without vendor lock-in."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers can add or change services any time, assured that their tools will work well together without the need for time-consuming and expensive replatforming and reintegration."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content creators can build engaging experiences with a consistent, no-code approach through which they can readily leverage all the tools in their stack."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Marketers can promote conversions through intent-based personalization and experimentation mechanisms that integrate with customer data and that are simple and intuitive for implementation by developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"As internal needs or consumer tastes change, the organization can be agile enough to meet these challenges, without extensive background work that doesn’t deliver direct value to end users."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:uniform-is-nuxt-3-read.md","_source":"content","_file":"4.writing/uniform-is-nuxt-3-read.md","_extension":"md"},{"_path":"/writing/what-type-of-content-organization-do-you-need","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"What type of content organization do you need?","description":"Different ways of working require different approaches to content design. In this post, I will...","id":1664371,"slug":"what-type-of-content-organization-do-you-need","date":"2023-11-12T09:03:33Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd58lvz3nrm8lre4gdtuw.png","canonical_url":"https://hygraph.com/blog/what-type-of-content-organization-do-you-need","tags":[],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Centralized / Decentralized","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xioylw3zkxljytzhwtft.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly."}]},{"type":"element","tag":"h2","props":{"id":"how-to-organize-your-content-without-going-crazy"},"children":[{"type":"text","value":"How to organize your content without going crazy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your content flows between different systems, federation is one of the most effective ways to manage it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements."}]},{"type":"element","tag":"h2","props":{"id":"forms-of-federation"},"children":[{"type":"text","value":"Forms of federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns."}]},{"type":"element","tag":"h3","props":{"id":"data-stitching-and-custom-middleware"},"children":[{"type":"text","value":"Data stitching and custom middleware"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data stitching","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iacwgoeaolz9znalbc56.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"content-hub"},"children":[{"type":"text","value":"Content Hub"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Content Hub","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc8fp49qbswr93cg5r62.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"data-lake"},"children":[{"type":"text","value":"Data Lake"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data lake","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u388o0c1oy5p0m31afl0.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"content-federation"},"children":[{"type":"text","value":"Content Federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Content Federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wsbl6uzmoscfxq31yrv.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"dxo-digital-experience-orchestration"},"children":[{"type":"text","value":"DXO (digital experience orchestration)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"DXO","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfrsz1i6hjq68mbsmrui.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"graphql-federation"},"children":[{"type":"text","value":"GraphQL Federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"GraphQL Federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rtx6y1lqmon1nhe6c4t0.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"which-federation-is-for-you"},"children":[{"type":"text","value":"Which federation is for you?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions."}]},{"type":"element","tag":"h3","props":{"id":"what-is-your-digital-organization-direction-centralized-or-decentralized"},"children":[{"type":"text","value":"What is your digital organization direction: centralized or decentralized?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Federation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Hub"}]}]},{"type":"element","tag":"h3","props":{"id":"how-much-cleanup-does-your-data-need"},"children":[{"type":"text","value":"How much cleanup does your data need?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: DXO, Content Federation"}]}]},{"type":"element","tag":"h3","props":{"id":"how-autonomous-do-your-data-sources-need-to-be"},"children":[{"type":"text","value":"How autonomous do your data sources need to be?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"autonomy"}]},{"type":"text","value":" to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Federation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Hub"}]}]},{"type":"element","tag":"h3","props":{"id":"are-you-dealing-with-big-data"},"children":[{"type":"text","value":"Are you dealing with big data?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Lake"}]}]},{"type":"element","tag":"h3","props":{"id":"are-you-a-saas-with-multiple-tech-silos"},"children":[{"type":"text","value":"Are you a SaaS with multiple tech silos?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: GraphQL Federation"}]}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As always, the answer is: \"It depends\". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"how-to-organize-your-content-without-going-crazy","depth":2,"text":"How to organize your content without going crazy"},{"id":"forms-of-federation","depth":2,"text":"Forms of federation","children":[{"id":"data-stitching-and-custom-middleware","depth":3,"text":"Data stitching and custom middleware"},{"id":"content-hub","depth":3,"text":"Content Hub"},{"id":"data-lake","depth":3,"text":"Data Lake"},{"id":"content-federation","depth":3,"text":"Content Federation"},{"id":"dxo-digital-experience-orchestration","depth":3,"text":"DXO (digital experience orchestration)"},{"id":"graphql-federation","depth":3,"text":"GraphQL Federation"}]},{"id":"which-federation-is-for-you","depth":2,"text":"Which federation is for you?","children":[{"id":"what-is-your-digital-organization-direction-centralized-or-decentralized","depth":3,"text":"What is your digital organization direction: centralized or decentralized?"},{"id":"how-much-cleanup-does-your-data-need","depth":3,"text":"How much cleanup does your data need?"},{"id":"how-autonomous-do-your-data-sources-need-to-be","depth":3,"text":"How autonomous do your data sources need to be?"},{"id":"are-you-dealing-with-big-data","depth":3,"text":"Are you dealing with big data?"},{"id":"are-you-a-saas-with-multiple-tech-silos","depth":3,"text":"Are you a SaaS with multiple tech silos?"}]},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:what-type-of-content-organization-do-you-need.md","_source":"content","_file":"4.writing/what-type-of-content-organization-do-you-need.md","_extension":"md"},{"_path":"/writing/why-i-didnt-run-the-2016-marathon","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Why I didn't run the 2016 marathon","description":"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on...","id":1406190,"slug":"why-i-didnt-run-the-2016-marathon","date":"2023-03-18T22:52:37Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafpsw3jbsie5bf7w8wp9.jpg","canonical_url":"https://dev.to/timbenniks/why-i-didnt-run-the-2016-marathon-57e3","tags":["personal","fitness","running"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on October 16th 2016. I’ve learnt a life lesson about the balance between the load and capacity of the body while training for a marathon."}]},{"type":"element","tag":"h3","props":{"id":"tldr"},"children":[{"type":"text","value":"tl;dr"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won't be able to cope with the added stress."}]},{"type":"element","tag":"h3","props":{"id":"the-load-capacity-model"},"children":[{"type":"text","value":"The Load-Capacity Model"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Load-Capacity model was created in 1990 by A.T.M Bernards and L.H.A Hagenaars, two Dutch physiotherapists. The MDBB (Dutch abbreviation) model is meant to be a conceptual model for physiotherapy. "},{"type":"element","tag":"a","props":{"href":"https://www.researchgate.net/publication/224983108_Het_meerdimensionale_belasting-belastbaarheidsmodel_een_conceptueel_model_voor_de_fysiotherapie","rel":["nofollow"]},"children":[{"type":"text","value":"This is one of their publications from 1999"}]},{"type":"text","value":". They created this model to add the "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Biopsychosocial_model","rel":["nofollow"]},"children":[{"type":"text","value":"biopsychosocial"}]},{"type":"text","value":" element to physiotherapy treatments."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"I just want to caveat that even though there is some merit to the claims made in this post, the Load-Capacity model is generally taught at physiotherapy school, most of the conclusions I ended up with are anecdotal. I’ll be using the Load-Capacity model specifically for my personal experience so my writing will be somewhat one-sided."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On the physical side, the Load-Capacity model is a key concept in preventing and managing running injuries. It is all about understanding the balance between training load and the body’s capacity to handle that load. In a nutshell it’s a case of working within your limits and not pushing the training beyond what the body can cope with."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then there is the mental side. External stressors will also impact the balance between capacity and load. If you keep the load the same but your capacity goes down due to grief or work stress, the body will be pushed over the edge of what the it would normally tolerate."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The load-capacity balance is different for everybody and could also change over time. As it did for me. I upped the load in a steady way by training for the marathon but my body’s capacity went down due to external stressors which I wasn’t able to identify. For one, I have a thick skull but I also wasn’t used to the fact that my body would tell me to stop. I could do whatever I wanted to it without stretching or any kind of warm up. If I twisted my ankle the pain would go away in a day."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtcthucv7qthp2sra697.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This year I was always stiff and I had to concentrate way harder to stick to proper form. Suddenly I got little pains like plantar fasciitis and an inflamed Achilles tendon. Even after stretching out my hips and calves it felt like I was running on stilts. The pains and stiffness started two months into training. Four months in, I started to get extremely tired, I developed a rash and I my IBS started to play up way more often. I also got sick after doing longer runs at marathon pace."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The things I just described start to happen when the load is surpassing the capacity of the body for a length of time. I slowly got "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Overtraining","rel":["nofollow"]},"children":[{"type":"text","value":"overtrained"}]},{"type":"text","value":". As my body could normally handle anything I threw at it, I was a bit oblivious towards the symptoms of over training."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"My sweet wife is a physiotherapist and saw me coming from a mile away. Classic. I needed my wife and many of my peers to tell me that I was over trained. The cause was a combination of training and external circumstances."}]},{"type":"element","tag":"h3","props":{"id":"this-is-what-happened"},"children":[{"type":"text","value":"This is what happened"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started off well and I was determined to make less mistakes in the preparation this time around. I had plans to have my diet in check from day one. I would go to the gym as well. Next to this I kept a record of everything. Training sessions with Strava, sleep analysis and heart rate with Sleepcycle and food and weight with MyFitnessPal."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This year I decided to go for a training plan which let me train five times per week. Of these five sessions only three where running. The other two were either biking or a gym session. Running only three times per week meant that I could be flexible with the days as I sometimes work nights or have social events to attend. The plan had me running more miles each run but at a slow pace."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first couple of months everything went well. I actually beat my personal bests on the 5km and 10km quite easily."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/628465080","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" Strava run and "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/655258214","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" one."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And I also found back my love for cycling. I bought the cheapest bike with the best reviews. It has a Microshift group set which isn’t as precise but works very well if maintained properly."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Two and a half months in, things started to feel a bit painful, especially after running. I realise now that the stress I experienced outside of training impacted my capacity to handle the increased training load."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A couple of things happened at the same time. We had a cancer scare in the family for which I went to Amsterdam for a while. Things are better now but I’ve had a lot to worry about. Right after I came back to Paris my wife miscarried. We’ve been trying to have a baby for a long time and each time it fails it’s like getting hit in the face."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On top of these two things I found out that I have "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Irritable_bowel_syndrome","rel":["nofollow"]},"children":[{"type":"text","value":"IBS"}]},{"type":"text","value":". I’ve probably had it for a long time but it started to flare up around March this year. I’ve been trying to find the right diet and it’s not easy."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It seems that the absorption of nutrients isn’t working well due to the inflammation in my gut. I had to try to eat less foods that contains "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/FODMAP","rel":["nofollow"]},"children":[{"type":"text","value":"FODMAPs"}]},{"type":"text","value":" so that my insides would relax a bit. Having a constant belly ache and bad sleep as a result does not help the capacity of the body to deal with an increased training load. I made a little "},{"type":"element","tag":"a","props":{"href":"https://timbenniks.nl/fodmap","rel":["nofollow"]},"children":[{"type":"text","value":"tool"}]},{"type":"text","value":" to see which foods are allowed on the low FODMAP diet."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Funnily enough I felt quite good during runs. Well, except when it was hot. I hate warm humid weather and have I trouble training in it. It was usually after the runs that I would suddenly feel the pain my body was in. Willpower is an amazing thing. I think I could actually run the marathon on sheer brain juice tomorrow. It would do horrible things to my body though."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The run below seems to have gone very well but I got sick after and couldn’t train for a week. My whole body ached and I slept all weekend."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/683549355/","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" Strava run."}]},{"type":"element","tag":"h3","props":{"id":"what-i-have-learnt"},"children":[{"type":"text","value":"What I have learnt"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won’t be able to cope with the added stress."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It took 20 years to start enjoying sports. I lost a "},{"type":"element","tag":"a","props":{"href":"https://timbenniks.dev/articles/my-fitness-story","rel":["nofollow"]},"children":[{"type":"text","value":"lot of weight"}]},{"type":"text","value":" and got hooked. I could throw anything at my body and it would bounce back. Now it doesn’t and I have to accept that. This summer of training thought me to be humble and to listen both my peers (my wife mainly, as she is always right) and my body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Not running this race was a hard decision for me as I always stick to the challenges I set for myself. I’ve decided that feeling good is more important than running a marathon. I’ve done it once before and have proven that I can do it. My body can deal with running but it’s not comfortable doing it. I have my build against me. I’m going to focus on being flexible and strong. I’ll be running shorter distances and I’ll be cycling way more. Also, I’m going back to the gym to do what my body was build to do. Lift iron. I might even try yoga…"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt09jc5r7w862n5smsas.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"some-numbers"},"children":[{"type":"text","value":"Some Numbers"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ran 483.4km over 51 runs with an average pace of 05:40"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average distance was 9.5km per run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I went from 96.1 to 92.9 kilos"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I slept 8h 20m a night on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ate 2258kcal a day on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I took 9565 steps a day on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I had an average resting HR of 63.5bpm"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average food macro balance was 62.2% carbs, 16,2% fat, 21,5% protein."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"tldr","depth":3,"text":"tl;dr"},{"id":"the-load-capacity-model","depth":3,"text":"The Load-Capacity Model"},{"id":"this-is-what-happened","depth":3,"text":"This is what happened"},{"id":"what-i-have-learnt","depth":3,"text":"What I have learnt"},{"id":"some-numbers","depth":3,"text":"Some Numbers"}]}},"_type":"markdown","_id":"content:4.writing:why-i-didnt-run-the-2016-marathon.md","_source":"content","_file":"4.writing/why-i-didnt-run-the-2016-marathon.md","_extension":"md"},{"_path":"/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","description":"","conference":"vuejs.amsterdam 2019","talk":"Vue.js for L'Oreal. A case study.","location":"Amsterdam, The netherlands","date":"2019-02-14","id":"clifq5gzg40j20bw9ne2mh9n6","link":"https://vuejs.amsterdam","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md","_source":"content","_file":"5.speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md","_extension":"md"},{"_path":"/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","description":"","conference":"vuejs.amsterdam 2019","talk":"Vue.js for L'Oreal. A case study.","location":"Amsterdam, the Netherlands","date":"2019-02-26","id":"clifq5gns3xhu0buv6a8th0jk","link":"https://vuejs.amsterdam","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-02-26-clifq5gns3xhu0buv6a8th0jk.md","_source":"content","_file":"5.speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk.md","_extension":"md"},{"_path":"/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 04 19 Clifq5gd63xhq0buvufv6nagk","description":"","conference":"VueDay 2019","talk":"Vue.js for L'Oreal. A case study.","location":"Verona, Italy","date":"2019-04-19","id":"clifq5gd63xhq0buvufv6nagk","link":"https://2019.vueday.it/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-04-19-clifq5gd63xhq0buvufv6nagk.md","_source":"content","_file":"5.speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk.md","_extension":"md"},{"_path":"/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","description":"","conference":"Vue.js roadtrip 2019 - Paris","talk":"Team First. A framework to lead a team of developers to success in a high-pressure environment","location":"Paris, France","date":"2019-05-17","id":"clifq5g1f3wh90bw81u5sa0ai","link":"https://eventil.com/events/frontend-vuejs-roadtrip-paris","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md","_source":"content","_file":"5.speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md","_extension":"md"},{"_path":"/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 05 25 Clifq5fpd3xt00aw4grnzft29","description":"","conference":"Vue.js roadtrip 2019 - Barcelona","talk":"Team First. A framework to lead a team of developers to success in a high-pressure environment","location":"Barcelona, Spain","date":"2019-05-25","id":"clifq5fpd3xt00aw4grnzft29","link":"https://discover.events.com/es/catalunya/ciutat-vella/e/business/vuejs-frontend-roadtrip-barcelona-holaluz-office-294857096","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-05-25-clifq5fpd3xt00aw4grnzft29.md","_source":"content","_file":"5.speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29.md","_extension":"md"},{"_path":"/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","description":"","conference":"Vue.js Paris meetup","talk":"Vue.js for L'Oreal. A case study","location":"Paris, France","date":"2019-09-04","id":"clifq5fer3xhl0buvzzgwqg1k","link":"https://www.meetup.com/fr-FR/Vuejs-Paris/events/263934300/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md","_source":"content","_file":"5.speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md","_extension":"md"},{"_path":"/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","description":"","conference":"EXDS#19","talk":"Delivery guidelines for creative assets","location":"Amsterdam, The Netherlands","date":"2019-09-09","id":"clifq5f1b3wh10bw8ftmppjkc","link":"https://www.valtech.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md","_source":"content","_file":"5.speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md","_extension":"md"},{"_path":"/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 09 27 Clifq5eos3xhh0buvewly5gxs","description":"","conference":"Budapest VUE.JS meetup VueAnd.Me edition","talk":"Team First. A framework to lead a team of developers to success in a high-pressure environment","location":"Budapest, Hungary","date":"2019-09-27","id":"clifq5eos3xhh0buvewly5gxs","link":"https://www.meetup.com/Vue-js-Budapest/events/263805562/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-09-27-clifq5eos3xhh0buvewly5gxs.md","_source":"content","_file":"5.speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs.md","_extension":"md"},{"_path":"/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","description":"","conference":"The evolution of modern web development on monolithic platforms","talk":"JAMstack is the future. I think. Maybe.","location":"Paris, France","date":"2019-11-28","id":"clifq5ebo3wgx0bw8vno5ce0d","link":"https://www.meetup.com/Meet-up-at-Valtech-Front-Platform/events/265587330/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md","_source":"content","_file":"5.speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md","_extension":"md"},{"_path":"/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2019 12 17 Clifq5dyh40ij0bw9oquw072b","description":"","conference":"Vue.js Paris Meetup","talk":"JAMstack is the future. I think. Maybe.","location":"Paris, France","date":"2019-12-17","id":"clifq5dyh40ij0bw9oquw072b","link":"https://www.meetup.com/Vuejs-Paris/events/266953797/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2019-12-17-clifq5dyh40ij0bw9oquw072b.md","_source":"content","_file":"5.speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b.md","_extension":"md"},{"_path":"/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 02 18 Clifq5dk940if0bw9ok9achtj","description":"","conference":"Vue.js Amsterdam 2020","talk":"Team First. A framework to lead a team of developers to success in a high-pressure environment","location":"Amsterdam, The Netherlands","date":"2020-02-18","id":"clifq5dk940if0bw9ok9achtj","link":"https://vuejs.amsterdam/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-02-18-clifq5dk940if0bw9ok9achtj.md","_source":"content","_file":"5.speaking/2020-02-18-clifq5dk940if0bw9ok9achtj.md","_extension":"md"},{"_path":"/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","description":"","conference":"Front-end Love virtual Meetup","talk":"JAMstack is the future. I think. Maybe.","location":"Virtual","date":"2020-03-19","id":"clifq5dal3xsn0aw49a9wad1n","link":"https://youtu.be/Wq2AqONg7rs?t=5307","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-03-19-clifq5dal3xsn0aw49a9wad1n.md","_source":"content","_file":"5.speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n.md","_extension":"md"},{"_path":"/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","description":"","conference":"MallorcaJS meetup","talk":"Team First - Corona edition","location":"Virtual","date":"2020-04-22","id":"clifq5czw3wgs0bw8srwiffx1","link":"https://www.meetup.com/MallorcaJS/events/270156286","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-04-22-clifq5czw3wgs0bw8srwiffx1.md","_source":"content","_file":"5.speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1.md","_extension":"md"},{"_path":"/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","description":"","conference":"VueJS Olso Virtual Meetup","talk":"JAMstack is the future. I think. Maybe.","location":"Virtual","date":"2020-05-06","id":"clifq5cpx40hk0bw9odxcxt0q","link":"https://www.meetup.com/VueJS-Oslo/events/270218508/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md","_source":"content","_file":"5.speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md","_extension":"md"},{"_path":"/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","description":"","conference":"Talent.io talks Online","talk":"Team First - Corona edition","location":"Virtual","date":"2020-05-13","id":"clifq5cfw3xh00buvhyslf4s3","link":"https://www.eventbrite.com/o/talentio-16600656820","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-05-13-clifq5cfw3xh00buvhyslf4s3.md","_source":"content","_file":"5.speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3.md","_extension":"md"},{"_path":"/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","description":"","conference":"We Belong Here Podcast Interview","talk":"How I moved into tech from being a Nurse and Musician","location":"Virtual","date":"2020-05-25","id":"clifq5c5u3wgo0bw8g8yudazp","link":"https://webelongpodcast.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md","_source":"content","_file":"5.speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md","_extension":"md"},{"_path":"/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","description":"","conference":"That's my JAMstack podcast interview","talk":"JAMstack is my JAM. I guess...","location":"Virtual","date":"2020-05-28","id":"clifq5bvw40h20bw92kt7pmp1","link":"https://thatsmyjamstack.com/posts/tim-benniks/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-05-28-clifq5bvw40h20bw92kt7pmp1.md","_source":"content","_file":"5.speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1.md","_extension":"md"},{"_path":"/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 06 09 Clifq5bj73xrj0aw42st3pna4","description":"","conference":"ReactiveConf","talk":"Team First - Corona edition","location":"Virtual","date":"2020-06-09","id":"clifq5bj73xrj0aw42st3pna4","link":"https://www.meetup.com/ReactiveMeetupsPrague/events/270869144/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-06-09-clifq5bj73xrj0aw42st3pna4.md","_source":"content","_file":"5.speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4.md","_extension":"md"},{"_path":"/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","description":"","conference":"Prismic webinar","talk":"Why go headless? Steps to go from a monolithic CMS to a decoupled one.","location":"Virtual","date":"2020-07-21","id":"clifq5b6s3xrf0aw4s8ml5qjb","link":"https://www.youtube.com/watch?v=wVyMYGrI0hM","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md","_source":"content","_file":"5.speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md","_extension":"md"},{"_path":"/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","description":"","conference":"ImageCon 2020","talk":"A Developers Guide To Lowe Carbon Websites","location":"Virtual","date":"2020-07-27","id":"clifq5axb3xgw0buvy6hrvpv2","link":"https://www.imagecon.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md","_source":"content","_file":"5.speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md","_extension":"md"},{"_path":"/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","description":"","conference":"Views on Vue Podcast Interview","talk":"My views on Vue at scale and on enterprise level","location":"Virtual","date":"2020-08-05","id":"clifq5anp3xrb0aw4jxeipa7e","link":"https://devchat.tv/views-on-vue/vov-116-using-vue-at-scale-at-loreal-with-tim-benniks/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md","_source":"content","_file":"5.speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md","_extension":"md"},{"_path":"/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","description":"","conference":"JS Monthly Online","talk":"A Developers Guide To Low Carbon Websites","location":"Virtual","date":"2020-08-26","id":"clifq5a9x3wgk0bw8x8qfl5rk","link":"https://www.meetup.com/js-monthly/events/272459669/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md","_source":"content","_file":"5.speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md","_extension":"md"},{"_path":"/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","description":"","conference":"Vue.js Global Conference 2020","talk":"An introduction to Vite and VitePress","location":"Virtual","date":"2020-09-17","id":"clifq59zj3wgg0bw8xmh09vvm","link":"https://vuejs.amsterdam","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md","_source":"content","_file":"5.speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md","_extension":"md"},{"_path":"/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 10 14 Clifq59mp3wgc0bw82qykah6x","description":"","conference":"Vue.js Antwerp - October 2020","talk":"The magical combination for creating a modern website.","location":"Virtual","date":"2020-10-14","id":"clifq59mp3wgc0bw82qykah6x","link":"https://www.meetup.com/vue-antwerp/events/273585859/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-10-14-clifq59mp3wgc0bw82qykah6x.md","_source":"content","_file":"5.speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x.md","_extension":"md"},{"_path":"/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 10 29 Clifq59b83xr60aw45w2sqa1g","description":"","conference":"JS Monthly Online #07, Oct Meetup","talk":"I will take you through the new features of Webpack 5 and also provide some examples where we could benefit in your day to day development live","location":"Virtual","date":"2020-10-29","id":"clifq59b83xr60aw45w2sqa1g","link":"https://www.meetup.com/js-monthly/events/273843246/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-10-29-clifq59b83xr60aw45w2sqa1g.md","_source":"content","_file":"5.speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g.md","_extension":"md"},{"_path":"/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 11 10 Clifq590340gy0bw9onnmgr7y","description":"","conference":"Live coding for the Prismic Slice Contest","talk":"Lucie and Tim will connect to build a simple Slice Library for 1 hour.\nThey will be using the New Slice Builder for that, which also generates Storybook stories for each of their components.","location":"Virtual","date":"2020-11-10","id":"clifq590340gy0bw9onnmgr7y","link":"https://www.youtube.com/watch?v=p3Wih8zOfI8","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-11-10-clifq590340gy0bw9onnmgr7y.md","_source":"content","_file":"5.speaking/2020-11-10-clifq590340gy0bw9onnmgr7y.md","_extension":"md"},{"_path":"/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 11 11 Clifq58oo40gu0bw9iffiakmh","description":"","conference":"Podcast: RETHINK Luxury - Ep 2: Sustainability","talk":"We’ll be diving into ethical sourcing in luxury, the challenges of implementing sustainable businesses practices, and envisioning a better world forward","location":"Podcast","date":"2020-11-11","id":"clifq58oo40gu0bw9iffiakmh","link":"https://www.rethink.industries/podcast/rethink-luxury-sustainability/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-11-11-clifq58oo40gu0bw9iffiakmh.md","_source":"content","_file":"5.speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh.md","_extension":"md"},{"_path":"/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","description":"","conference":"Zeplin ZAM JAM round table discussion","talk":"In this discussion between multiple agencies we try to provide real world insight into how teams are using Zeplin.","location":"Virtual","date":"2020-12-01","id":"clifq58cz3xr10aw4n6qndf3s","link":"https://www.youtube.com/channel/UCM2z6CHM4wvmlB9qo_dq0dg","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-01-clifq58cz3xr10aw4n6qndf3s.md","_source":"content","_file":"5.speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s.md","_extension":"md"},{"_path":"/speaking/2020-12-02-clifq582i3wg80bw8rszss5am","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 02 Clifq582i3wg80bw8rszss5am","description":"","conference":"Cloudinary Webinar: Road to headless","talk":"Join us to learn how a headless architecture can help you streamline content delivery through an integration of composed components with best-of-breed vendors.","location":"Virtual","date":"2020-12-02","id":"clifq582i3wg80bw8rszss5am","link":"https://cloudinary.com","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-02-clifq582i3wg80bw8rszss5am.md","_source":"content","_file":"5.speaking/2020-12-02-clifq582i3wg80bw8rszss5am.md","_extension":"md"},{"_path":"/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","description":"","conference":"Tech Talks with Santosh ","talk":"Santosh: In this talk show, we will have some awesome developers, sharing content from the programming language they work on.","location":"Virtual (Youtube Livestream)","date":"2020-12-11","id":"clifq57o03xgp0buvlvdxm5l9","link":"https://www.youtube.com/c/TechTalksWithSantosh","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-11-clifq57o03xgp0buvlvdxm5l9.md","_source":"content","_file":"5.speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9.md","_extension":"md"},{"_path":"/speaking/2020-12-16-clifq57c43wg40bw81h7fr291","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 16 Clifq57c43wg40bw81h7fr291","description":"","conference":"Zeplin ZAM JAM","talk":"In this first ever Zam Jam session, we’re talking to 3 digital leaders about how Zeplin helps their agency foster deep customer engagement and multi-disciplined team collaboration to build beautiful products and deliver on the promise of design.","location":"Virtual (YouTube Livestream)","date":"2020-12-16","id":"clifq57c43wg40bw81h7fr291","link":"https://www.youtube.com/watch?v=tUc9CKiC0Go","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-16-clifq57c43wg40bw81h7fr291.md","_source":"content","_file":"5.speaking/2020-12-16-clifq57c43wg40bw81h7fr291.md","_extension":"md"},{"_path":"/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2020 12 18 Clifq571z40gq0bw9b62wbowr","description":"","conference":"Environmentally Sustainable Websites","talk":"Digital's Carbon Footprint, Green Development Choices and Options, Sustainable Shortcuts, Optimised User Experiences, MACH/Composable Architecture","location":"Virtual","date":"2020-12-18","id":"clifq571z40gq0bw9b62wbowr","link":"https://www.valtech.com/podcasts/digital-transformation-podcast-environmentally-sustainable-websites","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2020-12-18-clifq571z40gq0bw9b62wbowr.md","_source":"content","_file":"5.speaking/2020-12-18-clifq571z40gq0bw9b62wbowr.md","_extension":"md"},{"_path":"/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 01 12 Clifq56q43xgk0buv4hu04quz","description":"","conference":"Vue.js // Berlin","talk":"The magical combination for creating a modern website.","location":"Virtual","date":"2021-01-12","id":"clifq56q43xgk0buv4hu04quz","link":"https://www.meetup.com/Vue-js-Berlin/events/wwtgqrycccbqb/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-01-12-clifq56q43xgk0buv4hu04quz.md","_source":"content","_file":"5.speaking/2021-01-12-clifq56q43xgk0buv4hu04quz.md","_extension":"md"},{"_path":"/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","description":"","conference":"Web Dev x Sustainability ","talk":"BOECKBX - Let's Talk About Eco-Friendliness in Web Development","location":"YouTube","date":"2021-02-01","id":"clifq56gq3xqx0aw47qor4w9s","link":"https://www.youtube.com/watch?v=LcUaUC6BxUk","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-02-01-clifq56gq3xqx0aw47qor4w9s.md","_source":"content","_file":"5.speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s.md","_extension":"md"},{"_path":"/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 02 02 Clifq56623xqt0aw44sbds5cn","description":"","conference":"The Power of Cross-Technology Innovation","talk":"#21 with Peggy, Tim, and Idoia","location":"Virtual","date":"2021-02-02","id":"clifq56623xqt0aw44sbds5cn","link":"https://www.linkedin.com/video/live/urn:li:ugcPost:6762404029302640640/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-02-02-clifq56623xqt0aw44sbds5cn.md","_source":"content","_file":"5.speaking/2021-02-02-clifq56623xqt0aw44sbds5cn.md","_extension":"md"},{"_path":"/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 02 22 Clifq55tf40gk0bw9vofea3yp","description":"","conference":"JS World Conference","talk":"The Modern DXP. How JAMstack will change the world.","location":"Virtual","date":"2021-02-22","id":"clifq55tf40gk0bw9vofea3yp","link":"https://frontenddeveloperlove.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-02-22-clifq55tf40gk0bw9vofea3yp.md","_source":"content","_file":"5.speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp.md","_extension":"md"},{"_path":"/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","description":"","conference":"GatsbyConf 2021","talk":"A workshop on connecting ContentStack, Gatsby and Uniform","location":"Virtual","date":"2021-03-03","id":"clifq55jz3xqp0aw4je7y5sw1","link":"https://gatsbyconf.com/event/easily-build-a-dynamic-and-personalized-website-with-contentstack-gatsby-and-uniform/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md","_source":"content","_file":"5.speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md","_extension":"md"},{"_path":"/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 03 24 Clifq559p3xgf0buvzch9im3l","description":"","conference":"City JS Conf 2021","talk":"A developers guide to low carbon websites","location":"Virtual","date":"2021-03-24","id":"clifq559p3xgf0buvzch9im3l","link":"https://cityjsconf.org/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-03-24-clifq559p3xgf0buvzch9im3l.md","_source":"content","_file":"5.speaking/2021-03-24-clifq559p3xgf0buvzch9im3l.md","_extension":"md"},{"_path":"/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","description":"","conference":"Before Devbreak","talk":"Dynamic personalization on JAMstack websites","location":"Virtual","date":"2021-04-07","id":"clifq54zf3wfz0bw80v5gzndk","link":"https://www.devbreak.io/before-devbreak","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-04-07-clifq54zf3wfz0bw80v5gzndk.md","_source":"content","_file":"5.speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk.md","_extension":"md"},{"_path":"/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 04 20 Clifq54na3xgb0buvrvmbamxf","description":"","conference":"Vue Storefront Summit 2021","talk":"Hyper fast personalization for modern e-commerce","location":"Virtual","date":"2021-04-20","id":"clifq54na3xgb0buvrvmbamxf","link":"https://hopin.com/events/vue-storefront-summit-2021","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-04-20-clifq54na3xgb0buvrvmbamxf.md","_source":"content","_file":"5.speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf.md","_extension":"md"},{"_path":"/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","description":"","conference":"2021 VueDay Italy","talk":"MC & talk: Magical combination to build a modern website","location":"Virtual","date":"2021-04-29","id":"clifq54ct3wfu0bw8zsr9mejw","link":"https://2021.vueday.it/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md","_source":"content","_file":"5.speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md","_extension":"md"},{"_path":"/speaking/2021-07-27-clifq542s3xg60buvdk199xtq","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 07 27 Clifq542s3xg60buvdk199xtq","description":"","conference":"Programmed in Pencil Meetup","talk":"This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","location":"Virtual","date":"2021-07-27","id":"clifq542s3xg60buvdk199xtq","link":"https://www.programmedinpencil.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-07-27-clifq542s3xg60buvdk199xtq.md","_source":"content","_file":"5.speaking/2021-07-27-clifq542s3xg60buvdk199xtq.md","_extension":"md"},{"_path":"/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 09 07 Clifq53so3wfq0bw81xni3t7x","description":"","conference":"DevBreak - The ultimate tech festival","talk":"JAMstack is the future. I think. Maybe.","location":"Bouville, France","date":"2021-09-07","id":"clifq53so3wfq0bw81xni3t7x","link":"https://www.devbreak.io/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-09-07-clifq53so3wfq0bw81xni3t7x.md","_source":"content","_file":"5.speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x.md","_extension":"md"},{"_path":"/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","description":"","conference":"Fast Forward 2021","talk":"This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","location":"Virtual","date":"2021-11-04","id":"clifq53ib40gf0bw9c3mxprzu","link":"https://www.contentful.com/fast-forward/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-11-04-clifq53ib40gf0bw9c3mxprzu.md","_source":"content","_file":"5.speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu.md","_extension":"md"},{"_path":"/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 11 10 Clifq536v3xg20buvlz1n7ddw","description":"","conference":"Kontent Horizons","talk":"This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","location":"Virtual","date":"2021-11-10","id":"clifq536v3xg20buvlz1n7ddw","link":"https://horizons.kontent.ai/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-11-10-clifq536v3xg20buvlz1n7ddw.md","_source":"content","_file":"5.speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw.md","_extension":"md"},{"_path":"/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","description":"","conference":"VueConf Toronto 2021","talk":"Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again...","location":"Virtual","date":"2021-11-22","id":"clifq52wr3wfm0bw83eawjx9x","link":"https://www.vuetoronto.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-11-22-clifq52wr3wfm0bw83eawjx9x.md","_source":"content","_file":"5.speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x.md","_extension":"md"},{"_path":"/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","description":"","conference":"E-Commerce tech summit 21 by Geekle","talk":"Modern Commerce - How Jamstack will change the world","location":"Virtual","date":"2021-12-01","id":"clifq52jm3xqj0aw4mxuyuaey","link":"https://geekle.us/e-commerce","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md","_source":"content","_file":"5.speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md","_extension":"md"},{"_path":"/speaking/2021-12-14-clifq528940gb0bw9bok0o68k","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2021 12 14 Clifq528940gb0bw9bok0o68k","description":"","conference":"Vue.js Berlin","talk":"Vue js round-table discussion","location":"Virtual","date":"2021-12-14","id":"clifq528940gb0bw9bok0o68k","link":"https://www.meetup.com/Vue-js-Berlin/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2021-12-14-clifq528940gb0bw9bok0o68k.md","_source":"content","_file":"5.speaking/2021-12-14-clifq528940gb0bw9bok0o68k.md","_extension":"md"},{"_path":"/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","description":"","conference":"The Jam.dev 2022","talk":"Cable Managing the Jamstack","location":"Virtual","date":"2022-01-27","id":"clifq51vy3wf30bw8qsv8nsv9","link":"https://cfe.dev/events/the-jam-2022/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md","_source":"content","_file":"5.speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md","_extension":"md"},{"_path":"/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 02 08 Clifq51j53wez0bw8cd1znjmi","description":"","conference":"Kontent Rocks podcast","talk":"Personalisation in the Jamstack with Kentico Kontent","location":"virtual","date":"2022-02-08","id":"clifq51j53wez0bw8cd1znjmi","link":"https://podcasts.apple.com/us/podcast/kontent-rocks-podcast/id754786884","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-02-08-clifq51j53wez0bw8cd1znjmi.md","_source":"content","_file":"5.speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi.md","_extension":"md"},{"_path":"/speaking/2022-02-10-clifq515940g70bw9yu0ltedp","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 02 10 Clifq515940g70bw9yu0ltedp","description":"","conference":"LAB Group Round Table","talk":"Stick or Twist: Monolith v.s Microservices","location":"virtual","date":"2022-02-10","id":"clifq515940g70bw9yu0ltedp","link":"https://lab.co.uk/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-02-10-clifq515940g70bw9yu0ltedp.md","_source":"content","_file":"5.speaking/2022-02-10-clifq515940g70bw9yu0ltedp.md","_extension":"md"},{"_path":"/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 03 01 Clifq50sj40g30bw9rqy825mb","description":"","conference":"Vue Storefront Hackathon - Flash Talk","talk":"Modern Commerce - How Jamstack will change the world","location":"Virtual","date":"2022-03-01","id":"clifq50sj40g30bw9rqy825mb","link":"https://www.youtube.com/watch?v=1lhZqBvgoxU","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-03-01-clifq50sj40g30bw9rqy825mb.md","_source":"content","_file":"5.speaking/2022-03-01-clifq50sj40g30bw9rqy825mb.md","_extension":"md"},{"_path":"/speaking/2022-03-02-clifq50g53xfr0buv56km2voa","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 03 02 Clifq50g53xfr0buv56km2voa","description":"","conference":"GatsbyConf 2022","talk":"The Modern DXP: How Jamstack will change the world","location":"Virtual","date":"2022-03-02","id":"clifq50g53xfr0buv56km2voa","link":"https://www.gatsbyconf.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-03-02-clifq50g53xfr0buv56km2voa.md","_source":"content","_file":"5.speaking/2022-03-02-clifq50g53xfr0buv56km2voa.md","_extension":"md"},{"_path":"/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 05 26 Clifq506e3wev0bw88q2lf63q","description":"","conference":"Vue.js Global Summit'22","talk":"The future of Jamstack is composable","location":"virtual","date":"2022-05-26","id":"clifq506e3wev0bw88q2lf63q","link":"https://events.geekle.us/vuejs/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-05-26-clifq506e3wev0bw88q2lf63q.md","_source":"content","_file":"5.speaking/2022-05-26-clifq506e3wev0bw88q2lf63q.md","_extension":"md"},{"_path":"/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","description":"","conference":"Vue.js Global 2022","talk":"Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again","location":"Theater Amsterdam, The Netherlands","date":"2022-06-02","id":"clifq4zvh40fz0bw986sdpv5u","link":"https://vuejs.amsterdam/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-06-02-clifq4zvh40fz0bw986sdpv5u.md","_source":"content","_file":"5.speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u.md","_extension":"md"},{"_path":"/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","description":"","conference":"MACHathon LinkedIn Live","talk":"Presenting MACHathon Uniform Entry","location":"Linkedin","date":"2022-06-13","id":"clifq4z8o3xqf0aw49q8f55f9","link":"https://www.linkedin.com/video/event/urn:li:ugcPost:6940601525266206720/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md","_source":"content","_file":"5.speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md","_extension":"md"},{"_path":"/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","description":"","conference":"The state of Jamstack by Kentico","talk":"Discussion on state of Jamstack 2022","location":"Virtual","date":"2022-06-13","id":"clifq4zjc40fv0bw95ufcly4y","link":"https://kontent.ai/webinars/state-of-jamstack-2022-report-emea/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-06-13-clifq4zjc40fv0bw95ufcly4y.md","_source":"content","_file":"5.speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y.md","_extension":"md"},{"_path":"/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","description":"","conference":"Vue.js Roadtrip Barcelona","talk":"The future of Jamstack is composable","location":"Barcalonam Glovo HQ, Barcelona, Spain","date":"2022-07-01","id":"clifq4ywg3xq60aw48tkujxyl","link":"https://www.eventbrite.co.uk/e/vuejs-roadtrip-barcelona-tickets-339022735127","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-07-01-clifq4ywg3xq60aw48tkujxyl.md","_source":"content","_file":"5.speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl.md","_extension":"md"},{"_path":"/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 07 27 Clifq4yep3xf20buv5vorwrl5","description":"","conference":"Composability Summit 2022","talk":"The modern digital pipeline, the future is composable","location":"Virtual","date":"2022-07-27","id":"clifq4yep3xf20buv5vorwrl5","link":"https://composability.dev/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-07-27-clifq4yep3xf20buv5vorwrl5.md","_source":"content","_file":"5.speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5.md","_extension":"md"},{"_path":"/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 08 10 Clifq4xw640fr0bw9po5n2nug","description":"","conference":"Netlify Live Stream","talk":"Live: Creating a Composable Site with Personalization on the Edge","location":"Virtual","date":"2022-08-10","id":"clifq4xw640fr0bw9po5n2nug","link":"https://www.youtube.com/watch?v=mntPUZRy3wA","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-08-10-clifq4xw640fr0bw9po5n2nug.md","_source":"content","_file":"5.speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug.md","_extension":"md"},{"_path":"/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 08 11 Clifq4xdz3wek0bw862z7knrr","description":"","conference":"Agility CMS Webinar","talk":"How can enterprises move from monolithic solutions to composability","location":"Virtual","date":"2022-08-11","id":"clifq4xdz3wek0bw862z7knrr","link":"https://agilitycms.com/resources/events/how-can-enterprises-move-from-monolithic-solutions-to-composability","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-08-11-clifq4xdz3wek0bw862z7knrr.md","_source":"content","_file":"5.speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr.md","_extension":"md"},{"_path":"/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","description":"","conference":"Swipe Con 2022","talk":"The power of personalization in composable architectures","location":"Virtual","date":"2022-08-25","id":"clifq4x0z3xq20aw48a1n9hxy","link":"https://uandi.com/swipe-con","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md","_source":"content","_file":"5.speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md","_extension":"md"},{"_path":"/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","description":"","conference":"Cloudinary Podcast","talk":"Benefits and Factors to Consider with MACH Architecture","location":"Virtual","date":"2022-09-14","id":"clifq4wqo40fh0bw9sifjtw70","link":"https://www.youtube.com/watch?v=uC1iD_Sq_Bo","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-09-14-clifq4wqo40fh0bw9sifjtw70.md","_source":"content","_file":"5.speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70.md","_extension":"md"},{"_path":"/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","description":"","conference":"Javascript Global Summit'22","talk":"The modern digital pipeline, the future is composable","location":"virtual","date":"2022-09-27","id":"clifq4wef3xpx0aw4l7ueiqwb","link":"https://events.geekle.us/js/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md","_source":"content","_file":"5.speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md","_extension":"md"},{"_path":"/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 10 14 Clifq4w263xet0buv0mzqzfre","description":"","conference":"Strapi live stream","talk":"Composability with Strapi and Uniform","location":"Virtual","date":"2022-10-14","id":"clifq4w263xet0buv0mzqzfre","link":"https://lu.ma/strapi-uniform-magic","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-10-14-clifq4w263xet0buv0mzqzfre.md","_source":"content","_file":"5.speaking/2022-10-14-clifq4w263xet0buv0mzqzfre.md","_extension":"md"},{"_path":"/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 11 02 Clifq4vps3xep0buvimxfntyq","description":"","conference":"VueConf Toronto 2022","talk":"The modern digital pipeline, the future of the jamstack is composable","location":"Metro Toronto Convention Centre","date":"2022-11-02","id":"clifq4vps3xep0buvimxfntyq","link":"https://www.vuetoronto.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-11-02-clifq4vps3xep0buvimxfntyq.md","_source":"content","_file":"5.speaking/2022-11-02-clifq4vps3xep0buvimxfntyq.md","_extension":"md"},{"_path":"/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","description":"","conference":"JamstackConf 2022","talk":"The modern digital pipeline, the future of the jamstack is composable","location":"San Fransisco, United States","date":"2022-11-08","id":"clifq4vdb40el0bw9il2y3pb4","link":"https://jamstack.org/conf/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2022-11-08-clifq4vdb40el0bw9il2y3pb4.md","_source":"content","_file":"5.speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4.md","_extension":"md"},{"_path":"/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","description":"","conference":"Vuejs Amsterdam","talk":"Alive and Kicking - a Vue into Rock & Roll","location":"Amsterdam","date":"2023-02-08","id":"clifq4uz43xpt0aw4mw4awvuj","link":"https://vuejs.amsterdam/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md","_source":"content","_file":"5.speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md","_extension":"md"},{"_path":"/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","description":"","conference":"CityJS Conf London","talk":"The modern tech stack is composable","location":"London","date":"2023-03-29","id":"clifq4ul43we80bw8ihhkw7qr","link":"https://cityjsconf.org/speakers","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-03-29-clifq4ul43we80bw8ihhkw7qr.md","_source":"content","_file":"5.speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr.md","_extension":"md"},{"_path":"/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","description":"","conference":"Cloudinary User Summit London","talk":"Alive and Kicking, a Vue into Rock & Roll","location":"London","date":"2023-04-20","id":"clifq4u9b3xpm0aw45vj51alh","link":"https://events.cloudinary.com/cloudinaryusersummitlondon","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-04-20-clifq4u9b3xpm0aw45vj51alh.md","_source":"content","_file":"5.speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh.md","_extension":"md"},{"_path":"/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 05 12 Clifq4tw33we40bw8jxhaaroo","description":"","conference":"Vue.js London Life Conference","talk":"Alive and Kicking, a Vue into Rock & Roll","location":"London","date":"2023-05-12","id":"clifq4tw33we40bw8jxhaaroo","link":"https://vuejslive.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-05-12-clifq4tw33we40bw8jxhaaroo.md","_source":"content","_file":"5.speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo.md","_extension":"md"},{"_path":"/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","description":"","conference":"CityJS Athens","talk":"Alive and Kicking, a Vue into Rock & Roll as MC","location":"Athens","date":"2023-05-29","id":"clifq4thm3xel0buvdpqx8bdm","link":"https://greece.cityjsconf.org/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-05-29-clifq4thm3xel0buvdpqx8bdm.md","_source":"content","_file":"5.speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm.md","_extension":"md"},{"_path":"/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","description":"","conference":"Vue.js Global Summit '23","talk":"The modern front end is composable","location":"Virtual","date":"2023-06-06","id":"clifq4t4w40dr0bw98f7p9zrq","link":"https://events.geekle.us/vuejs23/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md","_source":"content","_file":"5.speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md","_extension":"md"},{"_path":"/speaking/2023-07-27-clifq4sto3xph0aw4letve613","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2023 07 27 Clifq4sto3xph0aw4letve613","description":"","conference":"WeAreDevelopers World Congress","talk":"Alive and Kicking, a Vue into Rock & Roll","location":"Berlin","date":"2023-07-27","id":"clifq4sto3xph0aw4letve613","link":"https://www.wearedevelopers.com/world-congress","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2023-07-27-clifq4sto3xph0aw4letve613.md","_source":"content","_file":"5.speaking/2023-07-27-clifq4sto3xph0aw4letve613.md","_extension":"md"},{"_path":"/speaking/2024-02-29-clkzot86xire30aujuy08465e","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2024 02 29 Clkzot86xire30aujuy08465e","description":"","conference":"DEVworld Conference 2024","talk":"Alive and Kicking - a vue into rock & roll","location":"Amsterdam","date":"2024-02-29","id":"clkzot86xire30aujuy08465e","link":"https://devworldconference.com/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2024-02-29-clkzot86xire30aujuy08465e.md","_source":"content","_file":"5.speaking/2024-02-29-clkzot86xire30aujuy08465e.md","_extension":"md"},{"_path":"/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","description":"","conference":"ContentCon 2024","talk":"Alive and Kicking","location":"Austin, Texas","date":"2024-06-05","id":"clqdq6ui7ts730bvzmk1xw47t","link":"https://www.contentstack.com/contentcon","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","_source":"content","_file":"5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","_extension":"md"},{"_path":"/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v","_dir":"speaking","_draft":false,"_partial":false,"_locale":"","title":"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","description":"","conference":"CMSCamp Mallorca","talk":"Alive and Kicking","location":"Catalonia Majorica Palma Mallorca","date":"2024-09-27","id":"clqdq87gltsup0bvztwqw2f1v","link":"https://mallorca.cmscamp.eu/","body":{"type":"root","children":[],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","_source":"content","_file":"5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","_extension":"md"},{"_path":"/speaking","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Speaking","description":"I love speaking at conferences all around the world. This page lists all upcoming and older talks I've done.","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Speaking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"VUEJS AMSTERDAM 2023"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","fit":"crop","height":618,"loading":"eager","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741136/Tim/332051017_2552795964930421_7872527921593081497_n.jpg","width":1440},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Presskit"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Looking for my bio, talk information or pictures? Go to the presskit page to find different varieties of my bio, headshots and past talks I have done. This page also includes slides and other info needed to add me as a speaker to your conference."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Emcee"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Masters of ceremonies, commonly called emcees, offer a profound value at conferences. As a seasoned emcee, I usually start with an anecdote as introduction, followed by an in-depth Q&A session that truly features the speakers and their content. Over the past few years, my emcee gigs have been largely virtual. Starting 2022, however, I've also acted as emcee at in-person conferences, such as Vuejs Amsterdam."}]}]}]}]}]},{"type":"element","tag":"talks","props":{":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:index.md","_source":"content","_file":"5.speaking/index.md","_extension":"md"},{"_path":"/livestreams","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"live streams","description":"An overview of Tim's live streams","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Live streams"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Live streams are the cornerstone of learning in public, gaining social trust and engaging with the community."}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"live-hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph Streams"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"misc-streams"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Personal Streams"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"live-uniform"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform Streams"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:6.livestreams.md","_source":"content","_file":"6.livestreams.md","_extension":"md"},{"_path":"/presskit","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Press kit","description":"Tim Benniks Press kit for conferences, webinars, and interviews.","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Press Kit"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659294037/Presskit/FDLC2019_462.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"title-block","props":{"tag":"h3","title":"What do I do"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim Benniks is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":". "},{"type":"element","tag":"a","props":{"href":"https://machalliance.com","rel":["nofollow"],"title":"https://machalliance.com"},"children":[{"type":"text","value":"MACH Alliance"}]},{"type":"text","value":" Tech Council member, "},{"type":"element","tag":"a","props":{"href":"https://nuxt.com","rel":["nofollow"],"title":"https://nuxt.com"},"children":[{"type":"text","value":"NuxtJS"}]},{"type":"text","value":" ambassador, "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com","rel":["nofollow"],"title":"https://cloudinary.com"},"children":[{"type":"text","value":"Cloudinary"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://supabase.com","rel":["nofollow"],"title":"https://supabase.com"},"children":[{"type":"text","value":"Supabase"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://algolia.com","rel":["nofollow"],"title":"https://algolia.com"},"children":[{"type":"text","value":"Algolia"}]},{"type":"text","value":" Ambassador, and "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"content creator"}]},{"type":"text","value":"."}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Mini bio"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Over the past 15 years, Tim has worked at various agencies in Amsterdam and Paris with global clients like Nike, Heineken, Google, Tommy Hilfiger, EA Games, CHANEL, L'Oréal, Procter & Gamble, Louis Vuitton, and Hermès."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Currently, Tim is Developer Relations Lead for Outreach and Awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/","rel":["nofollow"],"title":"https://hygraph.com/"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" with a focus on content creation, speaking, and community building. In particular, he plays an active role in the developer community as a frequent speaker at conferences and creator of YouTube videos on modern technologies. He also collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS while serving on the MACH Alliance Tech Council. It's all about quality, community, and development of fancy websites."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A demanding job like that needs balancing. Tim plays guitar and revels in family time with his wife, cats, and two little Corgis called Princess Nugget and Scarlet."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Shorter mini bio"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" with a focus on developer relations, community building, and content creation. He’s active in the developer community through speaking engagements at conferences and creation of YouTube videos on modern technologies. Tim collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS, and is a member of the MACH Alliance Tech Council. It's all about quality, community, and development of great websites."}]}]}]}]}]},{"type":"element","tag":"speaker-details","props":{},"children":[]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741257/Tim/IMG_1020.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"speaker-media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:descripiton":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Click on the images for their full resolution versions."}]}]},{"type":"element","tag":"template","props":{"v-slot:image1":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg","rel":["nofollow"]},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in Berlin","height":6960,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg","width":4640,"className":["fancy-image"]},"children":[]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:image2":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg","rel":["nofollow"]},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in Paris","height":3080,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg","width":5472,"className":["fancy-image"]},"children":[]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:image3":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png","rel":["nofollow"]},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in his studio","height":2880,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png","width":5120,"className":["fancy-image"]},"children":[]}]}]}]}]},{"type":"element","tag":"talks","props":{":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/347230970_264022386183185_8706521077970757537_n_vpj6co","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:7.presskit.md","_source":"content","_file":"7.presskit.md","_extension":"md"},{"_path":"/alive-and-kicking","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Alive and kicking","description":"Alive and kicking, a browser based guitar karaoke with composable architecture using live voting. Built with Vue, Nuxt, Supabase and Hygraph.","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A GUITAR KARAOKE EXPERIENCE WITH COMPOSABLE ARCHITECTURE"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718459447/Tim/contentcon-tim.png","width":1440,"fit":"cover","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Rock & Roll in the browser"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Get ready to rock out at your next tech conference! I've created an electrifying browser-based karaoke experience tailored explicitly for rock & roll guitar. Using the innovative power of Vue, Nuxt, and webmidi, everything from the backing tracks to the guitar amp presets is dynamically controlled."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And the best part? You, the audience, get to participate too! By logging in with Twitter or Github, you can live-vote what songs I should play next, making this a fully interactive and unforgettable experience."}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948358/Alive%20and%20Kicking/104649HDV09996-Enhanced-NR.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Share your vote"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You, the audience, get to participate too! By logging in with your Twitter or Github account, you can live-vote what songs I should play next during my guitar karaoke performance."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But that's not all - every vote you cast will be displayed on the big screen as a bouncing ball, making you a part of the talk. You vote, I play - let's make this a night to remember!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After voting for your favorite song, you can share a personalized image of the song and your profile picture on your social media accounts."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:media":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":1080,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw md:40vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718461639/share_ddu23k.jpg","width":1920},"children":[]}]}]}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948347/Alive%20and%20Kicking/102217HDV09938-Enhanced-NR.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"6",":small":"false","folder":"alive-and-kicking"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:8.alive-and-kicking.md","_source":"content","_file":"8.alive-and-kicking.md","_extension":"md"}],"navigation":[{"title":"About Tim","_path":"/about"},{"title":"Videos","_path":"/videos","children":[{"title":"Alive And Kicking","_path":"/videos/alive-and-kicking","children":[{"title":"The story behind Alive and kicking","_path":"/videos/alive-and-kicking/000-hhpitreyobi"},{"title":"72 hours in Austin, TX","_path":"/videos/alive-and-kicking/001-mvq-_s20ndk"},{"title":"Vue.js guitar karaoke: how I built it","_path":"/videos/alive-and-kicking/002-m0mrligs6i0"},{"title":"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","_path":"/videos/alive-and-kicking/003-p3pm_0p8lz4"},{"title":"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","_path":"/videos/alive-and-kicking/004-4m4tij0z20"}]},{"title":"Headless Creator","_path":"/videos/headless-creator","children":[{"title":"CDOBC 5: Transitioning from DXP to DXC","_path":"/videos/headless-creator/000-m8on6zkr7q4"},{"title":"CDOBC Lesson 4: The DXP Tech Stack Overview","_path":"/videos/headless-creator/001-smbq8aoa4jm"},{"title":"CDOBC Lesson 3: Separation of Concerns","_path":"/videos/headless-creator/002-sx5fbtcnrsg"},{"title":"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","_path":"/videos/headless-creator/003-eybdyoihn1g"},{"title":"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","_path":"/videos/headless-creator/004-hshm8hlopka"}]},{"title":"Hygraph","_path":"/videos/hygraph","children":[{"title":"The simplest way to connect Hygraph to NuxtJS","_path":"/videos/hygraph/000-m8qftvizsmw"},{"title":"The simplest way to connect Hygraph to Astro","_path":"/videos/hygraph/001-aahu9x5wajy"},{"title":"The simplest way to connect Hygraph to Next.js","_path":"/videos/hygraph/002-fksw0bfbtdo"},{"title":"How to connect Commercetools and Hygraph","_path":"/videos/hygraph/003-x8tb3li6dg0"},{"title":"How to add a remote REST source to Hygraph","_path":"/videos/hygraph/004-zredqavtow4"},{"title":"How to add a remote GraphQL source to Hygraph","_path":"/videos/hygraph/005-aydykxckkfe"},{"title":"CMS Feature ninja: set up a GraphQL where clause on any field","_path":"/videos/hygraph/006-axq-jo8hmzq"},{"title":"Headless commerce with #Nuxt and #Tailwind.","_path":"/videos/hygraph/007-e9jxm4h4a48"},{"title":"Creating an Enterprise News starter with Next.js and Hygraph CMS","_path":"/videos/hygraph/008-hs1imxycyqg"},{"title":"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","_path":"/videos/hygraph/009-snhzgplvm8o"},{"title":"Set up headless CMS localization in 6 mins","_path":"/videos/hygraph/010-8_ttkblpdpm"},{"title":"How to use Nuxt 3 with Hygraph and GraphQL","_path":"/videos/hygraph/011-keqn1rt8fwq"},{"title":"How to add any REST source to Hygraph headless CMS","_path":"/videos/hygraph/012-nphsqsol3xc"},{"title":"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","_path":"/videos/hygraph/013-exzp3okqtxk"}]},{"title":"Videos","_path":"/videos"},{"title":"Live Hygraph","_path":"/videos/live-hygraph","children":[{"title":"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","_path":"/videos/live-hygraph/000-eydstedp-v4"},{"title":"How to integrate Cloudinary with headless CMS w/ Colby Fayock","_path":"/videos/live-hygraph/001-_iah2t5g02o"},{"title":"Combining WordPress with Headless CMS","_path":"/videos/live-hygraph/002-fy_w2yousbo"},{"title":"Exploring localisation & translation with headless CMS","_path":"/videos/live-hygraph/003-jgx1dytflvq"},{"title":"Customizing Hygraph data with external services","_path":"/videos/live-hygraph/004-ombpixxx-3e"},{"title":"Exploring the Hygraph Asset Manager","_path":"/videos/live-hygraph/005-ht-scjkem9q"},{"title":"Hygraph Studio Launch - Workshop: Hygraph Asset Management","_path":"/videos/live-hygraph/006-qegf6rerifw"},{"title":"Hygraph Studio Launch - DevX: Performance Gains","_path":"/videos/live-hygraph/007-etie3zygone"},{"title":"How to build a live-voting experience with Hygraph, Nuxt and Supabase","_path":"/videos/live-hygraph/008-phcxh2m7ozm"},{"title":"Building Content Models for Devs and Editors w/ Lo & Bryan","_path":"/videos/live-hygraph/009-pzc527rz7es"},{"title":"Bryan teaches Tim Next.js with GraphQL and Hygraph","_path":"/videos/live-hygraph/010-t00uxbjsdum"},{"title":"Pagination with Astro and Hygraph","_path":"/videos/live-hygraph/011-o_dvlrwpebk"},{"title":"How to use Rich Text in a Headless CMS","_path":"/videos/live-hygraph/012-vrrzgly1n5c"},{"title":"Add multi-tenancy to a Headless CMS","_path":"/videos/live-hygraph/013-m5xamvlqh1g"},{"title":"Programmatically import data into the Hygraph Headless CMS","_path":"/videos/live-hygraph/014-jc09s5zmw_k"},{"title":"Building an e-commerce site with Hygraph and Astro","_path":"/videos/live-hygraph/015-aietljmxmxm"}]},{"title":"Live Uniform","_path":"/videos/live-uniform","children":[{"title":"Uniform Product Meetup","_path":"/videos/live-uniform/000-5qx4fmkkh_m"},{"title":"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","_path":"/videos/live-uniform/001-zdqk9zql3za"},{"title":"Product Meetup #2: Interesting usecases with Adam Lamarre","_path":"/videos/live-uniform/002-tngn1e4hefi"},{"title":"Personalizing Storyblok with Uniform and Nuxt.js","_path":"/videos/live-uniform/003-vkfasdfduf8"},{"title":"Page compositions in Next.js with Uniform Canvas and the Jamstack","_path":"/videos/live-uniform/004-baibxsoagdw"},{"title":"A Uniform Canvas use case deep-dive","_path":"/videos/live-uniform/005-rv4wzkhjp7k"},{"title":"The Modern Digital Pipeline - The future of Jamstack is composable","_path":"/videos/live-uniform/006-r2lwjmehkmo"},{"title":"Composable without Compromise w/ Natalia Venditto","_path":"/videos/live-uniform/007-7-ebcqip9ec"},{"title":"Unpack the Stack w/ Daniel Roe","_path":"/videos/live-uniform/008-1h0jr_vbz7m"},{"title":"Composable without Compromise w/ Matt Webb","_path":"/videos/live-uniform/009-sitbljdtbjy"},{"title":"Unpack the Stack w/ Colby Fayock","_path":"/videos/live-uniform/010-rbjccl9qate"},{"title":"Composable without Compromise w/ Casper Rasmussen","_path":"/videos/live-uniform/011-yjc8gvarvge"},{"title":"Unpack the Stack w/ Brittney Postma","_path":"/videos/live-uniform/012-6ek_bv2yrf8"},{"title":"Composable without Compromise w/ Filip Rakowski","_path":"/videos/live-uniform/013-trisovjcivw"},{"title":"Unpack the Stack w/ Tomek Juranek","_path":"/videos/live-uniform/014-0xsg-apdt6c"},{"title":"Composable without Compromise w/ Dom Selvon","_path":"/videos/live-uniform/015-hsirsjtqgs8"},{"title":"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","_path":"/videos/live-uniform/016-uuhul0tpezy"},{"title":"Unpack the stack: next.js app directory with Steven Tey","_path":"/videos/live-uniform/017-8ju8znzjoh4"},{"title":"Unpack the stack with Elian Van Cutsem","_path":"/videos/live-uniform/018-wmacanhmrsi"},{"title":"Unpack the Stack with Marc Backes","_path":"/videos/live-uniform/019-axqvbrv_xc8"},{"title":"Unpack the stack with William Imoh","_path":"/videos/live-uniform/020-gmh8pm-nvl0"},{"title":"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","_path":"/videos/live-uniform/021-5r8_kiqjk6c"},{"title":"Unpack the Stack w/ Lucie from Prismic","_path":"/videos/live-uniform/022-hveoqtpoimk"},{"title":"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","_path":"/videos/live-uniform/023-skuvyvd-njg"},{"title":"Unpack the Stack w/ Harshil from Contentful","_path":"/videos/live-uniform/024-mnkxtbb3_vw"},{"title":"Introducing: Mesh + Component Starter Kit with Richard and Tim","_path":"/videos/live-uniform/025-hmtwfhon2o"},{"title":"Composable without Compromise w/ Jonas Ulrich","_path":"/videos/live-uniform/026-dvqvxggnp5q"},{"title":"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","_path":"/videos/live-uniform/027-vfeieragxac"},{"title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","_path":"/videos/live-uniform/028-ekut1koa2n8"},{"title":"How the RFP process has improved with composable architectures","_path":"/videos/live-uniform/029-opklvtnkncs"},{"title":"Composable CMS evaluation: Delivery APIs and CDNs","_path":"/videos/live-uniform/030-m-kkuomzg88"},{"title":"What legacy? Migration tactics for monolith to composable","_path":"/videos/live-uniform/031-jvgiaotcerq"},{"title":"Composable CMS evaluation: SDK frameworks","_path":"/videos/live-uniform/032-isxyi-5do5o"}]},{"title":"Misc Streams","_path":"/videos/misc-streams","children":[{"title":"The Dare Dialogues - S01E03: Making Waves","_path":"/videos/misc-streams/000-1tjmq5b0fmc"},{"title":"The Dare Dialogues - S01E02: Mount Stupid","_path":"/videos/misc-streams/001-tvpdzpl2pvm"},{"title":"Customer Story: How to Create AI Videos for B2B Content Marketing","_path":"/videos/misc-streams/002-rjjyhwso1gg"},{"title":"What legacy? Migration tactics for monolith to composable","_path":"/videos/misc-streams/003-jvgiaotcerq"},{"title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","_path":"/videos/misc-streams/004-ekut1koa2n8"},{"title":"Tim Tries: TresJS with Alvaro Sabu","_path":"/videos/misc-streams/005-d8ahncxgryg"},{"title":"Keyboard Madness with Janos Kehl and Konstantin Bifert","_path":"/videos/misc-streams/006-umfrj32jle0"}]},{"title":"Mp","_path":"/videos/mp","children":[{"title":"Vue.js Amsterdam 2024","_path":"/videos/mp/000-ubgzoawmqlw"},{"title":"Vue.js Amsterdam Vlog 2023","_path":"/videos/mp/001-zx6_fi0sdmy"},{"title":"JSWorld Conference 2023 Vlog","_path":"/videos/mp/002-d4rai10p9m4"},{"title":"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","_path":"/videos/mp/003-tmf2wzntooa"},{"title":"JSWorld Conference 2022 - Vlog","_path":"/videos/mp/004-xhbwuk0qlue"},{"title":"Vue.js Roadtrip Barcelona - Vlog","_path":"/videos/mp/005-2e_kk9mqrwm"}]},{"title":"Tim","_path":"/videos/tim","children":[{"title":"72 hours in Austin, TX","_path":"/videos/tim/000-mvq-_s20ndk"},{"title":"The Jake Ward Interview. The power of developer advocacy with Data Protocol","_path":"/videos/tim/001-vex0ktitib4"},{"title":"How to do Developer Relations in 2024","_path":"/videos/tim/002-196iqp-lhlw"},{"title":"Cloudinary's hidden magic: AI image manipulation in the URL","_path":"/videos/tim/003-yutf3yvsdco"},{"title":"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","_path":"/videos/tim/004-iip2anhietg"},{"title":"How To Make The Best AI Avatar With Heygen","_path":"/videos/tim/005-_wrtdvv37y0"},{"title":"How to tell if you're becoming a senior dev","_path":"/videos/tim/006-j7jsa49zqja"},{"title":"Hygraph Content Federation FTW","_path":"/videos/tim/007-ed1tipzxzr8"},{"title":"Tim Tries caisy CMS: the best CMS for agencies?","_path":"/videos/tim/008-3tbdmf1pwe"},{"title":"The best Nuxt 3 GraphQL setup","_path":"/videos/tim/009-q282biqyj6a"},{"title":"Browser Client Hints are awesome!","_path":"/videos/tim/010-h3rlwn27ga8"},{"title":"This is Headless 2.0","_path":"/videos/tim/011-ergktbs0woe"},{"title":"Nuxt 3: Learn about Pinia setup and basics","_path":"/videos/tim/012-zscc8-0-dis"},{"title":"I cloned myself with AI to create more content","_path":"/videos/tim/013-zn2zxyvw4hy"},{"title":"Vue.js Live London 2023 Vlog","_path":"/videos/tim/014-dyq17r5c9-s"},{"title":"AI audio for content creators","_path":"/videos/tim/015-oq050_ytylk"},{"title":"I joined the Supasquad ambassadors program at Supabase!","_path":"/videos/tim/016-rwrzovc5oc4"},{"title":"Vue.js guitar karaoke: how I built it","_path":"/videos/tim/017-m0mrligs6i0"},{"title":"The story behind Alive and kicking","_path":"/videos/tim/018-hhpitreyobi"},{"title":"I fell back in love with Sitecore","_path":"/videos/tim/019-e64eyulaomk"},{"title":"JamstackConf talk: DXC, the modern tech stack","_path":"/videos/tim/020-xetyke98mp0"},{"title":"Turbo Tutorial | Vue 3: Learn how to make a composable","_path":"/videos/tim/021-0xo0bnzquf4"},{"title":"Turbo Tutorial | Nuxt 3: How to add client only components","_path":"/videos/tim/022-cwkjy7raony"},{"title":"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","_path":"/videos/tim/023-lsf2rhzsykg"},{"title":"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","_path":"/videos/tim/024-mg0fevwnue0"},{"title":"Turbo Tutorial | Learn about responsive image basics","_path":"/videos/tim/025-npse6yqqzki"},{"title":"Turbo Tutorial | Nuxt 3: Head management","_path":"/videos/tim/026-rh6hjo9xk-o"},{"title":"Turbo Tutorial | Nuxt 3: schema org","_path":"/videos/tim/027-rth3oikjp2k"},{"title":"Turbo Tutorial | Nuxt 3: Query from an external API + read more","_path":"/videos/tim/028-zad7s01lfic"},{"title":"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","_path":"/videos/tim/029-5i1zqfu6xtw"},{"title":"Turbo Tutorial | Nuxt 3: Pick & Transform","_path":"/videos/tim/030-d33ynlhvhxm"},{"title":"Tim Tries Medusajs the open source Shopify alternative","_path":"/videos/tim/031-c1jduhsh1ae"},{"title":"How I film videos in my new studio. A content creator's dream.","_path":"/videos/tim/032-8z1npig-ya"},{"title":"The State of Vue in 2022 with Monterail's Szymon Licau","_path":"/videos/tim/033-8wxdfixxktw"},{"title":"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","_path":"/videos/tim/034-yzh1l740tno"},{"title":"How to buy gear for content creation in 2022","_path":"/videos/tim/035-mdzkgc1pgbc"},{"title":"I built my own YouTube studio 2022","_path":"/videos/tim/036-dli7uzzddx8"},{"title":"Cable management for Nuxt 3","_path":"/videos/tim/037-ry60wvg0fzq"},{"title":"My top 5 favourite Nuxt 3 features","_path":"/videos/tim/038-ek-hhozlfvg"},{"title":"Vlog: DevBreak21 what an amazing conference experience!","_path":"/videos/tim/039-kn5u4ahcs_0"},{"title":"Make your website even faster with Astro!","_path":"/videos/tim/040-o8m4cs3o4ii"},{"title":"Vlog: I'm building my own studio!","_path":"/videos/tim/041-xba15vr-kfy"},{"title":"Nuxt vs Next: the battle of the Images","_path":"/videos/tim/042-lpk392g10ou"},{"title":"The Ultimate Guide to Responsive Images","_path":"/videos/tim/043-uxjgt2_mf90"},{"title":"Tim Tries: Storyblok. One of the best headless content editing experiences","_path":"/videos/tim/044-d0ra_m3jlsy"},{"title":"Tim Tries: Algolia Crawler Plugin for Netlify","_path":"/videos/tim/045-7jk6nyalhuc"},{"title":"Apple M1 with Tailwind JIT and Vite is faster than my brain","_path":"/videos/tim/046-su22r2w3wea"},{"title":"Unboxing the new M1 Mac Mini for Video editing and programming.","_path":"/videos/tim/047-6ub_k4uvz20"},{"title":"Core Web Vitals explained with Ishan Anand | e01","_path":"/videos/tim/048-ec7pvgy8xsq"},{"title":"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","_path":"/videos/tim/049-lsxu_q-8rrc"},{"title":"The Modern DXP: How JAMstack will change the world","_path":"/videos/tim/050-yezaod1sddg"},{"title":"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","_path":"/videos/tim/051-dv5mlxbrti8"},{"title":"I have a new job at a Silicon Valley Startup!","_path":"/videos/tim/052-hcthe5pwhvm"},{"title":"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","_path":"/videos/tim/053-zd7qkgd8ix8"},{"title":"2020 The best year of my career","_path":"/videos/tim/054-bhffzm6n3tw"},{"title":"How to build your online persona","_path":"/videos/tim/055-s1od1u-itka"},{"title":"How to record yourself guide","_path":"/videos/tim/056-rm_bameopiy"},{"title":"Interview with Alex Shyba co-founder of Uniform","_path":"/videos/tim/057-db5jjbwg-zm"},{"title":"How to reduce bundle sizes in Nuxt","_path":"/videos/tim/058-iykkwy8k2d4"},{"title":"Interview with Evan You","_path":"/videos/tim/059-nr_aohhgl3s"},{"title":"Easy dynamic routes in your Nuxt sitemap","_path":"/videos/tim/060-oxjhew-10aq"},{"title":"Webpack 5 module federation and more","_path":"/videos/tim/061-zxz9mojtwh8"},{"title":"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","_path":"/videos/tim/062-xiz2p0zlbd8"},{"title":"Magical combination to build a modern website","_path":"/videos/tim/063-v5aobiirud4"},{"title":"Hi! 👋 I'm Tim and I'm a content creator!","_path":"/videos/tim/064-jtghl7ggoas"},{"title":"Tim Tries: Chakra UI with Jonathan Bakebwa","_path":"/videos/tim/065-96xypbh-hyo"},{"title":"Tim Tries: TailwindCSS with Alexander Lichter","_path":"/videos/tim/066-0vdfegtjdcg"},{"title":"Tim's Vlog: How to be a successful leader","_path":"/videos/tim/067-mcyeoin1s48"},{"title":"Vue.js Global talk: Introducing Vite & Vitepress","_path":"/videos/tim/068-gojckw5ih7e"},{"title":"A developers guide to low carbon websites","_path":"/videos/tim/069-ewlegish6dw"},{"title":"Tim's vlog: Career advice for developers","_path":"/videos/tim/070-auzzgmyn0z4"},{"title":"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","_path":"/videos/tim/071-zuht0g3zpyw"},{"title":"Vue.js Global Conference: An interview with Anthony Gore","_path":"/videos/tim/072-madbxcbsvqo"},{"title":"Vue.js Global Conference: An interview with Eduardo San Martin Morote","_path":"/videos/tim/073-uufbfcipaly"},{"title":"Webpack tutorial: Create a config from scratch","_path":"/videos/tim/074-fyuvqruzevy"},{"title":"Vue.js Global conference: An interview with Gift Egwuenu","_path":"/videos/tim/075-tlbstgzcyyy"},{"title":"Vue.js Global conference: An interview with Filip Rakowski","_path":"/videos/tim/076-brmxytpulm4"},{"title":"Vue.js Global conference: An interview with Debbie O'Brien","_path":"/videos/tim/077-ibkgryfpuds"},{"title":"Vue.js Global conference: An interview with Maria Lamardo","_path":"/videos/tim/078-2mfsb5ulhks"},{"title":"Azure functions revisited for v3. Conclusion: AWESOME","_path":"/videos/tim/079-d0jk7hyu1ai"},{"title":"Tutorial: How to build a Gridsome Source Plugin","_path":"/videos/tim/080-v50mhzzffaa"},{"title":"My audio setup 2020","_path":"/videos/tim/081-pu8f59x14-y"},{"title":"Tim Tries: Azure Static Web Apps","_path":"/videos/tim/082-a54ifas8rts"},{"title":"Tutorial: Vue 3 composition API and Vite to recreate TikTok","_path":"/videos/tim/083-ggaoxqtc7ke"},{"title":"Tim Tries: Slice Machine by Nuxt and Prismic","_path":"/videos/tim/084-bpjjxxqycdi"},{"title":"An Interview with Scott Tolinski from Level up Tutorials","_path":"/videos/tim/085-zpq_gqmit5y"},{"title":"Lazy Loading Images with Prismic and Vue.js","_path":"/videos/tim/086-5jaypm6gx1o"},{"title":"An Interview with Jen Looper from Microsoft","_path":"/videos/tim/087-cf5_pit-ai"},{"title":"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","_path":"/videos/tim/088-tqr2eo7tivc"},{"title":"An interview with Debbie O'brien from Nuxtjs","_path":"/videos/tim/089-aw4nl6hgjb0"},{"title":"Quarantine licks #2 - Folksy Tunes","_path":"/videos/tim/090-gxwrzna4udq"},{"title":"COVID-19 Work from home: how to make your webcam look good","_path":"/videos/tim/091-xit7qtmcmik"},{"title":"Weight loss with Serveless architecture and the JAMstack","_path":"/videos/tim/092-bebr8ev2no8"},{"title":"Quarantine Licks #1 - Acoustic Blues","_path":"/videos/tim/093-wlqlclwjorc"},{"title":"An interview with Tim Benniks from Valtech","_path":"/videos/tim/094-zzrqozpc068"},{"title":"HTTP/2 performance: you still need a bundler!","_path":"/videos/tim/095-f5f7n2kc7hq"},{"title":"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","_path":"/videos/tim/096-nw0y6dkx1ku"},{"title":"An interview with Filip Rakowski from Vue Storefront","_path":"/videos/tim/097-vqjp5qfiolg"},{"title":"[Livestream] Team First - How to lead a team to success in a high pressure environment","_path":"/videos/tim/098-ltm7wz0q564"},{"title":"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","_path":"/videos/tim/099-u5s4dqqlt1o"},{"title":"Vue.js Amsterdam recap and exciting announcements!","_path":"/videos/tim/100-boby5h-r1hc"},{"title":"An interview with Anastasiya Flynn from Sitecore JSS","_path":"/videos/tim/101-pwqvqnnopiy"},{"title":"An interview with Eduardo from the Vue.js core team","_path":"/videos/tim/102-lkiomruiaae"},{"title":"Webpack basics and core concepts","_path":"/videos/tim/103-azqrjdqa_d8"},{"title":"5 tips to become a better web developer.","_path":"/videos/tim/104-wexof1tfi04"},{"title":"An interview with Maya Shavin: When you have the force, nothing is impossible!","_path":"/videos/tim/105-h7qmarrblw8"},{"title":"Code faster and make less mistakes","_path":"/videos/tim/106-liek4kwnsbq"},{"title":"An Introduction to my YouTube Channel","_path":"/videos/tim/107-shtbmwkzwpi"},{"title":"How to make your webcam look great!","_path":"/videos/tim/108-vcf1xfoegwm"}]},{"title":"Uniform","_path":"/videos/uniform","children":[{"title":"Uniform DXCP: composability with Headless 2.0","_path":"/videos/uniform/000-sf8tcv5t9pa"},{"title":"Uniform Canvas: Dynamic Pages","_path":"/videos/uniform/001-vkjwiqlm6_w"},{"title":"Uniform Canvas: Redirect management","_path":"/videos/uniform/002-ndrabg4x6ya"},{"title":"Uniform Dynamic Pages and Redirects","_path":"/videos/uniform/003-hcjlhnrjzpo"},{"title":"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","_path":"/videos/uniform/004-qh_ekk7cfzw"},{"title":"Uniform Canvas: loops","_path":"/videos/uniform/005-ffwvyuyzewu"},{"title":"Uniform Canvas: data types","_path":"/videos/uniform/006-zbi8h6-fp5c"},{"title":"Uniform Canvas: component patterns","_path":"/videos/uniform/007-mczgzargim8"},{"title":"CityJS conference talk: How to sniff out the glue code monster","_path":"/videos/uniform/008-rarbrmxkh5i"},{"title":"Setting up Canvas","_path":"/videos/uniform/009-3uyyxncppd8"},{"title":"Setting up Project map","_path":"/videos/uniform/010-krctdwmf9fg"},{"title":"Getting started with Uniform DXCP - The why and the how","_path":"/videos/uniform/011-j0zqlcmtseq"},{"title":"Work in new ways by integrating Algolia with Uniform’s visual editor","_path":"/videos/uniform/012-aoaqo3tlzpw"},{"title":"Getting Started with Uniform and Algolia","_path":"/videos/uniform/013-lfkshonh3oc"},{"title":"Creating with Canvas by Richard Bausek and Tim Benniks","_path":"/videos/uniform/014-t3avobqvwps"},{"title":"Uniform + Algolia = A Magical Combination","_path":"/videos/uniform/015-z_41xoh9w1w"},{"title":"Uniform and Cloudinary play very well together!","_path":"/videos/uniform/016-oqqj-tu-urc"},{"title":"Nuxt 3 with Content v2 and Uniform is magic","_path":"/videos/uniform/017-sy9xkqrxzk8"},{"title":"Uniform CLI: how to manage your compositions","_path":"/videos/uniform/018-e-9ylltykzk"},{"title":"Up and running with Uniform & Nuxt 3 in three mins!","_path":"/videos/uniform/019-hkcxn_r0m54"},{"title":"Setting up live preview with Uniform and Nuxt 3","_path":"/videos/uniform/020-u41omxoadtq"},{"title":"Uniform MACHathon 2022 - Rage against MACHine's project demo","_path":"/videos/uniform/021-h-l_nj5aojs"},{"title":"MACHathon 2022 entry Rage Against the MACHine","_path":"/videos/uniform/022-w4ppzyucowm"},{"title":"Clearbit + Uniform Context = Super-powered personalization","_path":"/videos/uniform/023-ib6dglgf7uc"},{"title":"The Uniform Content Editing Workflow","_path":"/videos/uniform/024-4xykmrzo8ha"},{"title":"The future of the Jamstack is composable","_path":"/videos/uniform/025-4tuixex-iwk"},{"title":"Progressing through Environments with Uniform","_path":"/videos/uniform/026-9q_1wzx_kju"},{"title":"Uniform Product Meetup: Personalizing content based on user location","_path":"/videos/uniform/027-myj-ild_rxk"},{"title":"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","_path":"/videos/uniform/028-jdl4a64klrg"},{"title":"Jamstack Fridays with T&T: Personalization with Uniform Canvas","_path":"/videos/uniform/029-fevaivas-ye"},{"title":"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","_path":"/videos/uniform/030-_8gh9oycsus"},{"title":"New features for Contentful in Uniform Canvas","_path":"/videos/uniform/031-vvlwwonsqe8"},{"title":"Take your BigCommerce store to the next level with faster time to market and personalization","_path":"/videos/uniform/032-evmwlfhv8wc"},{"title":"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","_path":"/videos/uniform/033-jjwwwr9uixo"},{"title":"Uniform Tutorial Series #3: Defining Intents","_path":"/videos/uniform/034-gwbkr9ut5-w"},{"title":"Uniform Tutorial Series #2: Intents & Signals","_path":"/videos/uniform/035-0gp_yf4fvo8"},{"title":"Uniform Tutorial Series #1: Personalization Basics","_path":"/videos/uniform/036-_tkrrqdsolk"},{"title":"Uniform Platform for business users","_path":"/videos/uniform/037-pt1p8ixie-k"},{"title":"Uniform Platform for Developers","_path":"/videos/uniform/038-jul6h-3wrnq"},{"title":"Why is Jamstack so important for the future of DXP","_path":"/videos/uniform/039-pdekgezhffi"},{"title":"The problem of modern DXP (and the solution)","_path":"/videos/uniform/040-iaabbjfiiro"},{"title":"True composability in the modern DXP","_path":"/videos/uniform/041-fo9cop0znt0"},{"title":"Astro FTW! Vue and React can work together in the same app","_path":"/videos/uniform/042-surxtza2sa0"},{"title":"Uniform Personalization Basics for MACHathon contenders","_path":"/videos/uniform/043-wontid8zkf0"},{"title":"Kentico Kontent mystery package unboxing","_path":"/videos/uniform/044-fngyhaaogqc"},{"title":"Product Meetup: Uniform for Sitecore 5 is out!","_path":"/videos/uniform/045-itk9sgw0n7u"},{"title":"Personalize Jamstack websites with Uniform for Kentico Kontent","_path":"/videos/uniform/046-hdupegqtjrm"},{"title":"Jamstack Fridays with T&T: Next auth and Firebase","_path":"/videos/uniform/047-6jkekhxmmaq"},{"title":"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","_path":"/videos/uniform/048-h3y_jnbtrom"},{"title":"Jamstack Friday news: Featurepeek is fire!","_path":"/videos/uniform/049-xr8eo9g6bps"},{"title":"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","_path":"/videos/uniform/050-4eepxpo9iqc"},{"title":"Jamstack Friday news: The latest NextJS release is awesome!","_path":"/videos/uniform/051-fdounapttfy"},{"title":"A comprehensive view on personalization with Lars Petersen","_path":"/videos/uniform/052-gsey28saqac"},{"title":"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","_path":"/videos/uniform/053-r2ygbt1to4s"},{"title":"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","_path":"/videos/uniform/054-9m73vicako4"},{"title":"Jamstack personalization with Contentstack and Uniform","_path":"/videos/uniform/055-d41ch2lnxtq"},{"title":"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","_path":"/videos/uniform/056-eohudn8apm4"}]}]},{"title":"Writing","_path":"/writing","children":[{"title":"Digital experience platforms: the old versus the new","_path":"/writing/digital-experience-platforms-the-old-versus-the-new"},{"title":"Fast, personalized pages with Vercel Edge Middleware and Uniform","_path":"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform"},{"title":"How to dynamically stream video","_path":"/writing/how-to-dynamically-stream-video"},{"title":"How to get your webcam to look decent in a few simple steps","_path":"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps"},{"title":"How to sniff out the Glue Monster","_path":"/writing/how-to-sniff-out-the-glue-monster"},{"title":"Writing","_path":"/writing"},{"title":"Level up your collaboration game: Developer insights for winning with marketing pros","_path":"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro"},{"title":"MACH versus monolithic suites","_path":"/writing/mach-versus-monolithic-suites"},{"title":"Make the Web Greener, Luxury Edition","_path":"/writing/make-the-web-greener-luxury-edition"},{"title":"My Fitness Story","_path":"/writing/my-fitness-story"},{"title":"New job alert!","_path":"/writing/new-job-alert"},{"title":"The 2015 Paris marathon","_path":"/writing/the-2015-paris-maratho"},{"title":"The content Graph is the future","_path":"/writing/the-content-graph-is-the-future"},{"title":"The future of headless CMS: Content Federation with GraphQL","_path":"/writing/the-future-of-headless-cms-content-federation-with-graphql"},{"title":"The future of jamstack is composable","_path":"/writing/the-future-of-jamstack-is-composable"},{"title":"The future of managing projects at agencies","_path":"/writing/the-future-of-managing-projects-at-agencie"},{"title":"The lost promise of headless","_path":"/writing/the-lost-promise-of-headless"},{"title":"The MACH monolith","_path":"/writing/the-mach-monolith"},{"title":"The move from monolithic to composable architectures","_path":"/writing/the-move-from-monolithic-to-composable-architectures"},{"title":"The real deal about content management buzzwords","_path":"/writing/the-real-deal-about-content-management-buzzword"},{"title":"This is headless 2.0","_path":"/writing/this-is-headless-20"},{"title":"Uniform DXCP: the what, why, and how","_path":"/writing/uniform-dxcp-the-what-why-and-how"},{"title":"Uniform is Nuxt 3 ready","_path":"/writing/uniform-is-nuxt-3-read"},{"title":"What type of content organization do you need?","_path":"/writing/what-type-of-content-organization-do-you-need"},{"title":"Why I didn't run the 2016 marathon","_path":"/writing/why-i-didnt-run-the-2016-marathon"}]},{"title":"Speaking","_path":"/speaking","children":[{"title":"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","_path":"/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6"},{"title":"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","_path":"/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk"},{"title":"2019 04 19 Clifq5gd63xhq0buvufv6nagk","_path":"/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk"},{"title":"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","_path":"/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai"},{"title":"2019 05 25 Clifq5fpd3xt00aw4grnzft29","_path":"/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29"},{"title":"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","_path":"/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k"},{"title":"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","_path":"/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc"},{"title":"2019 09 27 Clifq5eos3xhh0buvewly5gxs","_path":"/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs"},{"title":"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","_path":"/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d"},{"title":"2019 12 17 Clifq5dyh40ij0bw9oquw072b","_path":"/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b"},{"title":"2020 02 18 Clifq5dk940if0bw9ok9achtj","_path":"/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj"},{"title":"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","_path":"/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n"},{"title":"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","_path":"/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1"},{"title":"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","_path":"/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q"},{"title":"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","_path":"/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3"},{"title":"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","_path":"/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp"},{"title":"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","_path":"/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1"},{"title":"2020 06 09 Clifq5bj73xrj0aw42st3pna4","_path":"/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4"},{"title":"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","_path":"/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb"},{"title":"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","_path":"/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2"},{"title":"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","_path":"/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e"},{"title":"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","_path":"/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk"},{"title":"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","_path":"/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm"},{"title":"2020 10 14 Clifq59mp3wgc0bw82qykah6x","_path":"/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x"},{"title":"2020 10 29 Clifq59b83xr60aw45w2sqa1g","_path":"/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g"},{"title":"2020 11 10 Clifq590340gy0bw9onnmgr7y","_path":"/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y"},{"title":"2020 11 11 Clifq58oo40gu0bw9iffiakmh","_path":"/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh"},{"title":"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","_path":"/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s"},{"title":"2020 12 02 Clifq582i3wg80bw8rszss5am","_path":"/speaking/2020-12-02-clifq582i3wg80bw8rszss5am"},{"title":"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","_path":"/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9"},{"title":"2020 12 16 Clifq57c43wg40bw81h7fr291","_path":"/speaking/2020-12-16-clifq57c43wg40bw81h7fr291"},{"title":"2020 12 18 Clifq571z40gq0bw9b62wbowr","_path":"/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr"},{"title":"2021 01 12 Clifq56q43xgk0buv4hu04quz","_path":"/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz"},{"title":"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","_path":"/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s"},{"title":"2021 02 02 Clifq56623xqt0aw44sbds5cn","_path":"/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn"},{"title":"2021 02 22 Clifq55tf40gk0bw9vofea3yp","_path":"/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp"},{"title":"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","_path":"/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1"},{"title":"2021 03 24 Clifq559p3xgf0buvzch9im3l","_path":"/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l"},{"title":"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","_path":"/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk"},{"title":"2021 04 20 Clifq54na3xgb0buvrvmbamxf","_path":"/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf"},{"title":"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","_path":"/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw"},{"title":"2021 07 27 Clifq542s3xg60buvdk199xtq","_path":"/speaking/2021-07-27-clifq542s3xg60buvdk199xtq"},{"title":"2021 09 07 Clifq53so3wfq0bw81xni3t7x","_path":"/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x"},{"title":"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","_path":"/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu"},{"title":"2021 11 10 Clifq536v3xg20buvlz1n7ddw","_path":"/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw"},{"title":"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","_path":"/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x"},{"title":"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","_path":"/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey"},{"title":"2021 12 14 Clifq528940gb0bw9bok0o68k","_path":"/speaking/2021-12-14-clifq528940gb0bw9bok0o68k"},{"title":"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","_path":"/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9"},{"title":"2022 02 08 Clifq51j53wez0bw8cd1znjmi","_path":"/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi"},{"title":"2022 02 10 Clifq515940g70bw9yu0ltedp","_path":"/speaking/2022-02-10-clifq515940g70bw9yu0ltedp"},{"title":"2022 03 01 Clifq50sj40g30bw9rqy825mb","_path":"/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb"},{"title":"2022 03 02 Clifq50g53xfr0buv56km2voa","_path":"/speaking/2022-03-02-clifq50g53xfr0buv56km2voa"},{"title":"2022 05 26 Clifq506e3wev0bw88q2lf63q","_path":"/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q"},{"title":"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","_path":"/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u"},{"title":"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","_path":"/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9"},{"title":"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","_path":"/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y"},{"title":"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","_path":"/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl"},{"title":"2022 07 27 Clifq4yep3xf20buv5vorwrl5","_path":"/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5"},{"title":"2022 08 10 Clifq4xw640fr0bw9po5n2nug","_path":"/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug"},{"title":"2022 08 11 Clifq4xdz3wek0bw862z7knrr","_path":"/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr"},{"title":"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","_path":"/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy"},{"title":"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","_path":"/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70"},{"title":"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","_path":"/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb"},{"title":"2022 10 14 Clifq4w263xet0buv0mzqzfre","_path":"/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre"},{"title":"2022 11 02 Clifq4vps3xep0buvimxfntyq","_path":"/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq"},{"title":"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","_path":"/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4"},{"title":"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","_path":"/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj"},{"title":"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","_path":"/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr"},{"title":"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","_path":"/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh"},{"title":"2023 05 12 Clifq4tw33we40bw8jxhaaroo","_path":"/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo"},{"title":"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","_path":"/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm"},{"title":"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","_path":"/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq"},{"title":"2023 07 27 Clifq4sto3xph0aw4letve613","_path":"/speaking/2023-07-27-clifq4sto3xph0aw4letve613"},{"title":"2024 02 29 Clkzot86xire30aujuy08465e","_path":"/speaking/2024-02-29-clkzot86xire30aujuy08465e"},{"title":"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","_path":"/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t"},{"title":"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","_path":"/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v"},{"title":"Speaking","_path":"/speaking"}]},{"title":"live streams","_path":"/livestreams"},{"title":"Press kit","_path":"/presskit"},{"title":"Alive and kicking","_path":"/alive-and-kicking"}]} \ No newline at end of file diff --git a/api/_content/navigation/u7BbTyuhiE.1718484357766.json b/api/_content/navigation/u7BbTyuhiE.1718484357766.json deleted file mode 100644 index 72aa28b4..00000000 --- a/api/_content/navigation/u7BbTyuhiE.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -[{"title":"About","_path":"/about"},{"title":"videos","_path":"/videos","children":[{"title":"Alive And Kicking","_path":"/videos/alive-and-kicking","children":[{"title":"The story behind Alive and kicking","_path":"/videos/alive-and-kicking/000-hhpitreyobi"},{"title":"72 hours in Austin, TX","_path":"/videos/alive-and-kicking/001-mvq-_s20ndk"},{"title":"Vue.js guitar karaoke: how I built it","_path":"/videos/alive-and-kicking/002-m0mrligs6i0"},{"title":"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","_path":"/videos/alive-and-kicking/003-p3pm_0p8lz4"},{"title":"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","_path":"/videos/alive-and-kicking/004-4m4tij0z20"}]},{"title":"Headless Creator","_path":"/videos/headless-creator","children":[{"title":"CDOBC 5: Transitioning from DXP to DXC","_path":"/videos/headless-creator/000-m8on6zkr7q4"},{"title":"CDOBC Lesson 4: The DXP Tech Stack Overview","_path":"/videos/headless-creator/001-smbq8aoa4jm"},{"title":"CDOBC Lesson 3: Separation of Concerns","_path":"/videos/headless-creator/002-sx5fbtcnrsg"},{"title":"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","_path":"/videos/headless-creator/003-eybdyoihn1g"},{"title":"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","_path":"/videos/headless-creator/004-hshm8hlopka"}]},{"title":"Hygraph","_path":"/videos/hygraph","children":[{"title":"The simplest way to connect Hygraph to NuxtJS","_path":"/videos/hygraph/000-m8qftvizsmw"},{"title":"The simplest way to connect Hygraph to Astro","_path":"/videos/hygraph/001-aahu9x5wajy"},{"title":"The simplest way to connect Hygraph to Next.js","_path":"/videos/hygraph/002-fksw0bfbtdo"},{"title":"How to connect Commercetools and Hygraph","_path":"/videos/hygraph/003-x8tb3li6dg0"},{"title":"How to add a remote REST source to Hygraph","_path":"/videos/hygraph/004-zredqavtow4"},{"title":"How to add a remote GraphQL source to Hygraph","_path":"/videos/hygraph/005-aydykxckkfe"},{"title":"CMS Feature ninja: set up a GraphQL where clause on any field","_path":"/videos/hygraph/006-axq-jo8hmzq"},{"title":"Headless commerce with #Nuxt and #Tailwind.","_path":"/videos/hygraph/007-e9jxm4h4a48"},{"title":"Creating an Enterprise News starter with Next.js and Hygraph CMS","_path":"/videos/hygraph/008-hs1imxycyqg"},{"title":"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","_path":"/videos/hygraph/009-snhzgplvm8o"},{"title":"Set up headless CMS localization in 6 mins","_path":"/videos/hygraph/010-8_ttkblpdpm"},{"title":"How to use Nuxt 3 with Hygraph and GraphQL","_path":"/videos/hygraph/011-keqn1rt8fwq"},{"title":"How to add any REST source to Hygraph headless CMS","_path":"/videos/hygraph/012-nphsqsol3xc"},{"title":"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","_path":"/videos/hygraph/013-exzp3okqtxk"}]},{"title":"videos","_path":"/videos"},{"title":"Live Hygraph","_path":"/videos/live-hygraph","children":[{"title":"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","_path":"/videos/live-hygraph/000-eydstedp-v4"},{"title":"How to integrate Cloudinary with headless CMS w/ Colby Fayock","_path":"/videos/live-hygraph/001-_iah2t5g02o"},{"title":"Combining WordPress with Headless CMS","_path":"/videos/live-hygraph/002-fy_w2yousbo"},{"title":"Exploring localisation & translation with headless CMS","_path":"/videos/live-hygraph/003-jgx1dytflvq"},{"title":"Customizing Hygraph data with external services","_path":"/videos/live-hygraph/004-ombpixxx-3e"},{"title":"Exploring the Hygraph Asset Manager","_path":"/videos/live-hygraph/005-ht-scjkem9q"},{"title":"Hygraph Studio Launch - Workshop: Hygraph Asset Management","_path":"/videos/live-hygraph/006-qegf6rerifw"},{"title":"Hygraph Studio Launch - DevX: Performance Gains","_path":"/videos/live-hygraph/007-etie3zygone"},{"title":"How to build a live-voting experience with Hygraph, Nuxt and Supabase","_path":"/videos/live-hygraph/008-phcxh2m7ozm"},{"title":"Building Content Models for Devs and Editors w/ Lo & Bryan","_path":"/videos/live-hygraph/009-pzc527rz7es"},{"title":"Bryan teaches Tim Next.js with GraphQL and Hygraph","_path":"/videos/live-hygraph/010-t00uxbjsdum"},{"title":"Pagination with Astro and Hygraph","_path":"/videos/live-hygraph/011-o_dvlrwpebk"},{"title":"How to use Rich Text in a Headless CMS","_path":"/videos/live-hygraph/012-vrrzgly1n5c"},{"title":"Add multi-tenancy to a Headless CMS","_path":"/videos/live-hygraph/013-m5xamvlqh1g"},{"title":"Programmatically import data into the Hygraph Headless CMS","_path":"/videos/live-hygraph/014-jc09s5zmw_k"},{"title":"Building an e-commerce site with Hygraph and Astro","_path":"/videos/live-hygraph/015-aietljmxmxm"}]},{"title":"Live Uniform","_path":"/videos/live-uniform","children":[{"title":"Uniform Product Meetup","_path":"/videos/live-uniform/000-5qx4fmkkh_m"},{"title":"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","_path":"/videos/live-uniform/001-zdqk9zql3za"},{"title":"Product Meetup #2: Interesting usecases with Adam Lamarre","_path":"/videos/live-uniform/002-tngn1e4hefi"},{"title":"Personalizing Storyblok with Uniform and Nuxt.js","_path":"/videos/live-uniform/003-vkfasdfduf8"},{"title":"Page compositions in Next.js with Uniform Canvas and the Jamstack","_path":"/videos/live-uniform/004-baibxsoagdw"},{"title":"A Uniform Canvas use case deep-dive","_path":"/videos/live-uniform/005-rv4wzkhjp7k"},{"title":"The Modern Digital Pipeline - The future of Jamstack is composable","_path":"/videos/live-uniform/006-r2lwjmehkmo"},{"title":"Composable without Compromise w/ Natalia Venditto","_path":"/videos/live-uniform/007-7-ebcqip9ec"},{"title":"Unpack the Stack w/ Daniel Roe","_path":"/videos/live-uniform/008-1h0jr_vbz7m"},{"title":"Composable without Compromise w/ Matt Webb","_path":"/videos/live-uniform/009-sitbljdtbjy"},{"title":"Unpack the Stack w/ Colby Fayock","_path":"/videos/live-uniform/010-rbjccl9qate"},{"title":"Composable without Compromise w/ Casper Rasmussen","_path":"/videos/live-uniform/011-yjc8gvarvge"},{"title":"Unpack the Stack w/ Brittney Postma","_path":"/videos/live-uniform/012-6ek_bv2yrf8"},{"title":"Composable without Compromise w/ Filip Rakowski","_path":"/videos/live-uniform/013-trisovjcivw"},{"title":"Unpack the Stack w/ Tomek Juranek","_path":"/videos/live-uniform/014-0xsg-apdt6c"},{"title":"Composable without Compromise w/ Dom Selvon","_path":"/videos/live-uniform/015-hsirsjtqgs8"},{"title":"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","_path":"/videos/live-uniform/016-uuhul0tpezy"},{"title":"Unpack the stack: next.js app directory with Steven Tey","_path":"/videos/live-uniform/017-8ju8znzjoh4"},{"title":"Unpack the stack with Elian Van Cutsem","_path":"/videos/live-uniform/018-wmacanhmrsi"},{"title":"Unpack the Stack with Marc Backes","_path":"/videos/live-uniform/019-axqvbrv_xc8"},{"title":"Unpack the stack with William Imoh","_path":"/videos/live-uniform/020-gmh8pm-nvl0"},{"title":"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","_path":"/videos/live-uniform/021-5r8_kiqjk6c"},{"title":"Unpack the Stack w/ Lucie from Prismic","_path":"/videos/live-uniform/022-hveoqtpoimk"},{"title":"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","_path":"/videos/live-uniform/023-skuvyvd-njg"},{"title":"Unpack the Stack w/ Harshil from Contentful","_path":"/videos/live-uniform/024-mnkxtbb3_vw"},{"title":"Introducing: Mesh + Component Starter Kit with Richard and Tim","_path":"/videos/live-uniform/025-hmtwfhon2o"},{"title":"Composable without Compromise w/ Jonas Ulrich","_path":"/videos/live-uniform/026-dvqvxggnp5q"},{"title":"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","_path":"/videos/live-uniform/027-vfeieragxac"},{"title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","_path":"/videos/live-uniform/028-ekut1koa2n8"},{"title":"How the RFP process has improved with composable architectures","_path":"/videos/live-uniform/029-opklvtnkncs"},{"title":"Composable CMS evaluation: Delivery APIs and CDNs","_path":"/videos/live-uniform/030-m-kkuomzg88"},{"title":"What legacy? Migration tactics for monolith to composable","_path":"/videos/live-uniform/031-jvgiaotcerq"},{"title":"Composable CMS evaluation: SDK frameworks","_path":"/videos/live-uniform/032-isxyi-5do5o"}]},{"title":"Misc Streams","_path":"/videos/misc-streams","children":[{"title":"The Dare Dialogues - S01E03: Making Waves","_path":"/videos/misc-streams/000-1tjmq5b0fmc"},{"title":"The Dare Dialogues - S01E02: Mount Stupid","_path":"/videos/misc-streams/001-tvpdzpl2pvm"},{"title":"Customer Story: How to Create AI Videos for B2B Content Marketing","_path":"/videos/misc-streams/002-rjjyhwso1gg"},{"title":"What legacy? Migration tactics for monolith to composable","_path":"/videos/misc-streams/003-jvgiaotcerq"},{"title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","_path":"/videos/misc-streams/004-ekut1koa2n8"},{"title":"Tim Tries: TresJS with Alvaro Sabu","_path":"/videos/misc-streams/005-d8ahncxgryg"},{"title":"Keyboard Madness with Janos Kehl and Konstantin Bifert","_path":"/videos/misc-streams/006-umfrj32jle0"}]},{"title":"Mp","_path":"/videos/mp","children":[{"title":"Vue.js Amsterdam 2024","_path":"/videos/mp/000-ubgzoawmqlw"},{"title":"Vue.js Amsterdam Vlog 2023","_path":"/videos/mp/001-zx6_fi0sdmy"},{"title":"JSWorld Conference 2023 Vlog","_path":"/videos/mp/002-d4rai10p9m4"},{"title":"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","_path":"/videos/mp/003-tmf2wzntooa"},{"title":"JSWorld Conference 2022 - Vlog","_path":"/videos/mp/004-xhbwuk0qlue"},{"title":"Vue.js Roadtrip Barcelona - Vlog","_path":"/videos/mp/005-2e_kk9mqrwm"}]},{"title":"Tim","_path":"/videos/tim","children":[{"title":"72 hours in Austin, TX","_path":"/videos/tim/000-mvq-_s20ndk"},{"title":"The Jake Ward Interview. The power of developer advocacy with Data Protocol","_path":"/videos/tim/001-vex0ktitib4"},{"title":"How to do Developer Relations in 2024","_path":"/videos/tim/002-196iqp-lhlw"},{"title":"Cloudinary's hidden magic: AI image manipulation in the URL","_path":"/videos/tim/003-yutf3yvsdco"},{"title":"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","_path":"/videos/tim/004-iip2anhietg"},{"title":"How To Make The Best AI Avatar With Heygen","_path":"/videos/tim/005-_wrtdvv37y0"},{"title":"How to tell if you're becoming a senior dev","_path":"/videos/tim/006-j7jsa49zqja"},{"title":"Hygraph Content Federation FTW","_path":"/videos/tim/007-ed1tipzxzr8"},{"title":"Tim Tries caisy CMS: the best CMS for agencies?","_path":"/videos/tim/008-3tbdmf1pwe"},{"title":"The best Nuxt 3 GraphQL setup","_path":"/videos/tim/009-q282biqyj6a"},{"title":"Browser Client Hints are awesome!","_path":"/videos/tim/010-h3rlwn27ga8"},{"title":"This is Headless 2.0","_path":"/videos/tim/011-ergktbs0woe"},{"title":"Nuxt 3: Learn about Pinia setup and basics","_path":"/videos/tim/012-zscc8-0-dis"},{"title":"I cloned myself with AI to create more content","_path":"/videos/tim/013-zn2zxyvw4hy"},{"title":"Vue.js Live London 2023 Vlog","_path":"/videos/tim/014-dyq17r5c9-s"},{"title":"AI audio for content creators","_path":"/videos/tim/015-oq050_ytylk"},{"title":"I joined the Supasquad ambassadors program at Supabase!","_path":"/videos/tim/016-rwrzovc5oc4"},{"title":"Vue.js guitar karaoke: how I built it","_path":"/videos/tim/017-m0mrligs6i0"},{"title":"The story behind Alive and kicking","_path":"/videos/tim/018-hhpitreyobi"},{"title":"I fell back in love with Sitecore","_path":"/videos/tim/019-e64eyulaomk"},{"title":"JamstackConf talk: DXC, the modern tech stack","_path":"/videos/tim/020-xetyke98mp0"},{"title":"Turbo Tutorial | Vue 3: Learn how to make a composable","_path":"/videos/tim/021-0xo0bnzquf4"},{"title":"Turbo Tutorial | Nuxt 3: How to add client only components","_path":"/videos/tim/022-cwkjy7raony"},{"title":"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","_path":"/videos/tim/023-lsf2rhzsykg"},{"title":"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","_path":"/videos/tim/024-mg0fevwnue0"},{"title":"Turbo Tutorial | Learn about responsive image basics","_path":"/videos/tim/025-npse6yqqzki"},{"title":"Turbo Tutorial | Nuxt 3: Head management","_path":"/videos/tim/026-rh6hjo9xk-o"},{"title":"Turbo Tutorial | Nuxt 3: schema org","_path":"/videos/tim/027-rth3oikjp2k"},{"title":"Turbo Tutorial | Nuxt 3: Query from an external API + read more","_path":"/videos/tim/028-zad7s01lfic"},{"title":"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","_path":"/videos/tim/029-5i1zqfu6xtw"},{"title":"Turbo Tutorial | Nuxt 3: Pick & Transform","_path":"/videos/tim/030-d33ynlhvhxm"},{"title":"Tim Tries Medusajs the open source Shopify alternative","_path":"/videos/tim/031-c1jduhsh1ae"},{"title":"How I film videos in my new studio. A content creator's dream.","_path":"/videos/tim/032-8z1npig-ya"},{"title":"The State of Vue in 2022 with Monterail's Szymon Licau","_path":"/videos/tim/033-8wxdfixxktw"},{"title":"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","_path":"/videos/tim/034-yzh1l740tno"},{"title":"How to buy gear for content creation in 2022","_path":"/videos/tim/035-mdzkgc1pgbc"},{"title":"I built my own YouTube studio 2022","_path":"/videos/tim/036-dli7uzzddx8"},{"title":"Cable management for Nuxt 3","_path":"/videos/tim/037-ry60wvg0fzq"},{"title":"My top 5 favourite Nuxt 3 features","_path":"/videos/tim/038-ek-hhozlfvg"},{"title":"Vlog: DevBreak21 what an amazing conference experience!","_path":"/videos/tim/039-kn5u4ahcs_0"},{"title":"Make your website even faster with Astro!","_path":"/videos/tim/040-o8m4cs3o4ii"},{"title":"Vlog: I'm building my own studio!","_path":"/videos/tim/041-xba15vr-kfy"},{"title":"Nuxt vs Next: the battle of the Images","_path":"/videos/tim/042-lpk392g10ou"},{"title":"The Ultimate Guide to Responsive Images","_path":"/videos/tim/043-uxjgt2_mf90"},{"title":"Tim Tries: Storyblok. One of the best headless content editing experiences","_path":"/videos/tim/044-d0ra_m3jlsy"},{"title":"Tim Tries: Algolia Crawler Plugin for Netlify","_path":"/videos/tim/045-7jk6nyalhuc"},{"title":"Apple M1 with Tailwind JIT and Vite is faster than my brain","_path":"/videos/tim/046-su22r2w3wea"},{"title":"Unboxing the new M1 Mac Mini for Video editing and programming.","_path":"/videos/tim/047-6ub_k4uvz20"},{"title":"Core Web Vitals explained with Ishan Anand | e01","_path":"/videos/tim/048-ec7pvgy8xsq"},{"title":"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","_path":"/videos/tim/049-lsxu_q-8rrc"},{"title":"The Modern DXP: How JAMstack will change the world","_path":"/videos/tim/050-yezaod1sddg"},{"title":"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","_path":"/videos/tim/051-dv5mlxbrti8"},{"title":"I have a new job at a Silicon Valley Startup!","_path":"/videos/tim/052-hcthe5pwhvm"},{"title":"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","_path":"/videos/tim/053-zd7qkgd8ix8"},{"title":"2020 The best year of my career","_path":"/videos/tim/054-bhffzm6n3tw"},{"title":"How to build your online persona","_path":"/videos/tim/055-s1od1u-itka"},{"title":"How to record yourself guide","_path":"/videos/tim/056-rm_bameopiy"},{"title":"Interview with Alex Shyba co-founder of Uniform","_path":"/videos/tim/057-db5jjbwg-zm"},{"title":"How to reduce bundle sizes in Nuxt","_path":"/videos/tim/058-iykkwy8k2d4"},{"title":"Interview with Evan You","_path":"/videos/tim/059-nr_aohhgl3s"},{"title":"Easy dynamic routes in your Nuxt sitemap","_path":"/videos/tim/060-oxjhew-10aq"},{"title":"Webpack 5 module federation and more","_path":"/videos/tim/061-zxz9mojtwh8"},{"title":"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","_path":"/videos/tim/062-xiz2p0zlbd8"},{"title":"Magical combination to build a modern website","_path":"/videos/tim/063-v5aobiirud4"},{"title":"Hi! 👋 I'm Tim and I'm a content creator!","_path":"/videos/tim/064-jtghl7ggoas"},{"title":"Tim Tries: Chakra UI with Jonathan Bakebwa","_path":"/videos/tim/065-96xypbh-hyo"},{"title":"Tim Tries: TailwindCSS with Alexander Lichter","_path":"/videos/tim/066-0vdfegtjdcg"},{"title":"Tim's Vlog: How to be a successful leader","_path":"/videos/tim/067-mcyeoin1s48"},{"title":"Vue.js Global talk: Introducing Vite & Vitepress","_path":"/videos/tim/068-gojckw5ih7e"},{"title":"A developers guide to low carbon websites","_path":"/videos/tim/069-ewlegish6dw"},{"title":"Tim's vlog: Career advice for developers","_path":"/videos/tim/070-auzzgmyn0z4"},{"title":"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","_path":"/videos/tim/071-zuht0g3zpyw"},{"title":"Vue.js Global Conference: An interview with Anthony Gore","_path":"/videos/tim/072-madbxcbsvqo"},{"title":"Vue.js Global Conference: An interview with Eduardo San Martin Morote","_path":"/videos/tim/073-uufbfcipaly"},{"title":"Webpack tutorial: Create a config from scratch","_path":"/videos/tim/074-fyuvqruzevy"},{"title":"Vue.js Global conference: An interview with Gift Egwuenu","_path":"/videos/tim/075-tlbstgzcyyy"},{"title":"Vue.js Global conference: An interview with Filip Rakowski","_path":"/videos/tim/076-brmxytpulm4"},{"title":"Vue.js Global conference: An interview with Debbie O'Brien","_path":"/videos/tim/077-ibkgryfpuds"},{"title":"Vue.js Global conference: An interview with Maria Lamardo","_path":"/videos/tim/078-2mfsb5ulhks"},{"title":"Azure functions revisited for v3. Conclusion: AWESOME","_path":"/videos/tim/079-d0jk7hyu1ai"},{"title":"Tutorial: How to build a Gridsome Source Plugin","_path":"/videos/tim/080-v50mhzzffaa"},{"title":"My audio setup 2020","_path":"/videos/tim/081-pu8f59x14-y"},{"title":"Tim Tries: Azure Static Web Apps","_path":"/videos/tim/082-a54ifas8rts"},{"title":"Tutorial: Vue 3 composition API and Vite to recreate TikTok","_path":"/videos/tim/083-ggaoxqtc7ke"},{"title":"Tim Tries: Slice Machine by Nuxt and Prismic","_path":"/videos/tim/084-bpjjxxqycdi"},{"title":"An Interview with Scott Tolinski from Level up Tutorials","_path":"/videos/tim/085-zpq_gqmit5y"},{"title":"Lazy Loading Images with Prismic and Vue.js","_path":"/videos/tim/086-5jaypm6gx1o"},{"title":"An Interview with Jen Looper from Microsoft","_path":"/videos/tim/087-cf5_pit-ai"},{"title":"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","_path":"/videos/tim/088-tqr2eo7tivc"},{"title":"An interview with Debbie O'brien from Nuxtjs","_path":"/videos/tim/089-aw4nl6hgjb0"},{"title":"Quarantine licks #2 - Folksy Tunes","_path":"/videos/tim/090-gxwrzna4udq"},{"title":"COVID-19 Work from home: how to make your webcam look good","_path":"/videos/tim/091-xit7qtmcmik"},{"title":"Weight loss with Serveless architecture and the JAMstack","_path":"/videos/tim/092-bebr8ev2no8"},{"title":"Quarantine Licks #1 - Acoustic Blues","_path":"/videos/tim/093-wlqlclwjorc"},{"title":"An interview with Tim Benniks from Valtech","_path":"/videos/tim/094-zzrqozpc068"},{"title":"HTTP/2 performance: you still need a bundler!","_path":"/videos/tim/095-f5f7n2kc7hq"},{"title":"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","_path":"/videos/tim/096-nw0y6dkx1ku"},{"title":"An interview with Filip Rakowski from Vue Storefront","_path":"/videos/tim/097-vqjp5qfiolg"},{"title":"[Livestream] Team First - How to lead a team to success in a high pressure environment","_path":"/videos/tim/098-ltm7wz0q564"},{"title":"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","_path":"/videos/tim/099-u5s4dqqlt1o"},{"title":"Vue.js Amsterdam recap and exciting announcements!","_path":"/videos/tim/100-boby5h-r1hc"},{"title":"An interview with Anastasiya Flynn from Sitecore JSS","_path":"/videos/tim/101-pwqvqnnopiy"},{"title":"An interview with Eduardo from the Vue.js core team","_path":"/videos/tim/102-lkiomruiaae"},{"title":"Webpack basics and core concepts","_path":"/videos/tim/103-azqrjdqa_d8"},{"title":"5 tips to become a better web developer.","_path":"/videos/tim/104-wexof1tfi04"},{"title":"An interview with Maya Shavin: When you have the force, nothing is impossible!","_path":"/videos/tim/105-h7qmarrblw8"},{"title":"Code faster and make less mistakes","_path":"/videos/tim/106-liek4kwnsbq"},{"title":"An Introduction to my YouTube Channel","_path":"/videos/tim/107-shtbmwkzwpi"},{"title":"How to make your webcam look great!","_path":"/videos/tim/108-vcf1xfoegwm"}]},{"title":"Uniform","_path":"/videos/uniform","children":[{"title":"Uniform DXCP: composability with Headless 2.0","_path":"/videos/uniform/000-sf8tcv5t9pa"},{"title":"Uniform Canvas: Dynamic Pages","_path":"/videos/uniform/001-vkjwiqlm6_w"},{"title":"Uniform Canvas: Redirect management","_path":"/videos/uniform/002-ndrabg4x6ya"},{"title":"Uniform Dynamic Pages and Redirects","_path":"/videos/uniform/003-hcjlhnrjzpo"},{"title":"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","_path":"/videos/uniform/004-qh_ekk7cfzw"},{"title":"Uniform Canvas: loops","_path":"/videos/uniform/005-ffwvyuyzewu"},{"title":"Uniform Canvas: data types","_path":"/videos/uniform/006-zbi8h6-fp5c"},{"title":"Uniform Canvas: component patterns","_path":"/videos/uniform/007-mczgzargim8"},{"title":"CityJS conference talk: How to sniff out the glue code monster","_path":"/videos/uniform/008-rarbrmxkh5i"},{"title":"Setting up Canvas","_path":"/videos/uniform/009-3uyyxncppd8"},{"title":"Setting up Project map","_path":"/videos/uniform/010-krctdwmf9fg"},{"title":"Getting started with Uniform DXCP - The why and the how","_path":"/videos/uniform/011-j0zqlcmtseq"},{"title":"Work in new ways by integrating Algolia with Uniform’s visual editor","_path":"/videos/uniform/012-aoaqo3tlzpw"},{"title":"Getting Started with Uniform and Algolia","_path":"/videos/uniform/013-lfkshonh3oc"},{"title":"Creating with Canvas by Richard Bausek and Tim Benniks","_path":"/videos/uniform/014-t3avobqvwps"},{"title":"Uniform + Algolia = A Magical Combination","_path":"/videos/uniform/015-z_41xoh9w1w"},{"title":"Uniform and Cloudinary play very well together!","_path":"/videos/uniform/016-oqqj-tu-urc"},{"title":"Nuxt 3 with Content v2 and Uniform is magic","_path":"/videos/uniform/017-sy9xkqrxzk8"},{"title":"Uniform CLI: how to manage your compositions","_path":"/videos/uniform/018-e-9ylltykzk"},{"title":"Up and running with Uniform & Nuxt 3 in three mins!","_path":"/videos/uniform/019-hkcxn_r0m54"},{"title":"Setting up live preview with Uniform and Nuxt 3","_path":"/videos/uniform/020-u41omxoadtq"},{"title":"Uniform MACHathon 2022 - Rage against MACHine's project demo","_path":"/videos/uniform/021-h-l_nj5aojs"},{"title":"MACHathon 2022 entry Rage Against the MACHine","_path":"/videos/uniform/022-w4ppzyucowm"},{"title":"Clearbit + Uniform Context = Super-powered personalization","_path":"/videos/uniform/023-ib6dglgf7uc"},{"title":"The Uniform Content Editing Workflow","_path":"/videos/uniform/024-4xykmrzo8ha"},{"title":"The future of the Jamstack is composable","_path":"/videos/uniform/025-4tuixex-iwk"},{"title":"Progressing through Environments with Uniform","_path":"/videos/uniform/026-9q_1wzx_kju"},{"title":"Uniform Product Meetup: Personalizing content based on user location","_path":"/videos/uniform/027-myj-ild_rxk"},{"title":"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","_path":"/videos/uniform/028-jdl4a64klrg"},{"title":"Jamstack Fridays with T&T: Personalization with Uniform Canvas","_path":"/videos/uniform/029-fevaivas-ye"},{"title":"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","_path":"/videos/uniform/030-_8gh9oycsus"},{"title":"New features for Contentful in Uniform Canvas","_path":"/videos/uniform/031-vvlwwonsqe8"},{"title":"Take your BigCommerce store to the next level with faster time to market and personalization","_path":"/videos/uniform/032-evmwlfhv8wc"},{"title":"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","_path":"/videos/uniform/033-jjwwwr9uixo"},{"title":"Uniform Tutorial Series #3: Defining Intents","_path":"/videos/uniform/034-gwbkr9ut5-w"},{"title":"Uniform Tutorial Series #2: Intents & Signals","_path":"/videos/uniform/035-0gp_yf4fvo8"},{"title":"Uniform Tutorial Series #1: Personalization Basics","_path":"/videos/uniform/036-_tkrrqdsolk"},{"title":"Uniform Platform for business users","_path":"/videos/uniform/037-pt1p8ixie-k"},{"title":"Uniform Platform for Developers","_path":"/videos/uniform/038-jul6h-3wrnq"},{"title":"Why is Jamstack so important for the future of DXP","_path":"/videos/uniform/039-pdekgezhffi"},{"title":"The problem of modern DXP (and the solution)","_path":"/videos/uniform/040-iaabbjfiiro"},{"title":"True composability in the modern DXP","_path":"/videos/uniform/041-fo9cop0znt0"},{"title":"Astro FTW! Vue and React can work together in the same app","_path":"/videos/uniform/042-surxtza2sa0"},{"title":"Uniform Personalization Basics for MACHathon contenders","_path":"/videos/uniform/043-wontid8zkf0"},{"title":"Kentico Kontent mystery package unboxing","_path":"/videos/uniform/044-fngyhaaogqc"},{"title":"Product Meetup: Uniform for Sitecore 5 is out!","_path":"/videos/uniform/045-itk9sgw0n7u"},{"title":"Personalize Jamstack websites with Uniform for Kentico Kontent","_path":"/videos/uniform/046-hdupegqtjrm"},{"title":"Jamstack Fridays with T&T: Next auth and Firebase","_path":"/videos/uniform/047-6jkekhxmmaq"},{"title":"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","_path":"/videos/uniform/048-h3y_jnbtrom"},{"title":"Jamstack Friday news: Featurepeek is fire!","_path":"/videos/uniform/049-xr8eo9g6bps"},{"title":"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","_path":"/videos/uniform/050-4eepxpo9iqc"},{"title":"Jamstack Friday news: The latest NextJS release is awesome!","_path":"/videos/uniform/051-fdounapttfy"},{"title":"A comprehensive view on personalization with Lars Petersen","_path":"/videos/uniform/052-gsey28saqac"},{"title":"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","_path":"/videos/uniform/053-r2ygbt1to4s"},{"title":"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","_path":"/videos/uniform/054-9m73vicako4"},{"title":"Jamstack personalization with Contentstack and Uniform","_path":"/videos/uniform/055-d41ch2lnxtq"},{"title":"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","_path":"/videos/uniform/056-eohudn8apm4"}]}]},{"title":"Writing","_path":"/writing","children":[{"title":"Digital experience platforms: the old versus the new","_path":"/writing/digital-experience-platforms-the-old-versus-the-new"},{"title":"Fast, personalized pages with Vercel Edge Middleware and Uniform","_path":"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform"},{"title":"How to dynamically stream video","_path":"/writing/how-to-dynamically-stream-video"},{"title":"How to get your webcam to look decent in a few simple steps","_path":"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps"},{"title":"How to sniff out the Glue Monster","_path":"/writing/how-to-sniff-out-the-glue-monster"},{"title":"Writing","_path":"/writing"},{"title":"Level up your collaboration game: Developer insights for winning with marketing pros","_path":"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro"},{"title":"MACH versus monolithic suites","_path":"/writing/mach-versus-monolithic-suites"},{"title":"Make the Web Greener, Luxury Edition","_path":"/writing/make-the-web-greener-luxury-edition"},{"title":"My Fitness Story","_path":"/writing/my-fitness-story"},{"title":"New job alert!","_path":"/writing/new-job-alert"},{"title":"The 2015 Paris marathon","_path":"/writing/the-2015-paris-maratho"},{"title":"The content Graph is the future","_path":"/writing/the-content-graph-is-the-future"},{"title":"The future of headless CMS: Content Federation with GraphQL","_path":"/writing/the-future-of-headless-cms-content-federation-with-graphql"},{"title":"The future of jamstack is composable","_path":"/writing/the-future-of-jamstack-is-composable"},{"title":"The future of managing projects at agencies","_path":"/writing/the-future-of-managing-projects-at-agencie"},{"title":"The lost promise of headless","_path":"/writing/the-lost-promise-of-headless"},{"title":"The MACH monolith","_path":"/writing/the-mach-monolith"},{"title":"The move from monolithic to composable architectures","_path":"/writing/the-move-from-monolithic-to-composable-architectures"},{"title":"The real deal about content management buzzwords","_path":"/writing/the-real-deal-about-content-management-buzzword"},{"title":"This is headless 2.0","_path":"/writing/this-is-headless-20"},{"title":"Uniform DXCP: the what, why, and how","_path":"/writing/uniform-dxcp-the-what-why-and-how"},{"title":"Uniform is Nuxt 3 ready","_path":"/writing/uniform-is-nuxt-3-read"},{"title":"What type of content organization do you need?","_path":"/writing/what-type-of-content-organization-do-you-need"},{"title":"Why I didn't run the 2016 marathon","_path":"/writing/why-i-didnt-run-the-2016-marathon"}]},{"title":"Speaking","_path":"/speaking","children":[{"title":"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","_path":"/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6"},{"title":"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","_path":"/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk"},{"title":"2019 04 19 Clifq5gd63xhq0buvufv6nagk","_path":"/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk"},{"title":"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","_path":"/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai"},{"title":"2019 05 25 Clifq5fpd3xt00aw4grnzft29","_path":"/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29"},{"title":"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","_path":"/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k"},{"title":"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","_path":"/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc"},{"title":"2019 09 27 Clifq5eos3xhh0buvewly5gxs","_path":"/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs"},{"title":"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","_path":"/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d"},{"title":"2019 12 17 Clifq5dyh40ij0bw9oquw072b","_path":"/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b"},{"title":"2020 02 18 Clifq5dk940if0bw9ok9achtj","_path":"/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj"},{"title":"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","_path":"/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n"},{"title":"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","_path":"/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1"},{"title":"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","_path":"/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q"},{"title":"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","_path":"/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3"},{"title":"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","_path":"/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp"},{"title":"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","_path":"/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1"},{"title":"2020 06 09 Clifq5bj73xrj0aw42st3pna4","_path":"/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4"},{"title":"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","_path":"/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb"},{"title":"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","_path":"/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2"},{"title":"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","_path":"/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e"},{"title":"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","_path":"/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk"},{"title":"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","_path":"/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm"},{"title":"2020 10 14 Clifq59mp3wgc0bw82qykah6x","_path":"/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x"},{"title":"2020 10 29 Clifq59b83xr60aw45w2sqa1g","_path":"/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g"},{"title":"2020 11 10 Clifq590340gy0bw9onnmgr7y","_path":"/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y"},{"title":"2020 11 11 Clifq58oo40gu0bw9iffiakmh","_path":"/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh"},{"title":"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","_path":"/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s"},{"title":"2020 12 02 Clifq582i3wg80bw8rszss5am","_path":"/speaking/2020-12-02-clifq582i3wg80bw8rszss5am"},{"title":"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","_path":"/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9"},{"title":"2020 12 16 Clifq57c43wg40bw81h7fr291","_path":"/speaking/2020-12-16-clifq57c43wg40bw81h7fr291"},{"title":"2020 12 18 Clifq571z40gq0bw9b62wbowr","_path":"/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr"},{"title":"2021 01 12 Clifq56q43xgk0buv4hu04quz","_path":"/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz"},{"title":"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","_path":"/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s"},{"title":"2021 02 02 Clifq56623xqt0aw44sbds5cn","_path":"/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn"},{"title":"2021 02 22 Clifq55tf40gk0bw9vofea3yp","_path":"/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp"},{"title":"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","_path":"/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1"},{"title":"2021 03 24 Clifq559p3xgf0buvzch9im3l","_path":"/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l"},{"title":"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","_path":"/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk"},{"title":"2021 04 20 Clifq54na3xgb0buvrvmbamxf","_path":"/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf"},{"title":"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","_path":"/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw"},{"title":"2021 07 27 Clifq542s3xg60buvdk199xtq","_path":"/speaking/2021-07-27-clifq542s3xg60buvdk199xtq"},{"title":"2021 09 07 Clifq53so3wfq0bw81xni3t7x","_path":"/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x"},{"title":"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","_path":"/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu"},{"title":"2021 11 10 Clifq536v3xg20buvlz1n7ddw","_path":"/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw"},{"title":"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","_path":"/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x"},{"title":"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","_path":"/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey"},{"title":"2021 12 14 Clifq528940gb0bw9bok0o68k","_path":"/speaking/2021-12-14-clifq528940gb0bw9bok0o68k"},{"title":"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","_path":"/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9"},{"title":"2022 02 08 Clifq51j53wez0bw8cd1znjmi","_path":"/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi"},{"title":"2022 02 10 Clifq515940g70bw9yu0ltedp","_path":"/speaking/2022-02-10-clifq515940g70bw9yu0ltedp"},{"title":"2022 03 01 Clifq50sj40g30bw9rqy825mb","_path":"/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb"},{"title":"2022 03 02 Clifq50g53xfr0buv56km2voa","_path":"/speaking/2022-03-02-clifq50g53xfr0buv56km2voa"},{"title":"2022 05 26 Clifq506e3wev0bw88q2lf63q","_path":"/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q"},{"title":"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","_path":"/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u"},{"title":"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","_path":"/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9"},{"title":"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","_path":"/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y"},{"title":"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","_path":"/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl"},{"title":"2022 07 27 Clifq4yep3xf20buv5vorwrl5","_path":"/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5"},{"title":"2022 08 10 Clifq4xw640fr0bw9po5n2nug","_path":"/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug"},{"title":"2022 08 11 Clifq4xdz3wek0bw862z7knrr","_path":"/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr"},{"title":"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","_path":"/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy"},{"title":"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","_path":"/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70"},{"title":"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","_path":"/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb"},{"title":"2022 10 14 Clifq4w263xet0buv0mzqzfre","_path":"/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre"},{"title":"2022 11 02 Clifq4vps3xep0buvimxfntyq","_path":"/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq"},{"title":"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","_path":"/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4"},{"title":"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","_path":"/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj"},{"title":"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","_path":"/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr"},{"title":"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","_path":"/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh"},{"title":"2023 05 12 Clifq4tw33we40bw8jxhaaroo","_path":"/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo"},{"title":"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","_path":"/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm"},{"title":"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","_path":"/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq"},{"title":"2023 07 27 Clifq4sto3xph0aw4letve613","_path":"/speaking/2023-07-27-clifq4sto3xph0aw4letve613"},{"title":"2024 02 29 Clkzot86xire30aujuy08465e","_path":"/speaking/2024-02-29-clkzot86xire30aujuy08465e"},{"title":"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","_path":"/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t"},{"title":"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","_path":"/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v"},{"title":"Speaking","_path":"/speaking"}]},{"title":"live streams","_path":"/livestreams"},{"title":"press kit","_path":"/presskit"},{"title":"alive and kicking","_path":"/alive-and-kicking"}] \ No newline at end of file diff --git a/api/_content/navigation/u7BbTyuhiE.1718484799542.json b/api/_content/navigation/u7BbTyuhiE.1718484799542.json new file mode 100644 index 00000000..6a62f846 --- /dev/null +++ b/api/_content/navigation/u7BbTyuhiE.1718484799542.json @@ -0,0 +1 @@ +[{"title":"About Tim","_path":"/about"},{"title":"Videos","_path":"/videos","children":[{"title":"Alive And Kicking","_path":"/videos/alive-and-kicking","children":[{"title":"The story behind Alive and kicking","_path":"/videos/alive-and-kicking/000-hhpitreyobi"},{"title":"72 hours in Austin, TX","_path":"/videos/alive-and-kicking/001-mvq-_s20ndk"},{"title":"Vue.js guitar karaoke: how I built it","_path":"/videos/alive-and-kicking/002-m0mrligs6i0"},{"title":"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","_path":"/videos/alive-and-kicking/003-p3pm_0p8lz4"},{"title":"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","_path":"/videos/alive-and-kicking/004-4m4tij0z20"}]},{"title":"Headless Creator","_path":"/videos/headless-creator","children":[{"title":"CDOBC 5: Transitioning from DXP to DXC","_path":"/videos/headless-creator/000-m8on6zkr7q4"},{"title":"CDOBC Lesson 4: The DXP Tech Stack Overview","_path":"/videos/headless-creator/001-smbq8aoa4jm"},{"title":"CDOBC Lesson 3: Separation of Concerns","_path":"/videos/headless-creator/002-sx5fbtcnrsg"},{"title":"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","_path":"/videos/headless-creator/003-eybdyoihn1g"},{"title":"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","_path":"/videos/headless-creator/004-hshm8hlopka"}]},{"title":"Hygraph","_path":"/videos/hygraph","children":[{"title":"The simplest way to connect Hygraph to NuxtJS","_path":"/videos/hygraph/000-m8qftvizsmw"},{"title":"The simplest way to connect Hygraph to Astro","_path":"/videos/hygraph/001-aahu9x5wajy"},{"title":"The simplest way to connect Hygraph to Next.js","_path":"/videos/hygraph/002-fksw0bfbtdo"},{"title":"How to connect Commercetools and Hygraph","_path":"/videos/hygraph/003-x8tb3li6dg0"},{"title":"How to add a remote REST source to Hygraph","_path":"/videos/hygraph/004-zredqavtow4"},{"title":"How to add a remote GraphQL source to Hygraph","_path":"/videos/hygraph/005-aydykxckkfe"},{"title":"CMS Feature ninja: set up a GraphQL where clause on any field","_path":"/videos/hygraph/006-axq-jo8hmzq"},{"title":"Headless commerce with #Nuxt and #Tailwind.","_path":"/videos/hygraph/007-e9jxm4h4a48"},{"title":"Creating an Enterprise News starter with Next.js and Hygraph CMS","_path":"/videos/hygraph/008-hs1imxycyqg"},{"title":"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","_path":"/videos/hygraph/009-snhzgplvm8o"},{"title":"Set up headless CMS localization in 6 mins","_path":"/videos/hygraph/010-8_ttkblpdpm"},{"title":"How to use Nuxt 3 with Hygraph and GraphQL","_path":"/videos/hygraph/011-keqn1rt8fwq"},{"title":"How to add any REST source to Hygraph headless CMS","_path":"/videos/hygraph/012-nphsqsol3xc"},{"title":"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","_path":"/videos/hygraph/013-exzp3okqtxk"}]},{"title":"Videos","_path":"/videos"},{"title":"Live Hygraph","_path":"/videos/live-hygraph","children":[{"title":"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","_path":"/videos/live-hygraph/000-eydstedp-v4"},{"title":"How to integrate Cloudinary with headless CMS w/ Colby Fayock","_path":"/videos/live-hygraph/001-_iah2t5g02o"},{"title":"Combining WordPress with Headless CMS","_path":"/videos/live-hygraph/002-fy_w2yousbo"},{"title":"Exploring localisation & translation with headless CMS","_path":"/videos/live-hygraph/003-jgx1dytflvq"},{"title":"Customizing Hygraph data with external services","_path":"/videos/live-hygraph/004-ombpixxx-3e"},{"title":"Exploring the Hygraph Asset Manager","_path":"/videos/live-hygraph/005-ht-scjkem9q"},{"title":"Hygraph Studio Launch - Workshop: Hygraph Asset Management","_path":"/videos/live-hygraph/006-qegf6rerifw"},{"title":"Hygraph Studio Launch - DevX: Performance Gains","_path":"/videos/live-hygraph/007-etie3zygone"},{"title":"How to build a live-voting experience with Hygraph, Nuxt and Supabase","_path":"/videos/live-hygraph/008-phcxh2m7ozm"},{"title":"Building Content Models for Devs and Editors w/ Lo & Bryan","_path":"/videos/live-hygraph/009-pzc527rz7es"},{"title":"Bryan teaches Tim Next.js with GraphQL and Hygraph","_path":"/videos/live-hygraph/010-t00uxbjsdum"},{"title":"Pagination with Astro and Hygraph","_path":"/videos/live-hygraph/011-o_dvlrwpebk"},{"title":"How to use Rich Text in a Headless CMS","_path":"/videos/live-hygraph/012-vrrzgly1n5c"},{"title":"Add multi-tenancy to a Headless CMS","_path":"/videos/live-hygraph/013-m5xamvlqh1g"},{"title":"Programmatically import data into the Hygraph Headless CMS","_path":"/videos/live-hygraph/014-jc09s5zmw_k"},{"title":"Building an e-commerce site with Hygraph and Astro","_path":"/videos/live-hygraph/015-aietljmxmxm"}]},{"title":"Live Uniform","_path":"/videos/live-uniform","children":[{"title":"Uniform Product Meetup","_path":"/videos/live-uniform/000-5qx4fmkkh_m"},{"title":"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","_path":"/videos/live-uniform/001-zdqk9zql3za"},{"title":"Product Meetup #2: Interesting usecases with Adam Lamarre","_path":"/videos/live-uniform/002-tngn1e4hefi"},{"title":"Personalizing Storyblok with Uniform and Nuxt.js","_path":"/videos/live-uniform/003-vkfasdfduf8"},{"title":"Page compositions in Next.js with Uniform Canvas and the Jamstack","_path":"/videos/live-uniform/004-baibxsoagdw"},{"title":"A Uniform Canvas use case deep-dive","_path":"/videos/live-uniform/005-rv4wzkhjp7k"},{"title":"The Modern Digital Pipeline - The future of Jamstack is composable","_path":"/videos/live-uniform/006-r2lwjmehkmo"},{"title":"Composable without Compromise w/ Natalia Venditto","_path":"/videos/live-uniform/007-7-ebcqip9ec"},{"title":"Unpack the Stack w/ Daniel Roe","_path":"/videos/live-uniform/008-1h0jr_vbz7m"},{"title":"Composable without Compromise w/ Matt Webb","_path":"/videos/live-uniform/009-sitbljdtbjy"},{"title":"Unpack the Stack w/ Colby Fayock","_path":"/videos/live-uniform/010-rbjccl9qate"},{"title":"Composable without Compromise w/ Casper Rasmussen","_path":"/videos/live-uniform/011-yjc8gvarvge"},{"title":"Unpack the Stack w/ Brittney Postma","_path":"/videos/live-uniform/012-6ek_bv2yrf8"},{"title":"Composable without Compromise w/ Filip Rakowski","_path":"/videos/live-uniform/013-trisovjcivw"},{"title":"Unpack the Stack w/ Tomek Juranek","_path":"/videos/live-uniform/014-0xsg-apdt6c"},{"title":"Composable without Compromise w/ Dom Selvon","_path":"/videos/live-uniform/015-hsirsjtqgs8"},{"title":"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","_path":"/videos/live-uniform/016-uuhul0tpezy"},{"title":"Unpack the stack: next.js app directory with Steven Tey","_path":"/videos/live-uniform/017-8ju8znzjoh4"},{"title":"Unpack the stack with Elian Van Cutsem","_path":"/videos/live-uniform/018-wmacanhmrsi"},{"title":"Unpack the Stack with Marc Backes","_path":"/videos/live-uniform/019-axqvbrv_xc8"},{"title":"Unpack the stack with William Imoh","_path":"/videos/live-uniform/020-gmh8pm-nvl0"},{"title":"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","_path":"/videos/live-uniform/021-5r8_kiqjk6c"},{"title":"Unpack the Stack w/ Lucie from Prismic","_path":"/videos/live-uniform/022-hveoqtpoimk"},{"title":"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","_path":"/videos/live-uniform/023-skuvyvd-njg"},{"title":"Unpack the Stack w/ Harshil from Contentful","_path":"/videos/live-uniform/024-mnkxtbb3_vw"},{"title":"Introducing: Mesh + Component Starter Kit with Richard and Tim","_path":"/videos/live-uniform/025-hmtwfhon2o"},{"title":"Composable without Compromise w/ Jonas Ulrich","_path":"/videos/live-uniform/026-dvqvxggnp5q"},{"title":"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","_path":"/videos/live-uniform/027-vfeieragxac"},{"title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","_path":"/videos/live-uniform/028-ekut1koa2n8"},{"title":"How the RFP process has improved with composable architectures","_path":"/videos/live-uniform/029-opklvtnkncs"},{"title":"Composable CMS evaluation: Delivery APIs and CDNs","_path":"/videos/live-uniform/030-m-kkuomzg88"},{"title":"What legacy? Migration tactics for monolith to composable","_path":"/videos/live-uniform/031-jvgiaotcerq"},{"title":"Composable CMS evaluation: SDK frameworks","_path":"/videos/live-uniform/032-isxyi-5do5o"}]},{"title":"Misc Streams","_path":"/videos/misc-streams","children":[{"title":"The Dare Dialogues - S01E03: Making Waves","_path":"/videos/misc-streams/000-1tjmq5b0fmc"},{"title":"The Dare Dialogues - S01E02: Mount Stupid","_path":"/videos/misc-streams/001-tvpdzpl2pvm"},{"title":"Customer Story: How to Create AI Videos for B2B Content Marketing","_path":"/videos/misc-streams/002-rjjyhwso1gg"},{"title":"What legacy? Migration tactics for monolith to composable","_path":"/videos/misc-streams/003-jvgiaotcerq"},{"title":"Ultimate makeover. Make an existing Sitecore solution modern and composable","_path":"/videos/misc-streams/004-ekut1koa2n8"},{"title":"Tim Tries: TresJS with Alvaro Sabu","_path":"/videos/misc-streams/005-d8ahncxgryg"},{"title":"Keyboard Madness with Janos Kehl and Konstantin Bifert","_path":"/videos/misc-streams/006-umfrj32jle0"}]},{"title":"Mp","_path":"/videos/mp","children":[{"title":"Vue.js Amsterdam 2024","_path":"/videos/mp/000-ubgzoawmqlw"},{"title":"Vue.js Amsterdam Vlog 2023","_path":"/videos/mp/001-zx6_fi0sdmy"},{"title":"JSWorld Conference 2023 Vlog","_path":"/videos/mp/002-d4rai10p9m4"},{"title":"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","_path":"/videos/mp/003-tmf2wzntooa"},{"title":"JSWorld Conference 2022 - Vlog","_path":"/videos/mp/004-xhbwuk0qlue"},{"title":"Vue.js Roadtrip Barcelona - Vlog","_path":"/videos/mp/005-2e_kk9mqrwm"}]},{"title":"Tim","_path":"/videos/tim","children":[{"title":"72 hours in Austin, TX","_path":"/videos/tim/000-mvq-_s20ndk"},{"title":"The Jake Ward Interview. The power of developer advocacy with Data Protocol","_path":"/videos/tim/001-vex0ktitib4"},{"title":"How to do Developer Relations in 2024","_path":"/videos/tim/002-196iqp-lhlw"},{"title":"Cloudinary's hidden magic: AI image manipulation in the URL","_path":"/videos/tim/003-yutf3yvsdco"},{"title":"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","_path":"/videos/tim/004-iip2anhietg"},{"title":"How To Make The Best AI Avatar With Heygen","_path":"/videos/tim/005-_wrtdvv37y0"},{"title":"How to tell if you're becoming a senior dev","_path":"/videos/tim/006-j7jsa49zqja"},{"title":"Hygraph Content Federation FTW","_path":"/videos/tim/007-ed1tipzxzr8"},{"title":"Tim Tries caisy CMS: the best CMS for agencies?","_path":"/videos/tim/008-3tbdmf1pwe"},{"title":"The best Nuxt 3 GraphQL setup","_path":"/videos/tim/009-q282biqyj6a"},{"title":"Browser Client Hints are awesome!","_path":"/videos/tim/010-h3rlwn27ga8"},{"title":"This is Headless 2.0","_path":"/videos/tim/011-ergktbs0woe"},{"title":"Nuxt 3: Learn about Pinia setup and basics","_path":"/videos/tim/012-zscc8-0-dis"},{"title":"I cloned myself with AI to create more content","_path":"/videos/tim/013-zn2zxyvw4hy"},{"title":"Vue.js Live London 2023 Vlog","_path":"/videos/tim/014-dyq17r5c9-s"},{"title":"AI audio for content creators","_path":"/videos/tim/015-oq050_ytylk"},{"title":"I joined the Supasquad ambassadors program at Supabase!","_path":"/videos/tim/016-rwrzovc5oc4"},{"title":"Vue.js guitar karaoke: how I built it","_path":"/videos/tim/017-m0mrligs6i0"},{"title":"The story behind Alive and kicking","_path":"/videos/tim/018-hhpitreyobi"},{"title":"I fell back in love with Sitecore","_path":"/videos/tim/019-e64eyulaomk"},{"title":"JamstackConf talk: DXC, the modern tech stack","_path":"/videos/tim/020-xetyke98mp0"},{"title":"Turbo Tutorial | Vue 3: Learn how to make a composable","_path":"/videos/tim/021-0xo0bnzquf4"},{"title":"Turbo Tutorial | Nuxt 3: How to add client only components","_path":"/videos/tim/022-cwkjy7raony"},{"title":"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","_path":"/videos/tim/023-lsf2rhzsykg"},{"title":"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","_path":"/videos/tim/024-mg0fevwnue0"},{"title":"Turbo Tutorial | Learn about responsive image basics","_path":"/videos/tim/025-npse6yqqzki"},{"title":"Turbo Tutorial | Nuxt 3: Head management","_path":"/videos/tim/026-rh6hjo9xk-o"},{"title":"Turbo Tutorial | Nuxt 3: schema org","_path":"/videos/tim/027-rth3oikjp2k"},{"title":"Turbo Tutorial | Nuxt 3: Query from an external API + read more","_path":"/videos/tim/028-zad7s01lfic"},{"title":"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","_path":"/videos/tim/029-5i1zqfu6xtw"},{"title":"Turbo Tutorial | Nuxt 3: Pick & Transform","_path":"/videos/tim/030-d33ynlhvhxm"},{"title":"Tim Tries Medusajs the open source Shopify alternative","_path":"/videos/tim/031-c1jduhsh1ae"},{"title":"How I film videos in my new studio. A content creator's dream.","_path":"/videos/tim/032-8z1npig-ya"},{"title":"The State of Vue in 2022 with Monterail's Szymon Licau","_path":"/videos/tim/033-8wxdfixxktw"},{"title":"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","_path":"/videos/tim/034-yzh1l740tno"},{"title":"How to buy gear for content creation in 2022","_path":"/videos/tim/035-mdzkgc1pgbc"},{"title":"I built my own YouTube studio 2022","_path":"/videos/tim/036-dli7uzzddx8"},{"title":"Cable management for Nuxt 3","_path":"/videos/tim/037-ry60wvg0fzq"},{"title":"My top 5 favourite Nuxt 3 features","_path":"/videos/tim/038-ek-hhozlfvg"},{"title":"Vlog: DevBreak21 what an amazing conference experience!","_path":"/videos/tim/039-kn5u4ahcs_0"},{"title":"Make your website even faster with Astro!","_path":"/videos/tim/040-o8m4cs3o4ii"},{"title":"Vlog: I'm building my own studio!","_path":"/videos/tim/041-xba15vr-kfy"},{"title":"Nuxt vs Next: the battle of the Images","_path":"/videos/tim/042-lpk392g10ou"},{"title":"The Ultimate Guide to Responsive Images","_path":"/videos/tim/043-uxjgt2_mf90"},{"title":"Tim Tries: Storyblok. One of the best headless content editing experiences","_path":"/videos/tim/044-d0ra_m3jlsy"},{"title":"Tim Tries: Algolia Crawler Plugin for Netlify","_path":"/videos/tim/045-7jk6nyalhuc"},{"title":"Apple M1 with Tailwind JIT and Vite is faster than my brain","_path":"/videos/tim/046-su22r2w3wea"},{"title":"Unboxing the new M1 Mac Mini for Video editing and programming.","_path":"/videos/tim/047-6ub_k4uvz20"},{"title":"Core Web Vitals explained with Ishan Anand | e01","_path":"/videos/tim/048-ec7pvgy8xsq"},{"title":"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","_path":"/videos/tim/049-lsxu_q-8rrc"},{"title":"The Modern DXP: How JAMstack will change the world","_path":"/videos/tim/050-yezaod1sddg"},{"title":"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","_path":"/videos/tim/051-dv5mlxbrti8"},{"title":"I have a new job at a Silicon Valley Startup!","_path":"/videos/tim/052-hcthe5pwhvm"},{"title":"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","_path":"/videos/tim/053-zd7qkgd8ix8"},{"title":"2020 The best year of my career","_path":"/videos/tim/054-bhffzm6n3tw"},{"title":"How to build your online persona","_path":"/videos/tim/055-s1od1u-itka"},{"title":"How to record yourself guide","_path":"/videos/tim/056-rm_bameopiy"},{"title":"Interview with Alex Shyba co-founder of Uniform","_path":"/videos/tim/057-db5jjbwg-zm"},{"title":"How to reduce bundle sizes in Nuxt","_path":"/videos/tim/058-iykkwy8k2d4"},{"title":"Interview with Evan You","_path":"/videos/tim/059-nr_aohhgl3s"},{"title":"Easy dynamic routes in your Nuxt sitemap","_path":"/videos/tim/060-oxjhew-10aq"},{"title":"Webpack 5 module federation and more","_path":"/videos/tim/061-zxz9mojtwh8"},{"title":"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","_path":"/videos/tim/062-xiz2p0zlbd8"},{"title":"Magical combination to build a modern website","_path":"/videos/tim/063-v5aobiirud4"},{"title":"Hi! 👋 I'm Tim and I'm a content creator!","_path":"/videos/tim/064-jtghl7ggoas"},{"title":"Tim Tries: Chakra UI with Jonathan Bakebwa","_path":"/videos/tim/065-96xypbh-hyo"},{"title":"Tim Tries: TailwindCSS with Alexander Lichter","_path":"/videos/tim/066-0vdfegtjdcg"},{"title":"Tim's Vlog: How to be a successful leader","_path":"/videos/tim/067-mcyeoin1s48"},{"title":"Vue.js Global talk: Introducing Vite & Vitepress","_path":"/videos/tim/068-gojckw5ih7e"},{"title":"A developers guide to low carbon websites","_path":"/videos/tim/069-ewlegish6dw"},{"title":"Tim's vlog: Career advice for developers","_path":"/videos/tim/070-auzzgmyn0z4"},{"title":"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","_path":"/videos/tim/071-zuht0g3zpyw"},{"title":"Vue.js Global Conference: An interview with Anthony Gore","_path":"/videos/tim/072-madbxcbsvqo"},{"title":"Vue.js Global Conference: An interview with Eduardo San Martin Morote","_path":"/videos/tim/073-uufbfcipaly"},{"title":"Webpack tutorial: Create a config from scratch","_path":"/videos/tim/074-fyuvqruzevy"},{"title":"Vue.js Global conference: An interview with Gift Egwuenu","_path":"/videos/tim/075-tlbstgzcyyy"},{"title":"Vue.js Global conference: An interview with Filip Rakowski","_path":"/videos/tim/076-brmxytpulm4"},{"title":"Vue.js Global conference: An interview with Debbie O'Brien","_path":"/videos/tim/077-ibkgryfpuds"},{"title":"Vue.js Global conference: An interview with Maria Lamardo","_path":"/videos/tim/078-2mfsb5ulhks"},{"title":"Azure functions revisited for v3. Conclusion: AWESOME","_path":"/videos/tim/079-d0jk7hyu1ai"},{"title":"Tutorial: How to build a Gridsome Source Plugin","_path":"/videos/tim/080-v50mhzzffaa"},{"title":"My audio setup 2020","_path":"/videos/tim/081-pu8f59x14-y"},{"title":"Tim Tries: Azure Static Web Apps","_path":"/videos/tim/082-a54ifas8rts"},{"title":"Tutorial: Vue 3 composition API and Vite to recreate TikTok","_path":"/videos/tim/083-ggaoxqtc7ke"},{"title":"Tim Tries: Slice Machine by Nuxt and Prismic","_path":"/videos/tim/084-bpjjxxqycdi"},{"title":"An Interview with Scott Tolinski from Level up Tutorials","_path":"/videos/tim/085-zpq_gqmit5y"},{"title":"Lazy Loading Images with Prismic and Vue.js","_path":"/videos/tim/086-5jaypm6gx1o"},{"title":"An Interview with Jen Looper from Microsoft","_path":"/videos/tim/087-cf5_pit-ai"},{"title":"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","_path":"/videos/tim/088-tqr2eo7tivc"},{"title":"An interview with Debbie O'brien from Nuxtjs","_path":"/videos/tim/089-aw4nl6hgjb0"},{"title":"Quarantine licks #2 - Folksy Tunes","_path":"/videos/tim/090-gxwrzna4udq"},{"title":"COVID-19 Work from home: how to make your webcam look good","_path":"/videos/tim/091-xit7qtmcmik"},{"title":"Weight loss with Serveless architecture and the JAMstack","_path":"/videos/tim/092-bebr8ev2no8"},{"title":"Quarantine Licks #1 - Acoustic Blues","_path":"/videos/tim/093-wlqlclwjorc"},{"title":"An interview with Tim Benniks from Valtech","_path":"/videos/tim/094-zzrqozpc068"},{"title":"HTTP/2 performance: you still need a bundler!","_path":"/videos/tim/095-f5f7n2kc7hq"},{"title":"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","_path":"/videos/tim/096-nw0y6dkx1ku"},{"title":"An interview with Filip Rakowski from Vue Storefront","_path":"/videos/tim/097-vqjp5qfiolg"},{"title":"[Livestream] Team First - How to lead a team to success in a high pressure environment","_path":"/videos/tim/098-ltm7wz0q564"},{"title":"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","_path":"/videos/tim/099-u5s4dqqlt1o"},{"title":"Vue.js Amsterdam recap and exciting announcements!","_path":"/videos/tim/100-boby5h-r1hc"},{"title":"An interview with Anastasiya Flynn from Sitecore JSS","_path":"/videos/tim/101-pwqvqnnopiy"},{"title":"An interview with Eduardo from the Vue.js core team","_path":"/videos/tim/102-lkiomruiaae"},{"title":"Webpack basics and core concepts","_path":"/videos/tim/103-azqrjdqa_d8"},{"title":"5 tips to become a better web developer.","_path":"/videos/tim/104-wexof1tfi04"},{"title":"An interview with Maya Shavin: When you have the force, nothing is impossible!","_path":"/videos/tim/105-h7qmarrblw8"},{"title":"Code faster and make less mistakes","_path":"/videos/tim/106-liek4kwnsbq"},{"title":"An Introduction to my YouTube Channel","_path":"/videos/tim/107-shtbmwkzwpi"},{"title":"How to make your webcam look great!","_path":"/videos/tim/108-vcf1xfoegwm"}]},{"title":"Uniform","_path":"/videos/uniform","children":[{"title":"Uniform DXCP: composability with Headless 2.0","_path":"/videos/uniform/000-sf8tcv5t9pa"},{"title":"Uniform Canvas: Dynamic Pages","_path":"/videos/uniform/001-vkjwiqlm6_w"},{"title":"Uniform Canvas: Redirect management","_path":"/videos/uniform/002-ndrabg4x6ya"},{"title":"Uniform Dynamic Pages and Redirects","_path":"/videos/uniform/003-hcjlhnrjzpo"},{"title":"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","_path":"/videos/uniform/004-qh_ekk7cfzw"},{"title":"Uniform Canvas: loops","_path":"/videos/uniform/005-ffwvyuyzewu"},{"title":"Uniform Canvas: data types","_path":"/videos/uniform/006-zbi8h6-fp5c"},{"title":"Uniform Canvas: component patterns","_path":"/videos/uniform/007-mczgzargim8"},{"title":"CityJS conference talk: How to sniff out the glue code monster","_path":"/videos/uniform/008-rarbrmxkh5i"},{"title":"Setting up Canvas","_path":"/videos/uniform/009-3uyyxncppd8"},{"title":"Setting up Project map","_path":"/videos/uniform/010-krctdwmf9fg"},{"title":"Getting started with Uniform DXCP - The why and the how","_path":"/videos/uniform/011-j0zqlcmtseq"},{"title":"Work in new ways by integrating Algolia with Uniform’s visual editor","_path":"/videos/uniform/012-aoaqo3tlzpw"},{"title":"Getting Started with Uniform and Algolia","_path":"/videos/uniform/013-lfkshonh3oc"},{"title":"Creating with Canvas by Richard Bausek and Tim Benniks","_path":"/videos/uniform/014-t3avobqvwps"},{"title":"Uniform + Algolia = A Magical Combination","_path":"/videos/uniform/015-z_41xoh9w1w"},{"title":"Uniform and Cloudinary play very well together!","_path":"/videos/uniform/016-oqqj-tu-urc"},{"title":"Nuxt 3 with Content v2 and Uniform is magic","_path":"/videos/uniform/017-sy9xkqrxzk8"},{"title":"Uniform CLI: how to manage your compositions","_path":"/videos/uniform/018-e-9ylltykzk"},{"title":"Up and running with Uniform & Nuxt 3 in three mins!","_path":"/videos/uniform/019-hkcxn_r0m54"},{"title":"Setting up live preview with Uniform and Nuxt 3","_path":"/videos/uniform/020-u41omxoadtq"},{"title":"Uniform MACHathon 2022 - Rage against MACHine's project demo","_path":"/videos/uniform/021-h-l_nj5aojs"},{"title":"MACHathon 2022 entry Rage Against the MACHine","_path":"/videos/uniform/022-w4ppzyucowm"},{"title":"Clearbit + Uniform Context = Super-powered personalization","_path":"/videos/uniform/023-ib6dglgf7uc"},{"title":"The Uniform Content Editing Workflow","_path":"/videos/uniform/024-4xykmrzo8ha"},{"title":"The future of the Jamstack is composable","_path":"/videos/uniform/025-4tuixex-iwk"},{"title":"Progressing through Environments with Uniform","_path":"/videos/uniform/026-9q_1wzx_kju"},{"title":"Uniform Product Meetup: Personalizing content based on user location","_path":"/videos/uniform/027-myj-ild_rxk"},{"title":"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","_path":"/videos/uniform/028-jdl4a64klrg"},{"title":"Jamstack Fridays with T&T: Personalization with Uniform Canvas","_path":"/videos/uniform/029-fevaivas-ye"},{"title":"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","_path":"/videos/uniform/030-_8gh9oycsus"},{"title":"New features for Contentful in Uniform Canvas","_path":"/videos/uniform/031-vvlwwonsqe8"},{"title":"Take your BigCommerce store to the next level with faster time to market and personalization","_path":"/videos/uniform/032-evmwlfhv8wc"},{"title":"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","_path":"/videos/uniform/033-jjwwwr9uixo"},{"title":"Uniform Tutorial Series #3: Defining Intents","_path":"/videos/uniform/034-gwbkr9ut5-w"},{"title":"Uniform Tutorial Series #2: Intents & Signals","_path":"/videos/uniform/035-0gp_yf4fvo8"},{"title":"Uniform Tutorial Series #1: Personalization Basics","_path":"/videos/uniform/036-_tkrrqdsolk"},{"title":"Uniform Platform for business users","_path":"/videos/uniform/037-pt1p8ixie-k"},{"title":"Uniform Platform for Developers","_path":"/videos/uniform/038-jul6h-3wrnq"},{"title":"Why is Jamstack so important for the future of DXP","_path":"/videos/uniform/039-pdekgezhffi"},{"title":"The problem of modern DXP (and the solution)","_path":"/videos/uniform/040-iaabbjfiiro"},{"title":"True composability in the modern DXP","_path":"/videos/uniform/041-fo9cop0znt0"},{"title":"Astro FTW! Vue and React can work together in the same app","_path":"/videos/uniform/042-surxtza2sa0"},{"title":"Uniform Personalization Basics for MACHathon contenders","_path":"/videos/uniform/043-wontid8zkf0"},{"title":"Kentico Kontent mystery package unboxing","_path":"/videos/uniform/044-fngyhaaogqc"},{"title":"Product Meetup: Uniform for Sitecore 5 is out!","_path":"/videos/uniform/045-itk9sgw0n7u"},{"title":"Personalize Jamstack websites with Uniform for Kentico Kontent","_path":"/videos/uniform/046-hdupegqtjrm"},{"title":"Jamstack Fridays with T&T: Next auth and Firebase","_path":"/videos/uniform/047-6jkekhxmmaq"},{"title":"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","_path":"/videos/uniform/048-h3y_jnbtrom"},{"title":"Jamstack Friday news: Featurepeek is fire!","_path":"/videos/uniform/049-xr8eo9g6bps"},{"title":"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","_path":"/videos/uniform/050-4eepxpo9iqc"},{"title":"Jamstack Friday news: The latest NextJS release is awesome!","_path":"/videos/uniform/051-fdounapttfy"},{"title":"A comprehensive view on personalization with Lars Petersen","_path":"/videos/uniform/052-gsey28saqac"},{"title":"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","_path":"/videos/uniform/053-r2ygbt1to4s"},{"title":"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","_path":"/videos/uniform/054-9m73vicako4"},{"title":"Jamstack personalization with Contentstack and Uniform","_path":"/videos/uniform/055-d41ch2lnxtq"},{"title":"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","_path":"/videos/uniform/056-eohudn8apm4"}]}]},{"title":"Writing","_path":"/writing","children":[{"title":"Digital experience platforms: the old versus the new","_path":"/writing/digital-experience-platforms-the-old-versus-the-new"},{"title":"Fast, personalized pages with Vercel Edge Middleware and Uniform","_path":"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform"},{"title":"How to dynamically stream video","_path":"/writing/how-to-dynamically-stream-video"},{"title":"How to get your webcam to look decent in a few simple steps","_path":"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps"},{"title":"How to sniff out the Glue Monster","_path":"/writing/how-to-sniff-out-the-glue-monster"},{"title":"Writing","_path":"/writing"},{"title":"Level up your collaboration game: Developer insights for winning with marketing pros","_path":"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro"},{"title":"MACH versus monolithic suites","_path":"/writing/mach-versus-monolithic-suites"},{"title":"Make the Web Greener, Luxury Edition","_path":"/writing/make-the-web-greener-luxury-edition"},{"title":"My Fitness Story","_path":"/writing/my-fitness-story"},{"title":"New job alert!","_path":"/writing/new-job-alert"},{"title":"The 2015 Paris marathon","_path":"/writing/the-2015-paris-maratho"},{"title":"The content Graph is the future","_path":"/writing/the-content-graph-is-the-future"},{"title":"The future of headless CMS: Content Federation with GraphQL","_path":"/writing/the-future-of-headless-cms-content-federation-with-graphql"},{"title":"The future of jamstack is composable","_path":"/writing/the-future-of-jamstack-is-composable"},{"title":"The future of managing projects at agencies","_path":"/writing/the-future-of-managing-projects-at-agencie"},{"title":"The lost promise of headless","_path":"/writing/the-lost-promise-of-headless"},{"title":"The MACH monolith","_path":"/writing/the-mach-monolith"},{"title":"The move from monolithic to composable architectures","_path":"/writing/the-move-from-monolithic-to-composable-architectures"},{"title":"The real deal about content management buzzwords","_path":"/writing/the-real-deal-about-content-management-buzzword"},{"title":"This is headless 2.0","_path":"/writing/this-is-headless-20"},{"title":"Uniform DXCP: the what, why, and how","_path":"/writing/uniform-dxcp-the-what-why-and-how"},{"title":"Uniform is Nuxt 3 ready","_path":"/writing/uniform-is-nuxt-3-read"},{"title":"What type of content organization do you need?","_path":"/writing/what-type-of-content-organization-do-you-need"},{"title":"Why I didn't run the 2016 marathon","_path":"/writing/why-i-didnt-run-the-2016-marathon"}]},{"title":"Speaking","_path":"/speaking","children":[{"title":"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","_path":"/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6"},{"title":"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","_path":"/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk"},{"title":"2019 04 19 Clifq5gd63xhq0buvufv6nagk","_path":"/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk"},{"title":"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","_path":"/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai"},{"title":"2019 05 25 Clifq5fpd3xt00aw4grnzft29","_path":"/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29"},{"title":"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","_path":"/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k"},{"title":"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","_path":"/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc"},{"title":"2019 09 27 Clifq5eos3xhh0buvewly5gxs","_path":"/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs"},{"title":"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","_path":"/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d"},{"title":"2019 12 17 Clifq5dyh40ij0bw9oquw072b","_path":"/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b"},{"title":"2020 02 18 Clifq5dk940if0bw9ok9achtj","_path":"/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj"},{"title":"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","_path":"/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n"},{"title":"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","_path":"/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1"},{"title":"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","_path":"/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q"},{"title":"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","_path":"/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3"},{"title":"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","_path":"/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp"},{"title":"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","_path":"/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1"},{"title":"2020 06 09 Clifq5bj73xrj0aw42st3pna4","_path":"/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4"},{"title":"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","_path":"/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb"},{"title":"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","_path":"/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2"},{"title":"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","_path":"/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e"},{"title":"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","_path":"/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk"},{"title":"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","_path":"/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm"},{"title":"2020 10 14 Clifq59mp3wgc0bw82qykah6x","_path":"/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x"},{"title":"2020 10 29 Clifq59b83xr60aw45w2sqa1g","_path":"/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g"},{"title":"2020 11 10 Clifq590340gy0bw9onnmgr7y","_path":"/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y"},{"title":"2020 11 11 Clifq58oo40gu0bw9iffiakmh","_path":"/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh"},{"title":"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","_path":"/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s"},{"title":"2020 12 02 Clifq582i3wg80bw8rszss5am","_path":"/speaking/2020-12-02-clifq582i3wg80bw8rszss5am"},{"title":"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","_path":"/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9"},{"title":"2020 12 16 Clifq57c43wg40bw81h7fr291","_path":"/speaking/2020-12-16-clifq57c43wg40bw81h7fr291"},{"title":"2020 12 18 Clifq571z40gq0bw9b62wbowr","_path":"/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr"},{"title":"2021 01 12 Clifq56q43xgk0buv4hu04quz","_path":"/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz"},{"title":"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","_path":"/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s"},{"title":"2021 02 02 Clifq56623xqt0aw44sbds5cn","_path":"/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn"},{"title":"2021 02 22 Clifq55tf40gk0bw9vofea3yp","_path":"/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp"},{"title":"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","_path":"/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1"},{"title":"2021 03 24 Clifq559p3xgf0buvzch9im3l","_path":"/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l"},{"title":"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","_path":"/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk"},{"title":"2021 04 20 Clifq54na3xgb0buvrvmbamxf","_path":"/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf"},{"title":"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","_path":"/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw"},{"title":"2021 07 27 Clifq542s3xg60buvdk199xtq","_path":"/speaking/2021-07-27-clifq542s3xg60buvdk199xtq"},{"title":"2021 09 07 Clifq53so3wfq0bw81xni3t7x","_path":"/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x"},{"title":"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","_path":"/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu"},{"title":"2021 11 10 Clifq536v3xg20buvlz1n7ddw","_path":"/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw"},{"title":"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","_path":"/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x"},{"title":"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","_path":"/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey"},{"title":"2021 12 14 Clifq528940gb0bw9bok0o68k","_path":"/speaking/2021-12-14-clifq528940gb0bw9bok0o68k"},{"title":"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","_path":"/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9"},{"title":"2022 02 08 Clifq51j53wez0bw8cd1znjmi","_path":"/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi"},{"title":"2022 02 10 Clifq515940g70bw9yu0ltedp","_path":"/speaking/2022-02-10-clifq515940g70bw9yu0ltedp"},{"title":"2022 03 01 Clifq50sj40g30bw9rqy825mb","_path":"/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb"},{"title":"2022 03 02 Clifq50g53xfr0buv56km2voa","_path":"/speaking/2022-03-02-clifq50g53xfr0buv56km2voa"},{"title":"2022 05 26 Clifq506e3wev0bw88q2lf63q","_path":"/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q"},{"title":"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","_path":"/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u"},{"title":"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","_path":"/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9"},{"title":"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","_path":"/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y"},{"title":"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","_path":"/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl"},{"title":"2022 07 27 Clifq4yep3xf20buv5vorwrl5","_path":"/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5"},{"title":"2022 08 10 Clifq4xw640fr0bw9po5n2nug","_path":"/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug"},{"title":"2022 08 11 Clifq4xdz3wek0bw862z7knrr","_path":"/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr"},{"title":"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","_path":"/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy"},{"title":"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","_path":"/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70"},{"title":"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","_path":"/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb"},{"title":"2022 10 14 Clifq4w263xet0buv0mzqzfre","_path":"/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre"},{"title":"2022 11 02 Clifq4vps3xep0buvimxfntyq","_path":"/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq"},{"title":"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","_path":"/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4"},{"title":"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","_path":"/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj"},{"title":"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","_path":"/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr"},{"title":"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","_path":"/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh"},{"title":"2023 05 12 Clifq4tw33we40bw8jxhaaroo","_path":"/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo"},{"title":"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","_path":"/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm"},{"title":"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","_path":"/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq"},{"title":"2023 07 27 Clifq4sto3xph0aw4letve613","_path":"/speaking/2023-07-27-clifq4sto3xph0aw4letve613"},{"title":"2024 02 29 Clkzot86xire30aujuy08465e","_path":"/speaking/2024-02-29-clkzot86xire30aujuy08465e"},{"title":"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","_path":"/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t"},{"title":"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","_path":"/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v"},{"title":"Speaking","_path":"/speaking"}]},{"title":"live streams","_path":"/livestreams"},{"title":"Press kit","_path":"/presskit"},{"title":"Alive and kicking","_path":"/alive-and-kicking"}] \ No newline at end of file diff --git a/api/_content/query/1enZAB3sRt.1718484357766.json b/api/_content/query/1enZAB3sRt.1718484357766.json deleted file mode 100644 index bb159fc4..00000000 --- a/api/_content/query/1enZAB3sRt.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/new-job-alert","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"New job alert!","description":"After an exciting journey at Uniform, it's time for a new adventure. At Uniform, we thrived during...","id":1569148,"slug":"new-job-alert","date":"2023-08-16T13:42:10Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadfg5ciysfamka395zir.png","canonical_url":"https://dev.to/timbenniks/new-job-alert-443n","tags":["career","webdev","devrel"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After an exciting journey at "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"]},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":", it's time for a new adventure."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At Uniform, we thrived during the pandemic, hiring the best talent remotely and finding success in a new product category. I not only learnt a lot but also created value towards company perception and trust along the way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Inspired by the startup life, I wanted a new challenge at a company further along their journey. "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"]},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" caught my attention with its product-led growth, open source SDKs, solid product-market fit, and strong fit for developer relations."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I'm excited to join Hygraph as the Developer Relations Lead for Outreach and Awareness. With 15 years of agency experience, deep knowledge of the developer space, and connections within the MACH alliance, I'm confident in bringing my skills to this product-led growth company."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Working alongside experienced professionals like "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/bryanlrobinson/","rel":["nofollow"]},"children":[{"type":"text","value":"Bryan Robinson"}]},{"type":"text","value":" (Orbit, Algolia, Sanity) and "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/lowisren/","rel":["nofollow"]},"children":[{"type":"text","value":"Lo Etheridge"}]},{"type":"text","value":" (Sanity, and many other dev gigs), I'll be part of Hygraph's developer relations team within the larger marketing organization led by "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/omergokcetumer/","rel":["nofollow"]},"children":[{"type":"text","value":"Omer Gokce Tumer"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph is at the forefront of the composability and content federation space. They provide a solution to the challenges faced by scaled headless architectures, bringing stability and flexibility. Companies like Netlify, Conscia, and Octoo have embraced Hygraph's approach to content federation, validating the category."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you're seeking content federation at scale, Hygraph has a remarkable head start and addresses the current code-first problems in the MACH architecture space."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I'm eager to get started and can't wait for what lies ahead. See you soon!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Cheers,\nTim"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:new-job-alert.md","_source":"content","_file":"4.writing/new-job-alert.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/4iQohvzBYE.1718484357766.json b/api/_content/query/4iQohvzBYE.1718484357766.json deleted file mode 100644 index 72b6fd8f..00000000 --- a/api/_content/query/4iQohvzBYE.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/about","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"About","description":"About meta","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"About Tim"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"eager","sizes":"sm:100vw","src":"/tim_augmented.png","width":1440,"quality":"100","format":"webp"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"My name is Tim Benniks. I'm a Dutchman living in France where I work remotely from a farm in the countryside. I'm the Developer Relations Lead for Outreach and Awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Before I joined "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" I worked for "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"],"title":"https://uniform.dev"},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":" as director of developer relations and I spend about 15 years at agencies building websites for huge brands. I was global front-end director at "},{"type":"element","tag":"a","props":{"href":"https://valtech.com","rel":["nofollow"],"title":"https://valtech.com"},"children":[{"type":"text","value":"Valtech"}]},{"type":"text","value":" Principal front-end developer at "},{"type":"element","tag":"a","props":{"href":"https://akqa.com","rel":["nofollow"],"title":"https://akqa.com"},"children":[{"type":"text","value":"AKQA"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In 2020 I forged a new career path for myself by re-exploring my creativity. I’ve been a lifelong musician and since we moved countries many years ago, I didn’t play much. The agency life was resting heavy on my shoulders and I missed sharing with my community and being creative."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I jumped right in and decided to make a new YouTube video each week and to start speaking at conferences once a month. This creative path changed my life. I learnt a lot from the developer community and I started to make a name for myself."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The outcome of a year if creative work was a job at a start up where I led developer relations. Fast forward a few years and I'm now on solid ground in the start up world continuing with roles in developer relations like the one I landed at Hygraph in 2023."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:media":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":2103,"loading":"lazy","sizes":"sm:100vw md:40vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718362826/Tim/tim-talk.png","width":1920,"provider":"cloudinary"},"children":[]}]}]}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/Tim/Tim%20On%20Stage.jpg","width":1440,"provider":"cloudinary","quality":"100","fit":"thumbnail"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Content creation"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I love to explore my creativity by making videos, live streams and speaking. Now that virtual conferences are a thing I have specialised in making entertaining, high production value talks that I pre-record."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On my "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"YouTube"}]},{"type":"text","value":" channel I explore web development related topics but I also conduct interviews and I try out services with live commentary."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Making all these videos is lot's of work. If you like what you see, feel free to subscribe or even "},{"type":"element","tag":"a","props":{"href":"https://buymeacoff.ee/timbenniks","rel":["nofollow"],"title":"https://buymeacoff.ee/timbenniks"},"children":[{"type":"text","value":"sponsor"}]},{"type":"text","value":" me."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"talks","props":{":limit":"2",":small":"true"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Latest talks"}]}]}]}]}]},{"type":"element","tag":"videos","props":{":limit":"3",":small":"false","folder":"hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Latest Hygraph Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:2.about.md","_source":"content","_file":"2.about.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/4iQohvzBYE.1718484799542.json b/api/_content/query/4iQohvzBYE.1718484799542.json new file mode 100644 index 00000000..0457979d --- /dev/null +++ b/api/_content/query/4iQohvzBYE.1718484799542.json @@ -0,0 +1 @@ +{"_path":"/about","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"About Tim","description":"I love building fancy websites, creating content, and speaking at conferences!","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"About Tim"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"eager","sizes":"sm:100vw","src":"/tim_augmented.png","width":1440,"quality":"100","format":"webp"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"My name is Tim Benniks. I'm a Dutchman living in France where I work remotely from a farm in the countryside. I'm the Developer Relations Lead for Outreach and Awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Before I joined "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" I worked for "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"],"title":"https://uniform.dev"},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":" as director of developer relations and I spend about 15 years at agencies building websites for huge brands. I was global front-end director at "},{"type":"element","tag":"a","props":{"href":"https://valtech.com","rel":["nofollow"],"title":"https://valtech.com"},"children":[{"type":"text","value":"Valtech"}]},{"type":"text","value":" Principal front-end developer at "},{"type":"element","tag":"a","props":{"href":"https://akqa.com","rel":["nofollow"],"title":"https://akqa.com"},"children":[{"type":"text","value":"AKQA"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In 2020 I forged a new career path for myself by re-exploring my creativity. I’ve been a lifelong musician and since we moved countries many years ago, I didn’t play much. The agency life was resting heavy on my shoulders and I missed sharing with my community and being creative."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I jumped right in and decided to make a new YouTube video each week and to start speaking at conferences once a month. This creative path changed my life. I learnt a lot from the developer community and I started to make a name for myself."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The outcome of a year if creative work was a job at a start up where I led developer relations. Fast forward a few years and I'm now on solid ground in the start up world continuing with roles in developer relations like the one I landed at Hygraph in 2023."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:media":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":2103,"loading":"lazy","sizes":"sm:100vw md:40vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718362826/Tim/tim-talk.png","width":1920,"provider":"cloudinary"},"children":[]}]}]}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/Tim/Tim%20On%20Stage.jpg","width":1440,"provider":"cloudinary","quality":"100","fit":"thumbnail"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Content creation"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I love to explore my creativity by making videos, live streams and speaking. Now that virtual conferences are a thing I have specialised in making entertaining, high production value talks that I pre-record."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On my "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"YouTube"}]},{"type":"text","value":" channel I explore web development related topics but I also conduct interviews and I try out services with live commentary."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Making all these videos is lot's of work. If you like what you see, feel free to subscribe or even "},{"type":"element","tag":"a","props":{"href":"https://buymeacoff.ee/timbenniks","rel":["nofollow"],"title":"https://buymeacoff.ee/timbenniks"},"children":[{"type":"text","value":"sponsor"}]},{"type":"text","value":" me."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"talks","props":{":limit":"2",":small":"true"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Latest talks"}]}]}]}]}]},{"type":"element","tag":"videos","props":{":limit":"3",":small":"false","folder":"hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Latest Hygraph Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:2.about.md","_source":"content","_file":"2.about.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/4vHG1SaMdN.1718484357766.json b/api/_content/query/4vHG1SaMdN.1718484357766.json deleted file mode 100644 index 5b686b93..00000000 --- a/api/_content/query/4vHG1SaMdN.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/the-move-from-monolithic-to-composable-architectures","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The move from monolithic to composable architectures","description":"Success in business can be attributed to many factors, notably team talent and efficacy of products...","id":1399554,"slug":"the-move-from-monolithic-to-composable-architectures","date":"2023-03-13T20:42:55Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56u97go8avwyexrr01nx.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/composable-architectures-are-the-future-of-the-digital-sphere","tags":["mach","webdev","composable","monolith"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Success in business can be attributed to many factors, notably team talent and efficacy of products or services. What also counts in this digital age are immersive and performant online experiences. Realistically, delivering engaging experiences is a never-ending undertaking. To avoid lagging behind rivals, brands must do that time and again in all their interactions with consumers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can you adapt and iterate as rapidly as necessary? Can you quickly respond to current trends and launch digital experiences without tech support? When it comes to digital capabilities and speed to market, technology makes all the difference. This post explains why the industry is moving from monolithic to composable architectures and how those two architectures can actually work together."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##What are monolithic applications?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Built as a single unit, monolithic applications (aka monolithic architectures) are all-in-one, self-contained suites with robust features. Known as legacy systems, monolithic applications occupy a long-standing place in today’s makeup of businesses as the easy way to acquire digital capabilities. You go through one purchase for all your business needs and sign a contract with one solution provider, who would make it all happen and support you along the way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Such a mono approach might not be the best for the long haul, however. In a free-market economy, monopolies are generally frowned upon because of the guardrails put up by those dominant players, who would enforce rules and regulations to stifle or eliminate competition altogether. What’s more, monopolies have no incentives for innovation or improvements in efficiency."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That’s not a direct comparison to monolithic solutions in tech per se since competition does exist among tech solution providers. Rather, a brief assessment of monopolies is helpful context for why stand-alone architectures aren't ideal for businesses. If one vendor has all the say about the ways your tech stack is used and adapted, you are limited in many ways."}]},{"type":"element","tag":"h2","props":{"id":"why-are-monolithic-applications-not-the-way-forward"},"children":[{"type":"text","value":"Why are monolithic applications not the way forward?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A pro-con analysis shows real—or at least perceived—benefits in relying on a monolithic architecture for your tech stack. If your IT team is well versed in the vendor along with its code and operating system, an established ease of use exists. Furthermore, it feels simple to keep and manage everything in one place and to have, theoretically, one source of truth, with all the tools housed together under the purview of one provider. Not to mention that you have one all-knowing point of contact or support team to call on in case of issues."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nonetheless, given the future of business and the digital experiences consumers demand, the cons of monolithic applications far outweigh the pros in three key areas:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Customization"}]},{"type":"text","value":". Limited is the ability to tailor monolithic applications to meet business needs. Also, even though those applications offer wide-reaching features, you might not ever use some of the features. And you’re at the whims of the monolith’s technology roadmap for innovation. For example, something you need to meet customer needs might not be available until the application’s next software update, potentially months away. In addition, in contrast to today’s fast market changes, upgrades can be time-consuming and slow with a need for developers to make changes or adaptations. With those modifications come complexities, third-party add-ons, or new applications that developers must painstakingly build themselves."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Agility"}]},{"type":"text","value":". Trends change and new opportunities emerge more rapidly than monolithic applications can keep up. Adaptability becomes a struggle, especially if you’re locked into the suite on contract."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Scalability"}]},{"type":"text","value":". Businesses that aspire to be fast-moving and competitive are hindered by monolithic technologies that are difficult to scale. Accordingly, growth is hampered because of the slow and heavy lift for developers to morph one monolithic architecture into an all-things-for-all-people stack."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another hurdle businesses face is adapting a monolithic application to be composable or as a “"},{"type":"element","tag":"a","props":{"href":"https://dev.to/timbenniks/the-mach-monolith-2knd","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":".” Rather than replatforming or ditching an established monolithic architecture to build a new microservices-centric one, brands apply API-first and composable solutions to an existing framework by integrating a host of composable products. Doing so could seriously muddy the waters, however, creating a beast of an architecture that’s not composable, sustainable, or agile."}]},{"type":"element","tag":"h2","props":{"id":"how-can-monoliths-and-composable-work-together"},"children":[{"type":"text","value":"How can monoliths and composable work together?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Legacy monolithic architectures can, in fact, work with composable applications through digital experience composition platform (DXCP), which acts as composable’s opinionless foundation by doing the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offer the prebuilt system integrations and tools business users need, lightening the burden of innovation through new features."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enable teams to merge their legacy platform with a composable approach, orchestrating best-of-need tools and offering a user-friendly interface for developers and practitioners alike."}]}]},{"type":"element","tag":"h2","props":{"id":"how-does-dxcp-help-make-composable-mainstream"},"children":[{"type":"text","value":"How does DXCP help make composable mainstream?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Without doubt, monolithic architectures are no longer ideal for brands that are focused on creating digital experiences that drive impact and conversions. Composable architectures give control of the experience-creation process to the brands responsible for the end results, instead of one tech vendor."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Despite the promise of future-ready composable stacks, building them can be a slow and expensive process, with weeks of custom glue code needed to integrate the multiple services. They are often also incredibly frustrating for marketing teams, content writers, graphic designers, and other business users, as previously simple tasks require multiple tools and developer support."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is where DXCP and companies like Uniform enter the picture. With rapid integration tools that dramatically speed system build and maintenance and powerful no-code interfaces for marketers and other business users to create engrossing experiences in a single, integrated environment using every tool they need."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-are-monolithic-applications-not-the-way-forward","depth":2,"text":"Why are monolithic applications not the way forward?"},{"id":"how-can-monoliths-and-composable-work-together","depth":2,"text":"How can monoliths and composable work together?"},{"id":"how-does-dxcp-help-make-composable-mainstream","depth":2,"text":"How does DXCP help make composable mainstream?"}]}},"_type":"markdown","_id":"content:4.writing:the-move-from-monolithic-to-composable-architectures.md","_source":"content","_file":"4.writing/the-move-from-monolithic-to-composable-architectures.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/5DuJ7iucB1.1718484357766.json b/api/_content/query/5DuJ7iucB1.1718484357766.json deleted file mode 100644 index a04ab944..00000000 --- a/api/_content/query/5DuJ7iucB1.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -[{"_path":"/writing/the-content-graph-is-the-future","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The content Graph is the future","description":"Content management is as essential as it is complex, especially at scale. As brands grow, they often...","id":1683758,"slug":"the-content-graph-is-the-future","date":"2023-12-05T10:40:00Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ilcbgm74yygk14s4g7.png","canonical_url":"https://hygraph.com/blog/the-content-graph-is-the-future","tags":[],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph."}]},{"type":"element","tag":"h2","props":{"id":"the-emergence-of-new-buzzwords-best-of-breed-and-composable"},"children":[{"type":"text","value":"The emergence of new buzzwords: best-of-breed and composable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you want to learn more details about industry buzzwords, check out this "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords","rel":["nofollow"]},"children":[{"type":"text","value":"blog post"}]},{"type":"text","value":"."}]}]},{"type":"element","tag":"h2","props":{"id":"its-not-all-sunshine-and-rainbows"},"children":[{"type":"text","value":"It’s not all sunshine and rainbows"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Composable challenges","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgy63rwzc7dm5mnmk9wl.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"introducing-the-content-graph"},"children":[{"type":"text","value":"Introducing the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"The Contwnt Graph","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qngsih12lys9s6yww0j.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-benefits"},"children":[{"type":"text","value":"The benefits"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use these one-liners when you talk about this subject to your boss."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"With the content graph, you query only what you need from any source and in the same unified way."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple."}]}]},{"type":"element","tag":"h2","props":{"id":"challenges-and-considerations"},"children":[{"type":"text","value":"Challenges and considerations"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph."}]},{"type":"element","tag":"h2","props":{"id":"the-tech-behind-the-content-graph"},"children":[{"type":"text","value":"The tech behind the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it."}]},{"type":"element","tag":"h2","props":{"id":"a-real-life-use-case-for-the-content-graph"},"children":[{"type":"text","value":"A real-life use case for the content graph"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-emergence-of-new-buzzwords-best-of-breed-and-composable","depth":2,"text":"The emergence of new buzzwords: best-of-breed and composable"},{"id":"its-not-all-sunshine-and-rainbows","depth":2,"text":"It’s not all sunshine and rainbows"},{"id":"introducing-the-content-graph","depth":2,"text":"Introducing the content graph"},{"id":"the-benefits","depth":2,"text":"The benefits"},{"id":"challenges-and-considerations","depth":2,"text":"Challenges and considerations"},{"id":"the-tech-behind-the-content-graph","depth":2,"text":"The tech behind the content graph"},{"id":"a-real-life-use-case-for-the-content-graph","depth":2,"text":"A real-life use case for the content graph"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:the-content-graph-is-the-future.md","_source":"content","_file":"4.writing/the-content-graph-is-the-future.md","_extension":"md"},{"_path":"/writing/what-type-of-content-organization-do-you-need","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"What type of content organization do you need?","description":"Different ways of working require different approaches to content design. In this post, I will...","id":1664371,"slug":"what-type-of-content-organization-do-you-need","date":"2023-11-12T09:03:33Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd58lvz3nrm8lre4gdtuw.png","canonical_url":"https://hygraph.com/blog/what-type-of-content-organization-do-you-need","tags":[],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Centralized / Decentralized","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xioylw3zkxljytzhwtft.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly."}]},{"type":"element","tag":"h2","props":{"id":"how-to-organize-your-content-without-going-crazy"},"children":[{"type":"text","value":"How to organize your content without going crazy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your content flows between different systems, federation is one of the most effective ways to manage it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements."}]},{"type":"element","tag":"h2","props":{"id":"forms-of-federation"},"children":[{"type":"text","value":"Forms of federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns."}]},{"type":"element","tag":"h3","props":{"id":"data-stitching-and-custom-middleware"},"children":[{"type":"text","value":"Data stitching and custom middleware"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data stitching","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iacwgoeaolz9znalbc56.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"content-hub"},"children":[{"type":"text","value":"Content Hub"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Content Hub","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc8fp49qbswr93cg5r62.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"data-lake"},"children":[{"type":"text","value":"Data Lake"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data lake","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u388o0c1oy5p0m31afl0.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"content-federation"},"children":[{"type":"text","value":"Content Federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Content Federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wsbl6uzmoscfxq31yrv.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"dxo-digital-experience-orchestration"},"children":[{"type":"text","value":"DXO (digital experience orchestration)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"DXO","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfrsz1i6hjq68mbsmrui.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"graphql-federation"},"children":[{"type":"text","value":"GraphQL Federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"GraphQL Federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rtx6y1lqmon1nhe6c4t0.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"which-federation-is-for-you"},"children":[{"type":"text","value":"Which federation is for you?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions."}]},{"type":"element","tag":"h3","props":{"id":"what-is-your-digital-organization-direction-centralized-or-decentralized"},"children":[{"type":"text","value":"What is your digital organization direction: centralized or decentralized?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Federation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Hub"}]}]},{"type":"element","tag":"h3","props":{"id":"how-much-cleanup-does-your-data-need"},"children":[{"type":"text","value":"How much cleanup does your data need?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: DXO, Content Federation"}]}]},{"type":"element","tag":"h3","props":{"id":"how-autonomous-do-your-data-sources-need-to-be"},"children":[{"type":"text","value":"How autonomous do your data sources need to be?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"autonomy"}]},{"type":"text","value":" to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Federation"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Hub"}]}]},{"type":"element","tag":"h3","props":{"id":"are-you-dealing-with-big-data"},"children":[{"type":"text","value":"Are you dealing with big data?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: Content Lake"}]}]},{"type":"element","tag":"h3","props":{"id":"are-you-a-saas-with-multiple-tech-silos"},"children":[{"type":"text","value":"Are you a SaaS with multiple tech silos?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Federation type to choose: GraphQL Federation"}]}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As always, the answer is: \"It depends\". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"how-to-organize-your-content-without-going-crazy","depth":2,"text":"How to organize your content without going crazy"},{"id":"forms-of-federation","depth":2,"text":"Forms of federation","children":[{"id":"data-stitching-and-custom-middleware","depth":3,"text":"Data stitching and custom middleware"},{"id":"content-hub","depth":3,"text":"Content Hub"},{"id":"data-lake","depth":3,"text":"Data Lake"},{"id":"content-federation","depth":3,"text":"Content Federation"},{"id":"dxo-digital-experience-orchestration","depth":3,"text":"DXO (digital experience orchestration)"},{"id":"graphql-federation","depth":3,"text":"GraphQL Federation"}]},{"id":"which-federation-is-for-you","depth":2,"text":"Which federation is for you?","children":[{"id":"what-is-your-digital-organization-direction-centralized-or-decentralized","depth":3,"text":"What is your digital organization direction: centralized or decentralized?"},{"id":"how-much-cleanup-does-your-data-need","depth":3,"text":"How much cleanup does your data need?"},{"id":"how-autonomous-do-your-data-sources-need-to-be","depth":3,"text":"How autonomous do your data sources need to be?"},{"id":"are-you-dealing-with-big-data","depth":3,"text":"Are you dealing with big data?"},{"id":"are-you-a-saas-with-multiple-tech-silos","depth":3,"text":"Are you a SaaS with multiple tech silos?"}]},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:what-type-of-content-organization-do-you-need.md","_source":"content","_file":"4.writing/what-type-of-content-organization-do-you-need.md","_extension":"md"},{"_path":"/writing/the-real-deal-about-content-management-buzzword","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The real deal about content management buzzwords","description":"Buzzwords are labels that describe tech approaches that become so commonplace over time that the...","id":1614626,"slug":"the-real-deal-about-content-management-buzzword","date":"2023-09-28T14:43:37Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr5frm3ra3q3liidcpev.jpg","canonical_url":"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords","tags":["buzzwords","dxp","composable","cms"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Do you like watching more than reading? Watch this "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=EXzp3OkQTXk","rel":["nofollow"]},"children":[{"type":"text","value":"YouTube video"}]},{"type":"text","value":" instead."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"{% embed "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=EXzp3OkQTXk","rel":["nofollow"]},"children":[{"type":"text","value":"https://www.youtube.com/watch?v=EXzp3OkQTXk"}]},{"type":"text","value":" %}"}]},{"type":"element","tag":"h2","props":{"id":"mach"},"children":[{"type":"text","value":"MACH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/mach-architecture","rel":["nofollow"]},"children":[{"type":"text","value":"MACH architecture"}]},{"type":"text","value":" comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Microservices"}]},{"type":"text","value":" are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"API-first"}]},{"type":"text","value":" means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Cloud-native"}]},{"type":"text","value":" means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Headless"}]},{"type":"text","value":" means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"mach","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/jZfjXdJMSGTG1gLrwGQQ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"composable"},"children":[{"type":"text","value":"Composable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/composable-architecture","rel":["nofollow"]},"children":[{"type":"text","value":"Composable architecture"}]},{"type":"text","value":" refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first \"A\" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"composable","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/D2oCAxwTpuhKfZ5xwEB0","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxp-digital-experience-platform"},"children":[{"type":"text","value":"DXP (Digital Experience Platform)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/what-is-a-dxp","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience platform (DXP)"}]},{"type":"text","value":" is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxp","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/rIUS6taoQJ2pcvTDA2YZ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxc-digital-experience-composition"},"children":[{"type":"text","value":"DXC (Digital Experience Composition)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"Digital experience composition"}]},{"type":"text","value":" refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxc","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/irNrx7isRUKaZ0QoDnzQ","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"dxo-digital-experience-orchestration"},"children":[{"type":"text","value":"DXO (Digital Experience Orchestration)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"dxo","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/WgGDwsNLTTa4wAoL7WVd","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"why-you-dont-have-to-care-about-the-buzzwords"},"children":[{"type":"text","value":"Why you don’t have to care about the buzzwords"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Ultimately, it is up to "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"you"}]},{"type":"text","value":" to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before."}]},{"type":"element","tag":"h3","props":{"id":"company-maturity"},"children":[{"type":"text","value":"Company maturity"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, as companies mature, they may struggle with the "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/blog/monolithic-cms-limitations","rel":["nofollow"]},"children":[{"type":"text","value":"limitations of these monoliths"}]},{"type":"text","value":". Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry."}]},{"type":"element","tag":"h3","props":{"id":"connecting-it-all"},"children":[{"type":"text","value":"Connecting it all"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture."}]},{"type":"element","tag":"h3","props":{"id":"content-federation"},"children":[{"type":"text","value":"Content federation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid a "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":" or "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/watch?v=so7-c2bOXpA","rel":["nofollow"]},"children":[{"type":"text","value":"MACHlash"}]},{"type":"text","value":", you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"content federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/fbNw1hhTSHykSwk19ggJ","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information."}]},{"type":"element","tag":"h3","props":{"id":"after-content-federation-is-in-place"},"children":[{"type":"text","value":"After Content federation is in place"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"after content federation","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/4xZbpHRgTI2CzXQ88GG7","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"concluding"},"children":[{"type":"text","value":"Concluding"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mach","depth":2,"text":"MACH"},{"id":"composable","depth":2,"text":"Composable"},{"id":"dxp-digital-experience-platform","depth":2,"text":"DXP (Digital Experience Platform)"},{"id":"dxc-digital-experience-composition","depth":2,"text":"DXC (Digital Experience Composition)"},{"id":"dxo-digital-experience-orchestration","depth":2,"text":"DXO (Digital Experience Orchestration)"},{"id":"why-you-dont-have-to-care-about-the-buzzwords","depth":2,"text":"Why you don’t have to care about the buzzwords","children":[{"id":"company-maturity","depth":3,"text":"Company maturity"},{"id":"connecting-it-all","depth":3,"text":"Connecting it all"},{"id":"content-federation","depth":3,"text":"Content federation"},{"id":"after-content-federation-is-in-place","depth":3,"text":"After Content federation is in place"}]},{"id":"concluding","depth":2,"text":"Concluding"}]}},"_type":"markdown","_id":"content:4.writing:the-real-deal-about-content-management-buzzword.md","_source":"content","_file":"4.writing/the-real-deal-about-content-management-buzzword.md","_extension":"md"},{"_path":"/writing/the-future-of-headless-cms-content-federation-with-graphql","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of headless CMS: Content Federation with GraphQL","description":"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing...","id":1614623,"slug":"the-future-of-headless-cms-content-federation-with-graphql","date":"2023-09-28T14:39:16Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pk8b2ihfddxqlt3w4tu.jpg","canonical_url":"https://hygraph.com/blog/content-federation-with-graphql","tags":["headless","cms","graphql","federation"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing amount of fragmentation in tooling, it offers a way to decouple data and systems, giving organizations more flexibility and agility."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Despite the promise of headless architecture, data, and systems easily become tightly coupled. Whether through custom middleware or frontend stitching, one system can have ripple effects on all others. This can make it difficult to manage and update content and causes technical debt. In the past, I called this the"},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/","rel":["nofollow"]},"children":[{"type":"text","value":" MACH Monolith"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A federated architecture, on the other hand, truly decouples data and systems. Federation is a technique of using autonomous systems to work with the data and logic they’re best suited for. What differentiates that from the MACH Monolith is how the data comes back together. Federation takes these autonomous services and crafts a unified, standardized, and powerful API for use in any application."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While there are many patterns for accomplishing federation, one architecture is Content Federation. Content federation is the process of bringing together content from multiple sources into a single, unified view that can be accessed both at the API layer, as well as at the editor level."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In a federated architecture, the content federation layer brings together content from the different systems. This layer acts as a single point of access for data, making it easy for users to get the content they need, regardless of where it is stored."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A few benefits of a federated architecture include:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increased flexibility and agility: Each system is responsible for its data and logic, which gives them more autonomy and flexibility. This makes it easier to manage and update systems and makes it easier to add new systems to the architecture."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Improved security: A federated architecture can reduce the attack surface. When data and systems are tightly coupled, a vulnerability in one system can compromise other systems. A federated architecture reduces the risk of this happening by decoupling data and systems."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reduced complexity: A federated architecture can simplify how data is managed. In a traditional architecture, data is often stored in multiple systems, making it difficult to keep track of. A federated architecture brings together data from different systems into a single, unified view, which makes it easier to manage, inspect, and use data. The implementation layer has one standardized, unified way to ask for the content."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Overall, a federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Federated Content Platform","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/4wC9B4MBSaZDeQvB26QA","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-importance-of-autonomy-in-a-federated-architecture"},"children":[{"type":"text","value":"The importance of autonomy in a federated architecture"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While most federation articles focus on the benefits of unification, system autonomy is really the key benefit. This autonomy means that systems can be developed and managed independently without worrying about the other systems in the architecture. This can be a major advantage, as it allows organizations to be more agile and responsive to change while still maintaining standards."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This enforced autonomy increases the reach of standardization. In an e-commerce application, product information — pricing, description, categorization — should be standardized wherever it’s used. Without Content Federation, the product data would be re-entered in the systems that don’t house it. When an editor of the blog goes to create a post about a product, they introduce the human potential for error. If they merely select a product from the e-commerce system, they can rely on the owners of that data to keep their data standardized."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When the standards for a particular piece of data changes, the data is changed in the home system, and each other system is ready to receive that change. No additional work necessary."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security. Federation brings autonomy to the data layer while also giving rise to a unification layer Content Federation brings a deeper sense of standardization through systemic change instead of human change. Without autonomy, we have complexity; without unification and standardization, we have glue code. We need both in the modern stack."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-importance-of-autonomy-in-a-federated-architecture","depth":2,"text":"The importance of autonomy in a federated architecture"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-headless-cms-content-federation-with-graphql.md","_source":"content","_file":"4.writing/the-future-of-headless-cms-content-federation-with-graphql.md","_extension":"md"},{"_path":"/writing/new-job-alert","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"New job alert!","description":"After an exciting journey at Uniform, it's time for a new adventure. At Uniform, we thrived during...","id":1569148,"slug":"new-job-alert","date":"2023-08-16T13:42:10Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadfg5ciysfamka395zir.png","canonical_url":"https://dev.to/timbenniks/new-job-alert-443n","tags":["career","webdev","devrel"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After an exciting journey at "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"]},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":", it's time for a new adventure."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At Uniform, we thrived during the pandemic, hiring the best talent remotely and finding success in a new product category. I not only learnt a lot but also created value towards company perception and trust along the way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Inspired by the startup life, I wanted a new challenge at a company further along their journey. "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"]},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" caught my attention with its product-led growth, open source SDKs, solid product-market fit, and strong fit for developer relations."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I'm excited to join Hygraph as the Developer Relations Lead for Outreach and Awareness. With 15 years of agency experience, deep knowledge of the developer space, and connections within the MACH alliance, I'm confident in bringing my skills to this product-led growth company."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Working alongside experienced professionals like "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/bryanlrobinson/","rel":["nofollow"]},"children":[{"type":"text","value":"Bryan Robinson"}]},{"type":"text","value":" (Orbit, Algolia, Sanity) and "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/lowisren/","rel":["nofollow"]},"children":[{"type":"text","value":"Lo Etheridge"}]},{"type":"text","value":" (Sanity, and many other dev gigs), I'll be part of Hygraph's developer relations team within the larger marketing organization led by "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/in/omergokcetumer/","rel":["nofollow"]},"children":[{"type":"text","value":"Omer Gokce Tumer"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph is at the forefront of the composability and content federation space. They provide a solution to the challenges faced by scaled headless architectures, bringing stability and flexibility. Companies like Netlify, Conscia, and Octoo have embraced Hygraph's approach to content federation, validating the category."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you're seeking content federation at scale, Hygraph has a remarkable head start and addresses the current code-first problems in the MACH architecture space."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I'm eager to get started and can't wait for what lies ahead. See you soon!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Cheers,\nTim"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:new-job-alert.md","_source":"content","_file":"4.writing/new-job-alert.md","_extension":"md"},{"_path":"/writing/this-is-headless-20","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"This is headless 2.0","description":"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about...","id":1533031,"slug":"this-is-headless-20","date":"2023-07-11T07:48:19Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4ykeb6acv0q288ygpaj.png","canonical_url":"https://www.linkedin.com/pulse/headless-20-tim-benniks/","tags":["webdev","mach","headless","architecture"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about the "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":" before. Here, I’ll describe how to avoid ending up in a codebase full of technical debt, aka glue code—chores that overburden and frustrate developers."}]},{"type":"element","tag":"h3","props":{"id":"the-why"},"children":[{"type":"text","value":"The why"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Headless technology has gained prominence in web development, offering benefits like higher performance, front-end freedom, DX features, and management through APIs—a thrill for techies. However, at scale, complexities arise due to an endless need for glue code for connecting content sources, let alone authoring issues caused by disconnects between content editors and front-end presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In particular, separation of content authoring and presentation results in a steep learning curve for content editors, who would need help to preview their work and ensure a correct display. But how do you preview content that connects to multiple sources, all offering some form of preview capability? As a fix, people do either of the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Connect to the sources via CMS plugins and add data-modeling capabilities for page layouts unrelated to core CMS functionalities. For more details, read my article on the "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":". "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hard-code all the connections in the front end, forcing content editors to file IT tickets for updates."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For web projects to succeed, since developers, marketers, and content editors boast "},{"type":"element","tag":"a","props":{"href":"https://dev.to/timbenniks/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pros-17k","rel":["nofollow"]},"children":[{"type":"text","value":"different strengths"}]},{"type":"text","value":", teams must be able to collaborate harmoniously and seamlessly. For all that headless promises freedom and excellent developer experience, it pushes the pain threshold of marketers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Connecting lots of services creates glue code and technical debt.","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7a0lii31280n03qva7v.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connecting lots of services creates glue code and technical debt."}]},{"type":"element","tag":"h3","props":{"id":"the-how"},"children":[{"type":"text","value":"The how"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Two things are paramount as a fix:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple, easy-to-maintain front-end codebases that contain minimal glue code and technical debt. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Elimination of the need for content editors to tackle the abstractness of a composable architecture populated by a plethora of different tools. Content editors need a visual-editing capability across headless sources to ensure the display is exactly what they desire without giving up on a solid technical architecture."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In other words, content editors need a page-composition process similar in concept to that of GraphQL, i.e., one that returns only the needed properties and content of all page components. All the editors need to do is add the component props with data from external sources—with no need to know the data’s origin. The result is curated, page-specific JSON output that can be consumed by the front end, which need not connect to external data sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually.","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fu1m8gqp9r20nq7fx7dy.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What emerges is a transparent and simple platform on which to compose pages based on design components, whose props point to a field in an external API endpoint. That platform would "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" be a CMS or data-federation tool. All it needs to know is which component points to which data source for a specific page composition."}]},{"type":"element","tag":"h3","props":{"id":"a-visual-workspace"},"children":[{"type":"text","value":"A visual workspace"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Therefore, the job of the platform, which represents all the design components with linked data sources (CMS, PIM, DAM), is to connect them and store the result like a curated GraphQL query on a CDN edge. The only data this platform would potentially store are one-off content strings like “latest blog posts” or the fact that a particular component variant, e.g., the image on the left or right, is shown in a specific context."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That setup gives rise to a streamlined workflow:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To publish content, editors visually connect external data to components properties. That data can come from any source."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Editors compose their design-system components visually to represent the page design they want."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A curated JSON structure of the composition is saved to the CDN edge."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The front end connects to the API endpoint of the platform. An intuitive and light SDK connects to the CDN edge, keeping the front end code simple."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To make it all visual for content editors, match the naming of the design-system components in the codebase to the ones in the platform and have the SDK show the components in a preview window. Simultaneously, content editors can bind data from external sources to the props and design how the components should look and behave."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With solid cache purging for data sources, you can create dynamic pages that connect to any amount of data and deliver in less than 50ms from a CDN edge near you. In case of external data-source changes, the TTL on the field or a webhook purges the cache, resulting in fresh data. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If used in conjunction with the latest Next, NuxtJS, or Astro features, this approach leads to a robust yet no-frills front end with no need to connect to data sources in code or mapping their data to component props. Talk about happy developers!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Image description","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gxchvyapco21ibgpkxl9.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Map design system component props to individual API response fields to create a visual editor that works across headless sources."}]},{"type":"element","tag":"h3","props":{"id":"a-recap"},"children":[{"type":"text","value":"A recap"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connecting everything code-first at scale is painful for developers and content editors alike, the former having to maintain the connections and content mappings, and the latter getting lost in the abstract tools with no clues of what happens on a click to publish."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A composable architecture of headless sources must be a team buy, not just a developer choice. What’s needed is a visual workspace that’s—"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Friendly to content editors but also feature-rich for developers while maintaining excellent technical architecture without compromises. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Agnostic and not a one-size-fits-all offering from a single CMS vendor. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In other words, we need a modern, composable form of the old-school DXPs like Adobe AEM. I believe what I described above resembles digital experience composition as coined by Gartner."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"This is Headless 2.0"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-why","depth":3,"text":"The why"},{"id":"the-how","depth":3,"text":"The how"},{"id":"a-visual-workspace","depth":3,"text":"A visual workspace"},{"id":"a-recap","depth":3,"text":"A recap"}]}},"_type":"markdown","_id":"content:4.writing:this-is-headless-20.md","_source":"content","_file":"4.writing/this-is-headless-20.md","_extension":"md"},{"_path":"/writing/the-lost-promise-of-headless","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The lost promise of headless","description":"In recent years, headless technology, which boosts performance, developer experience, and...","id":1517485,"slug":"the-lost-promise-of-headless","date":"2023-06-26T18:18:19Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrvfb6a8wh5lt0mbyzat.png","canonical_url":"https://uniform.dev/blogs/the-lost-promise-of-headless","tags":["headless","architecture","mach"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In recent years, headless technology, which boosts performance, developer experience, and best-of-breed headless systems, has gained significant traction in web development. At its core, headless streamlines and accelerates the process of building and delivering web experiences  through APIs, which separates content creation and management from presentation. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, despite the excitement and promise, headless technology has fallen short in living up to its potential in several key areas."}]},{"type":"element","tag":"h2","props":{"id":"technical-complexity"},"children":[{"type":"text","value":"Technical complexity"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The primary appeal of headless technology lies in decoupling content creation and presentation, as a result of which developers can work on the presentation layer with their preferred tools and frameworks while content editors can focus on building and managing content. However, that separation comes at a cost. Specifically:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To connect the multiple layers, a significant amount of code must be written, which leads to technical debt, a heavier workload, and inflexibility. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Adding data to content models to address design-driven choices for an output channel, e.g., checkboxes to enlarge an image, pollutes the data model. The more design-related and channel-specific data you add to content models, the more technical debt you create."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"If you must connect a different data source to the same front-end component, but the content models do not align, issues arise. "}]}]},{"type":"element","tag":"h2","props":{"id":"content-editing-challenges"},"children":[{"type":"text","value":"Content-editing challenges"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another major challenge with headless technology is the disconnect between content editors and the systems they work with. Due to the abstract nature of headless CMS, content editors often struggle to pinpoint how their content will be displayed on the front end, leading to confusion, frustration, and a steep learning curve for novices."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, the lack of a clear connection between content and presentation makes it difficult for content editors to preview their work and ensure that it looks and functions as intended. A suboptimal user experience results, let alone a time sink for revisions and troubleshooting."}]},{"type":"element","tag":"h2","props":{"id":"the-way-forward-dxcp"},"children":[{"type":"text","value":"The way forward: DXCP"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Without question, despite the promise of headless technology for revolutionizing the way we build web experiences, serious hurdles remain. To overcome them, tools and processes that facilitate team collaboration and streamline the development process are necessary so that developers and content editors can work closely together to bridge the gap between content creation and presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A proven solution is a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":", which seamlessly integrates content and presentation. While on that platform, nondevelopers can visually create and manage digital experiences with content from multiple sources, delivering those experiences agnostically to a front-end of choice, significantly reducing technical debt, and gaining flexibility. Businesses can then adapt and innovate much faster, especially since the connection to all headless systems and APIs occurs in the DXCP, and the code remains clean."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What’s more, the incorporation of a DXCP into the development process affords content editors a clear view of how their content will be displayed and the ability to interact with the presentation layer. Plus, the absence of data silos means a more streamlined and efficient workflow as well as a more intuitive user experience for both content creators and developers."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"technical-complexity","depth":2,"text":"Technical complexity"},{"id":"content-editing-challenges","depth":2,"text":"Content-editing challenges"},{"id":"the-way-forward-dxcp","depth":2,"text":"The way forward: DXCP"}]}},"_type":"markdown","_id":"content:4.writing:the-lost-promise-of-headless.md","_source":"content","_file":"4.writing/the-lost-promise-of-headless.md","_extension":"md"},{"_path":"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Level up your collaboration game: Developer insights for winning with marketing pros","description":"Building outstanding user experiences takes, first and foremost, effective collaboration between...","id":1456239,"slug":"level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","date":"2023-05-03T15:49:29Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhfuu567f1khlxvglcn0.png","canonical_url":"https://uniform.dev/blogs/level-up-your-collaboration-game-developer-insights-for-winning-with","tags":["webdev","marketing","collaboration"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Building outstanding user experiences takes, first and foremost, effective collaboration between marketing and development teams. Oftentimes, however, those teams’ different perspectives lead to misunderstandings and opacity, which could seriously impact progress and revenue. Over the last two years of interacting and working within a marketing department as a seasoned technical leader, I've developed strategies to enhance collaboration, boost cross-team communications, and promote project success. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Below are the steps to take."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Set clear objectives"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Since both development and marketing play vital roles in implementing user experiences that drive business goals, the contributors in question must share clear, common objectives, e.g., projected sales, number of service signups, and brand messaging. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reaching those goals sometimes requires both technical and marketing-driven activities, such as code refactoring, site-performance boosts, messaging-success measurements, and analytics gathering. Those work streams, whose specifics are highly contextual to the specific job marketers or developers do, could easily cause conflict."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid miscommunication, do the following:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Invite participation from all team members."}]},{"type":"text","value":" Involve them in planning sessions, explain the background of the strategies to be built, and ascertain that everyone is on the same page."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Set SMART goals."}]},{"type":"text","value":" Create specific, measurable, attainable, relevant, and time-bound objectives."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Plan together"}]},{"type":"text","value":". Align schedules based on the teams’ different workflows."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Understand how the other discipline works"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A healthy dose of the qualities below is key:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Respect."}]},{"type":"text","value":" To minimize friction, respect for each other's operating methods, styles, and process is essential. Besides acquiring an understanding of the various workflows, team members must be willing to compromise for alignment’s sake."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Patience."}]},{"type":"text","value":" Be accommodating, thoughtful, and tolerant when explaining processes to the other team. A unified approach like Agile project management can forge collaboration by breaking projects into stages, constantly engaging with stakeholders, and enabling both teams to simultaneously track goals and meet objectives."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Remember, a world of difference exists in how developers and marketers think. Establishing a mechanism through which they can learn about one another's tasks and routines goes a long way in championing collaboration."}]},{"type":"element","tag":"h2","props":{"id":"leverage-each-others-skills"},"children":[{"type":"text","value":"Leverage each other’s skills"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Developers and marketers contribute unique, value-add skills:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Developers"}]},{"type":"text","value":" can offer product or technical insights by clarifying why certain code approaches and rendering modes help reach marketing goals."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Marketers"}]},{"type":"text","value":" can share user feedback, messaging learnings, and test data with developers as support for spiffing up the UI and product features."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Essentially, developers work in the context of the “how,” and marketers, of the ”why.” Both are equally valuable for successful projects."}]},{"type":"element","tag":"h2","props":{"id":"make-data-based-decisions"},"children":[{"type":"text","value":"Make data-based decisions"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Data is crucial for measuring success. Developers and marketers play a different role vis-à-vis data:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers create technology for harnessing data that marketers need to optimize conversion."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Marketers collect data and strategize campaigns accordingly. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Using analytics tools and personalization engines is instrumental for fulfilling project goals. Ultimately, developers must find a way to integrate “hated tools” so that both teams are happy."}]},{"type":"element","tag":"h2","props":{"id":"use-the-tools-that-appeal-to-both-teams"},"children":[{"type":"text","value":"Use the tools that appeal to both teams"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tools that propel collaboration fall into different categories. For example, Jira and Linear are process systems, and Figma and Zeplin are design devices. Other tools are slated for website architecture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though developers love the freedom to choose the tools they prefer to build websites, it comes at the price of abstract interfaces and many open tabs for marketers. As technology evolves, techies must keep up with industry trends without being bogged down by marketers’ tool choices. That’s where headless has failed us: The pendulum of architecture choices to build websites has swung too far. Developers love it, yet marketers hate it. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":" affords both developers and marketers control of features, content, and the ever-ticking clock. Though technically agnostic, a DXCP—"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Helps developers funnel data to a front-end channel of their choice without compromises. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enables marketers to independently and visually edit content in a no-code environment without having to seek developer assistance."}]}]},{"type":"element","tag":"h2","props":{"id":"faithfully-perform-the-paramount-steps"},"children":[{"type":"text","value":"Faithfully perform the paramount steps"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By setting clear objectives, understanding each other's processes, leveraging each other’s unique skills, making data-driven decisions, and adopting tools that cater to both parties, marketing and development teams can cooperate smoothly, eliminate roadblocks, and deliver phenomenal projects. With the right strategies and mindset, the sky's the limit for the potential of those high-performing teams to achieve exceptional results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://uniform.dev/demo","rel":["nofollow"]},"children":[{"type":"text","value":"Check out Uniform DXCP"}]},{"type":"text","value":", on which developers and business teams can access all the tools they need to deliver well and fast."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"leverage-each-others-skills","depth":2,"text":"Leverage each other’s skills"},{"id":"make-data-based-decisions","depth":2,"text":"Make data-based decisions"},{"id":"use-the-tools-that-appeal-to-both-teams","depth":2,"text":"Use the tools that appeal to both teams"},{"id":"faithfully-perform-the-paramount-steps","depth":2,"text":"Faithfully perform the paramount steps"}]}},"_type":"markdown","_id":"content:4.writing:level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","_source":"content","_file":"4.writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","_extension":"md"},{"_path":"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to get your webcam to look decent in a few simple steps","description":"If you have used a webcam before you know what it means to look like shit on camera. Even the most...","id":1407808,"slug":"how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","date":"2023-03-20T13:01:35Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finfev45k3ve6i4dgtu2r.png","canonical_url":"https://dev.to/timbenniks/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps-5eo4","tags":["webcam"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have used a webcam before you know what it means to look like shit on camera. Even the most expensive consumer webcams produce a “meh” result. So why do webcams suck? It’s their design. The webcam form factor has a bunch physical challenges that limits them from producing a good looking picture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Beware, the ideas outlined below are based on my experience and are by far not comprehensive or complete. That is not the idea of this post. Someone in the field of cameras will probably pick this apart on details. The global ideas stand, however."}]},{"type":"element","tag":"h3","props":{"id":"why-webcams-suck"},"children":[{"type":"text","value":"Why webcams suck"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Let’s get a bit technical. Almost all webcam "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Image_sensor","rel":["nofollow"]},"children":[{"type":"text","value":"image sensors"}]},{"type":"text","value":" are somewhere between 1/4\" and 1/3\" in size and they have a crop factor of around 7. Crop factor is a term that describes the difference between your camera’s sensor size and a traditional 35mm film frame. In the case of a webcam’s image sensor size and its crop factor a normal 18mm lens is the equivalent of a 126mm zoom lens. I might be a bit off here. The idea is that the crop factor plays a huge role."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A webcam tends to be positioned around 40cm (1.3 feet) from your face. Due to the high crop factor an extremely wide angle lens is needed to get a good visual at that distance. Think about it. If a 18mm lens is the equivalent of an 126mm lens it means that something we consider normal on a SLR camera is extremely zoomed in on a webcam. So, we need to zoom it out. BY A LOT. To do that, we use a wide angle lens."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Sensor explanation","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16nf6fvk0v76s11zb1ph.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The problem is, the wider you go, the less sharp the picture gets. If there wasn’t enough against the webcam form factor: the lenses in webcams are generally cheap and shitty. The webcam’s physical limitations make it terrible in low light situations. Even with studio lighting the image can appear grainy."}]},{"type":"element","tag":"h4","props":{"id":"there-are-more-issues-yikes"},"children":[{"type":"text","value":"There are more issues. Yikes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you check out high quality content there is always a nice "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Bokeh","rel":["nofollow"]},"children":[{"type":"text","value":"bokeh effect"}]},{"type":"text","value":". The more light a lens can capture (aperture) and the bigger the image sensor, the more bokeh you can expect. Bokeh is awesome, everybody needs bokeh."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In webcams autofocus works from about 1cm until 60cm (2feet). After that everything is always sharp. Webcams have a shallow depth of field. No bokeh. Not even close."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Combine a small sensor, a crappy wide angle lens and a shallow depth of field and you have the average webcam. A 200 euro webcam isn’t that much better than a 50 euro webcam. Sad but true."}]},{"type":"element","tag":"h4","props":{"id":"but-why-does-my-phone-camera-look-so-good"},"children":[{"type":"text","value":"But why does my phone camera look so good?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A real camera or a phone have much more computational power. The camera on a phone is almost its main feature nowadays. It’s where all the advertisement dollars go. Phones have bigger sensors, better lenses and sometimes even a dedicated hardware chip just for image processing."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most webcams also have some sort of processing power on board but it always kind of sucks. It mainly compresses the video feed so it’s streamable over the USB connection. Due to the compressed stream the PC hardly needs any processing to show the video. You have no access to aperture, shutter speed or ISO though."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can only post process the signal. But the damage is usually already done at this stage."}]},{"type":"element","tag":"h4","props":{"id":"but-why-arent-there-any-amazing-webcams-out-there"},"children":[{"type":"text","value":"But why aren’t there any amazing webcams out there?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s definitely possible and there are niche brands that build 1000 euro webcams. But if you have to spend that much, why not just buy a real camera? The actual market for webcams is likely just for conference calls, skype with family (if you don’t have a laptop or a phone) or content creators who are starting out. If webcams get too expensive, nobody will buy them."}]},{"type":"element","tag":"h3","props":{"id":"you-can-make-it-work-however"},"children":[{"type":"text","value":"You can make it work however"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In this post I’ll outline some tips and tricks you can apply to make your webcam look better. All techniques described below are applicable to any sort of camera setup. If you have a proper camera it just works better. We will be covering two topics. Lighting and post processing settings."}]},{"type":"element","tag":"h4","props":{"id":"lighting"},"children":[{"type":"text","value":"Lighting"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Lighting is by far the most important part of your setup if you want to make your webcam image look good. As mentioned before, webcams are not great in low light situations. To overcome this limitation you have to blast the filming subject (you) with light."}]},{"type":"element","tag":"h5","props":{"id":"light-temperatures"},"children":[{"type":"text","value":"Light temperatures"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are different types of light that need different white balance settings. Generally light bulbs are yellow and sun light is blue. When combining both you can green a green overtone. White balancing your camera in software is very important in this case."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I’d suggest not to use sunlight as it is hard to control. Close your blinds and go for light bulbs or LED lights only. There are many cheap options out there. Most lights can deliver different color temperatures ranging from 2500 (sunset) to 10000 (blue sky). Generally 5500 is considered noon daylight."}]},{"type":"element","tag":"h5","props":{"id":"shadows-diffusion"},"children":[{"type":"text","value":"Shadows & diffusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Light can be cast in different ways. Harder shadows and lighting from the top is used to depict movie villains for example. If you want an dramatic look, use hard shadows and light yourself from one side. If you want to look more mainstream use softer shadows and light yourself from more angles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To generate softer shadows you have to diffuse your light. The more focused a light source is, the harder the shadows. The more diffusion is added, the softer the shadows. I personally use a couple of cloths of white t-shirt fabric stretched over my lights. Obviously there are also more professional ways to diffuse light but these are not available to everyone."}]},{"type":"element","tag":"h5","props":{"id":"your-light-setup"},"children":[{"type":"text","value":"Your light setup"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that we have our color temperatures and diffusion out of the way, let’s talk about how to set up your lights so you are lit properly for the webcam. If you have very limited options, just put a big light behind your camera and blast your face with white light. This will give you a 100% quality boost over having no lights."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have a little bit more flexibility I suggest using a three point light setup. The three point light setup is considered industry standard and will generally give you great results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Lighting setup","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/keef3ou8sbzpg24acrzj.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The three point light setup assumes you have a “key light”, a “fill light” and a “hair light”."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Key light: This is the main light source. It shines directly on the subject, usually from the front right or front left. It establishes the overall look and feel of the shot."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Fill light: The fill light provides balance to the key light by “filling in” the rest of the subject’s face with softer light. It should be positioned to the side opposite side of the key light."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hair light: Also called “back light” or “rim light”. This light creates a flattering rim of light around the subject, separating him or her from the background."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is how to set up your lights. To start turn all lights off so you are in a dark room."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Turn on your key light. Your key light is the brightest light in the scene and the one that creates the overall feel of the shot. Adjust its brightness to your liking. You should position the key light in a relatively high spot to reduce shadows on the face."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Add your fill light. The fill light should be on the opposite side of the key light, but still in front of the subject. Don’t make the key and fill lights symmetrical. The fill should be at the subject’s face level, and should get rid of any remaining shadows. The intensity of the fill light should be about half that of the key light."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Bring in the hair light. The back light separates you from the background. It can be placed anywhere behind the subject. Make sure to keep it out of the shot. Angle it down from a high position to achieve a sharp outline on the edge of the subject."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If there are lights behind you, make sure these have a very low intensity so they do not distract from you, the subject of the shot. To make the shot more interesting you can add some fun colored lights behind you as long as they are not too distracting. This is obviously not needed but it’s a fun thing to add."}]},{"type":"element","tag":"h3","props":{"id":"application-settings"},"children":[{"type":"text","value":"Application settings"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We are almost there! Let’s tweak some settings to make the camera quality appear much higher."}]},{"type":"element","tag":"h4","props":{"id":"turn-things-off"},"children":[{"type":"text","value":"Turn things off."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have a Logitech webcam. This camera comes with a little control panel that allows for some post process tweaking of the camera feed. If you are well lit you can turn off a bunch of things in this interface. First of all, keep the settings for brightness, contrast, saturation and sharpness at the default. We will fix these at a later stage."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Set the white balance on a fixed setting and make sure it is not set to auto. For my setup a white balance at around 4000 works."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make sure to turn off Backlight compensation and Gain. We do not need these as we are well lit."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"In the next tab make sure exposure is set to “auto”. If you attempt to expose yourself manually with a Logitech webcam all hell brakes loose. The image either looks like crap or your framerate will drop significantly."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make sure to turn off Low Light compensation. There is no need for this as you are well lit."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Webcam settings","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rktns1m78yyy1owfexqd.png","width":1280},"children":[]}]},{"type":"element","tag":"h4","props":{"id":"color-correction"},"children":[{"type":"text","value":"Color correction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I use OBS, which comes with a great plugin to color correct the video feed from your webcam. The smallest adjustments give a great result. Stay subtle with the changes and your video will look a lot better fast."}]},{"type":"element","tag":"h4","props":{"id":"lut"},"children":[{"type":"text","value":"LUT"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Instagram filters can make a simple picture of food look like a very fancy picture of food. You can use these same kinds of filters on webcams too! It’s amazing what a little cosmetic tweak can do to your video quality. The filters I’m talking about are called "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/3D_lookup_table","rel":["nofollow"]},"children":[{"type":"text","value":"LUT"}]},{"type":"text","value":". LUT’s are generally used in the professional film world to color grade a movie."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"LUT’s are simple, easy-to-use filters that can be applied directly into "},{"type":"element","tag":"a","props":{"href":"https://obsproject.com/","rel":["nofollow"]},"children":[{"type":"text","value":"OBS"}]},{"type":"text","value":" allowing your webcam presentation to become brighter or more cinematic. For a great free pack of LUT’s go here: "},{"type":"element","tag":"a","props":{"href":"https://gamingcareers.com/guides/30-free-webcam-filters-obs/","rel":["nofollow"]},"children":[{"type":"text","value":"https://gamingcareers.com/guides/30-free-webcam-filters-obs/"}]}]},{"type":"element","tag":"h4","props":{"id":"you-can-try-one-more-thing"},"children":[{"type":"text","value":"You can try one more thing"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have a cheap camera with a shallow depth of field and your lights are set up well, you can use a program called xsplit vcam to create a software bokeh effect! Beware, you need a relatively strong graphics card and the lighting needs to be spot on. Also, the program is not free."}]},{"type":"element","tag":"h3","props":{"id":"thats-it"},"children":[{"type":"text","value":"That's it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is the result I got after a bit of research and tweaking settings."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Before","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53ums57svft6zuza79l9.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"After","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h293vez6piv68hyzfy98.png","width":1280},"children":[]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-webcams-suck","depth":3,"text":"Why webcams suck"},{"id":"you-can-make-it-work-however","depth":3,"text":"You can make it work however"},{"id":"application-settings","depth":3,"text":"Application settings"},{"id":"thats-it","depth":3,"text":"That's it"}]}},"_type":"markdown","_id":"content:4.writing:how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","_source":"content","_file":"4.writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","_extension":"md"},{"_path":"/writing/why-i-didnt-run-the-2016-marathon","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Why I didn't run the 2016 marathon","description":"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on...","id":1406190,"slug":"why-i-didnt-run-the-2016-marathon","date":"2023-03-18T22:52:37Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafpsw3jbsie5bf7w8wp9.jpg","canonical_url":"https://dev.to/timbenniks/why-i-didnt-run-the-2016-marathon-57e3","tags":["personal","fitness","running"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on October 16th 2016. I’ve learnt a life lesson about the balance between the load and capacity of the body while training for a marathon."}]},{"type":"element","tag":"h3","props":{"id":"tldr"},"children":[{"type":"text","value":"tl;dr"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won't be able to cope with the added stress."}]},{"type":"element","tag":"h3","props":{"id":"the-load-capacity-model"},"children":[{"type":"text","value":"The Load-Capacity Model"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Load-Capacity model was created in 1990 by A.T.M Bernards and L.H.A Hagenaars, two Dutch physiotherapists. The MDBB (Dutch abbreviation) model is meant to be a conceptual model for physiotherapy. "},{"type":"element","tag":"a","props":{"href":"https://www.researchgate.net/publication/224983108_Het_meerdimensionale_belasting-belastbaarheidsmodel_een_conceptueel_model_voor_de_fysiotherapie","rel":["nofollow"]},"children":[{"type":"text","value":"This is one of their publications from 1999"}]},{"type":"text","value":". They created this model to add the "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Biopsychosocial_model","rel":["nofollow"]},"children":[{"type":"text","value":"biopsychosocial"}]},{"type":"text","value":" element to physiotherapy treatments."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"I just want to caveat that even though there is some merit to the claims made in this post, the Load-Capacity model is generally taught at physiotherapy school, most of the conclusions I ended up with are anecdotal. I’ll be using the Load-Capacity model specifically for my personal experience so my writing will be somewhat one-sided."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On the physical side, the Load-Capacity model is a key concept in preventing and managing running injuries. It is all about understanding the balance between training load and the body’s capacity to handle that load. In a nutshell it’s a case of working within your limits and not pushing the training beyond what the body can cope with."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then there is the mental side. External stressors will also impact the balance between capacity and load. If you keep the load the same but your capacity goes down due to grief or work stress, the body will be pushed over the edge of what the it would normally tolerate."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The load-capacity balance is different for everybody and could also change over time. As it did for me. I upped the load in a steady way by training for the marathon but my body’s capacity went down due to external stressors which I wasn’t able to identify. For one, I have a thick skull but I also wasn’t used to the fact that my body would tell me to stop. I could do whatever I wanted to it without stretching or any kind of warm up. If I twisted my ankle the pain would go away in a day."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtcthucv7qthp2sra697.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This year I was always stiff and I had to concentrate way harder to stick to proper form. Suddenly I got little pains like plantar fasciitis and an inflamed Achilles tendon. Even after stretching out my hips and calves it felt like I was running on stilts. The pains and stiffness started two months into training. Four months in, I started to get extremely tired, I developed a rash and I my IBS started to play up way more often. I also got sick after doing longer runs at marathon pace."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The things I just described start to happen when the load is surpassing the capacity of the body for a length of time. I slowly got "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Overtraining","rel":["nofollow"]},"children":[{"type":"text","value":"overtrained"}]},{"type":"text","value":". As my body could normally handle anything I threw at it, I was a bit oblivious towards the symptoms of over training."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"My sweet wife is a physiotherapist and saw me coming from a mile away. Classic. I needed my wife and many of my peers to tell me that I was over trained. The cause was a combination of training and external circumstances."}]},{"type":"element","tag":"h3","props":{"id":"this-is-what-happened"},"children":[{"type":"text","value":"This is what happened"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started off well and I was determined to make less mistakes in the preparation this time around. I had plans to have my diet in check from day one. I would go to the gym as well. Next to this I kept a record of everything. Training sessions with Strava, sleep analysis and heart rate with Sleepcycle and food and weight with MyFitnessPal."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This year I decided to go for a training plan which let me train five times per week. Of these five sessions only three where running. The other two were either biking or a gym session. Running only three times per week meant that I could be flexible with the days as I sometimes work nights or have social events to attend. The plan had me running more miles each run but at a slow pace."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first couple of months everything went well. I actually beat my personal bests on the 5km and 10km quite easily."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/628465080","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" Strava run and "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/655258214","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" one."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And I also found back my love for cycling. I bought the cheapest bike with the best reviews. It has a Microshift group set which isn’t as precise but works very well if maintained properly."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Two and a half months in, things started to feel a bit painful, especially after running. I realise now that the stress I experienced outside of training impacted my capacity to handle the increased training load."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A couple of things happened at the same time. We had a cancer scare in the family for which I went to Amsterdam for a while. Things are better now but I’ve had a lot to worry about. Right after I came back to Paris my wife miscarried. We’ve been trying to have a baby for a long time and each time it fails it’s like getting hit in the face."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On top of these two things I found out that I have "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Irritable_bowel_syndrome","rel":["nofollow"]},"children":[{"type":"text","value":"IBS"}]},{"type":"text","value":". I’ve probably had it for a long time but it started to flare up around March this year. I’ve been trying to find the right diet and it’s not easy."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It seems that the absorption of nutrients isn’t working well due to the inflammation in my gut. I had to try to eat less foods that contains "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/FODMAP","rel":["nofollow"]},"children":[{"type":"text","value":"FODMAPs"}]},{"type":"text","value":" so that my insides would relax a bit. Having a constant belly ache and bad sleep as a result does not help the capacity of the body to deal with an increased training load. I made a little "},{"type":"element","tag":"a","props":{"href":"https://timbenniks.nl/fodmap","rel":["nofollow"]},"children":[{"type":"text","value":"tool"}]},{"type":"text","value":" to see which foods are allowed on the low FODMAP diet."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Funnily enough I felt quite good during runs. Well, except when it was hot. I hate warm humid weather and have I trouble training in it. It was usually after the runs that I would suddenly feel the pain my body was in. Willpower is an amazing thing. I think I could actually run the marathon on sheer brain juice tomorrow. It would do horrible things to my body though."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The run below seems to have gone very well but I got sick after and couldn’t train for a week. My whole body ached and I slept all weekend."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/683549355/","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" Strava run."}]},{"type":"element","tag":"h3","props":{"id":"what-i-have-learnt"},"children":[{"type":"text","value":"What I have learnt"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won’t be able to cope with the added stress."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It took 20 years to start enjoying sports. I lost a "},{"type":"element","tag":"a","props":{"href":"https://timbenniks.dev/articles/my-fitness-story","rel":["nofollow"]},"children":[{"type":"text","value":"lot of weight"}]},{"type":"text","value":" and got hooked. I could throw anything at my body and it would bounce back. Now it doesn’t and I have to accept that. This summer of training thought me to be humble and to listen both my peers (my wife mainly, as she is always right) and my body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Not running this race was a hard decision for me as I always stick to the challenges I set for myself. I’ve decided that feeling good is more important than running a marathon. I’ve done it once before and have proven that I can do it. My body can deal with running but it’s not comfortable doing it. I have my build against me. I’m going to focus on being flexible and strong. I’ll be running shorter distances and I’ll be cycling way more. Also, I’m going back to the gym to do what my body was build to do. Lift iron. I might even try yoga…"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt09jc5r7w862n5smsas.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"some-numbers"},"children":[{"type":"text","value":"Some Numbers"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ran 483.4km over 51 runs with an average pace of 05:40"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average distance was 9.5km per run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I went from 96.1 to 92.9 kilos"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I slept 8h 20m a night on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ate 2258kcal a day on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I took 9565 steps a day on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I had an average resting HR of 63.5bpm"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average food macro balance was 62.2% carbs, 16,2% fat, 21,5% protein."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"tldr","depth":3,"text":"tl;dr"},{"id":"the-load-capacity-model","depth":3,"text":"The Load-Capacity Model"},{"id":"this-is-what-happened","depth":3,"text":"This is what happened"},{"id":"what-i-have-learnt","depth":3,"text":"What I have learnt"},{"id":"some-numbers","depth":3,"text":"Some Numbers"}]}},"_type":"markdown","_id":"content:4.writing:why-i-didnt-run-the-2016-marathon.md","_source":"content","_file":"4.writing/why-i-didnt-run-the-2016-marathon.md","_extension":"md"},{"_path":"/writing/the-2015-paris-maratho","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The 2015 Paris marathon","description":"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue...","id":1406188,"slug":"the-2015-paris-maratho","date":"2023-03-18T22:45:48Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furlbqaankzj82uhwrfq7.jpg","canonical_url":"https://dev.to/timbenniks/the-2015-paris-marathon-i0l","tags":["personal","fitness"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue Saint-Antoine. Seeing all these people swooshing by impressed me so much that I signed-up for the 2015 marathon on the spot. The goal was set, the easy part was over."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gu3psk58kwz3gfppsmc8.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I gave myself five months to conquer the beast. 42.195 kilometres. After running on and off for a couple of years it was time to get serious. As I work for AKQA I naturally chose to train with the Nike+ app and all the related products."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nike’s marathon training program was brutal. Even at the rookie level it made me run five times a week from the get-go. After living the good life for eight months in Paris both my endurance and cardio vascular strength were shit. It’s safe to say I was happy that the distances were short for the first couple of weeks."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I didn’t have any specific goals in mind, just general stuff like: “I want to get a bit lighter so the running gets easier” or “I’d love to set a new half marathon personal best at one point”. I trusted the rigorous training schedule would get me there eventually."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It didn’t. The training was so intense that I had skip workouts and I had to start experimenting with food to figure out how I could get my legs ready for the next run. My body could just not cope with the sheer amount of kilometres I had to run each week."}]},{"type":"element","tag":"h3","props":{"id":"january"},"children":[{"type":"text","value":"January"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After two months of pain I had finally found a balance. Turns out that eating super low fat and high carb was the best for my recovery. I was basically eating according to the 80/10/10 principle. 80% carbs, 10% fats, 10% protein. I’m not preaching this way of eating, it was just great for me."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"January","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9z60d58hzj247adpsmsn.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To achieve eating this macro ratio I had to cut out all animal products. If I ate too much fat on a rest day, like when you go out to dinner and you don’t want to be the asshole who can’t eat anything, I would have heavy legs the next day."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started eating copious amounts of fruit, rice, pasta, quinoa and veggies. My brain started functioning ten times better and I didn’t even think about coffee anymore. January was awesome. I ran pain free and the long distances started to become enjoyable. Good times. I ran 147km that month. This might not seem a lot to seasoned runners but I came from ~50km a month. I started a new chapter in my running career."}]},{"type":"element","tag":"h3","props":{"id":"february"},"children":[{"type":"text","value":"February"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We went on a ski trip in the beginning of February. I was an amazing holiday with loads of skiing, good food and laughs. I did some workouts in the gym and a proper mountain walk. I really hoped I hadn’t lost my running gains."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"February","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etfg0xoxax0zbyzrmcig.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first Monday back I had a nasty cough but decided to at least try my fast 8km run I had planned for that day. Bad decision. Over the course of the week I developed a bronchitis and both the doctor and my wife (the boss and a bad ass physiotherapist) forbade me to run the following two weeks."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I slept a lot and kept on eating well and as soon as the illness lifted I started running short distances again. I cursed my way through the first week. Even though the running hurt, my pace was still fast."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In February I ran the awesome amount of 37.98km over five runs. The last of the five was the most painful 15km run of my life. We’d strolled around “Le Salon d’Agriculture” for three hours before. We tasted wines and tried cheeses. I had forgotten to drink any water. Rookie mistake. Lactic acid legs for days!"}]},{"type":"element","tag":"h3","props":{"id":"march"},"children":[{"type":"text","value":"March"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Back to awesome. I ran 181km in 4 weeks. An absolute record month in my book. I had an amazing run in Amsterdam on which my whole family followed me by bike. I also ran personal bests on the 5km, 10km, 15km and 21km. I decided to drop the Nike+ program as I had missed too much the month before. This was a smart move. The Nike+ program would have burnt me out."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I had been in training for 4 months by now and I had been sick the month before. The exhaustion was setting in a bit. I didn’t particularly feel it in my legs, but I started having problems staying focused on evening runs. One time I had to jump aside while a policeman was arresting someone. I flipped my ankle and had to walk home for an hour."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"March","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r8u4pxda4nalwwa4x0o.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I felt stupid for being distracted. Even though I had super light shoes without much cushioning I stopped being in touch with the ground I was running on. Sounds like I’m a hippy aye? It’s a runners thing."}]},{"type":"element","tag":"h3","props":{"id":"april"},"children":[{"type":"text","value":"April"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Only two weeks left. I did a 27km run in a very busy, rainy and hilly Paris. After that I was so exhausted that I decided to start my tapering period a week early. I thought I’d hurt my feet too much and suddenly got very nervous. My marathon veteran colleagues told me this is normal and I should just chill out."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I only ran a handful of runs up until the big day. The thing I liked most about the tapering period was the carbo-loading. My food intake doubled in the week before the big race. #CTFU. I felt amazing and started dropping weight. I should have eaten much more the past four months."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"April","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4p4xky34q3vxlhfcgfg6.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"d-day"},"children":[{"type":"text","value":"D-DAY"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I was so nervous I hardly even looked at the enormous amount of runners around me. I was standing on the Champs-Elysees with 50.000 other athletes. This was going to be the most epic challenge of my life."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"D-DAY","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qsgkyqt7mudojkqok6z.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first bit felt like heaven. Especially because my mate "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/chrisfinch","rel":["nofollow"]},"children":[{"type":"text","value":"Chris"}]},{"type":"text","value":" had just given me an amazing pep-talk over the phone. The Champs Elysees was mine and mine alone. Turns out I clocked the first kilometre at a 6:12 pace. Slow as fuck but a nice start to a long day. After that I slowly picked up the pace to a nice average between 5:25 and 5:35."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Around the 7km point my awesome friend "},{"type":"element","tag":"a","props":{"href":"https://www.instagram.com/henrike.theda.klug/","rel":["nofollow"]},"children":[{"type":"text","value":"Henrike"}]},{"type":"text","value":" spotted me from the sidelines and joined me for about 1.5km. We picked up the pace and race had properly started."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It was super warm so I drank water every chance I got. My training had been during winter time so I was used to running with a maximum temperature of 10 degrees celcius. Even though it was warm I ran a great half marathon (for me at least, 01:52:34)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The heat had silently sneaked up on me and at kilometre 22 the wall hit me like a hammer."}]},{"type":"element","tag":"h3","props":{"id":"the-wall"},"children":[{"type":"text","value":"The Wall"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The wall is really the biatch people say she is. I could not even put one foot in front of the other anymore. It took me half an hour to stumble to the next food station. It took 35 minutes to run 3km. I had some water, a sugar cube, a GU gel and a slice of mandarin. Obviously this was way too much so I felt sick for the next 5km. My brain was telling me to stop but I just couldn’t let go."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the following kilometres it didn’t get any better. I managed to find a happy medium in between running and walking. My nike+ app was all over the place and wasn’t accurate at all anymore. At one point I just turned it off and upped my Spotify volume. The next song was by Motörhead and I felt my heart skip a beat. The race was back on.For 2km.After that I went back to my previous state."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"During the five months I trained my wife had always been there for me. She gave me tips and picked me back up when I had hit a low point. When I saw her at kilometre 30 I couldn’t be happier. I gave her a quick kiss and a smile and I was on my way again."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Just before hitting the Bois de Boulogne I became captain slow. I was having a real rough patch when I heard people shout my name. These people were "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/photo.php?fbid=10153775712979392&set=a.10151354689589392&type=1&theater","rel":["nofollow"]},"children":[{"type":"text","value":"Marie and her son Adrian."}]},{"type":"text","value":" It’s great to have the support of your friends. It made me start running again. As it turns out, my wife had been sending loads of photo’s to my family back in Amsterdam. They had been following my every move."}]},{"type":"element","tag":"h3","props":{"id":"bois-de-boulogne"},"children":[{"type":"text","value":"Bois de Boulogne"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Bois de Boulogne was truly intense. They call it “the march of the death” and rightfully so. It starts at kilometre 35, there are hardly any supporters and it’s mostly uphill."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I did the “pain shuffle” for the last 7km. The pain shuffle means that you can’t really bent your legs anymore but you still run. In my case, stumbling without falling. I ran from km sign to km sign without even hearing my music."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When I saw the 40km sign I decided to not walk anymore and I did whatever it took to make that happen. At kilometre 41 I noticed that a lot of the faster runners were coming back to show us their medals and cheer us on. There was an amazing feeling of companionship in the pack of runners."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At kilometre 42 I saw the finish AND my wife at the same time. It was finally over. I didn’t even bother to sprint."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It took me four hours and forty six minutes. A total pain train. While riding home on the metro I felt a little shit because I walked so much. Should I have gone deeper? But while writing this piece, pride is taking over. I actually did this. My first marathon in the heat in under five hours. #putain."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"finisher","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdxzyzf1wztrl220nwa4.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"some-numbers"},"children":[{"type":"text","value":"Some Numbers"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ran 615.14km over 67 runs with an average pace of 05:42"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average distance was 9.18km per run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I went from 95 to 86.7 kilos (and lost all gains)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I slept 7h 50m a night on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ate 1840kcal a day on average (probably not enough)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I took 12609 steps a day on average"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"january","depth":3,"text":"January"},{"id":"february","depth":3,"text":"February"},{"id":"march","depth":3,"text":"March"},{"id":"april","depth":3,"text":"April"},{"id":"d-day","depth":3,"text":"D-DAY"},{"id":"the-wall","depth":3,"text":"The Wall"},{"id":"bois-de-boulogne","depth":3,"text":"Bois de Boulogne"},{"id":"some-numbers","depth":3,"text":"Some Numbers"}]}},"_type":"markdown","_id":"content:4.writing:the-2015-paris-maratho.md","_source":"content","_file":"4.writing/the-2015-paris-maratho.md","_extension":"md"},{"_path":"/writing/my-fitness-story","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"My Fitness Story","description":"From fat and sick to slim and happy Aside from a short period in high school I have always...","id":1406186,"slug":"my-fitness-story","date":"2023-03-18T22:39:46Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86xayxbotaqwk8get75h.jpg","canonical_url":"https://dev.to/timbenniks/my-fitness-story-1p97","tags":["fitness","personal"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"from-fat-and-sick-to-slim-and-happy"},"children":[{"type":"text","value":"From fat and sick to slim and happy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Aside from a short period in high school I have always been a chubby kid. When I lived at home my mom made sure I didn’t go overboard with food. She stopped me here and there when needed and always made sure we had healthy food on the table."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After highschool I started living on my own and became a lot more active as a musician. I got used to a very burgundian lifestyle and started eating all kinds of junk. The free drinks for musicians also didn’t help."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have always been interested in muscles and posture but never had the discipline to change myself into something I liked. I quickly turned into a lazy musician. Beer and fast food, either before or after a gig, were the norm. I didn’t know any better and ate highly refined foods containing a shitload of ingredients with long and incomprehensible names. Looking back it’s unbelievable how little I knew about stuff I put in my body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Being fat was always in the back of my mind and it nagged at me. When I reached 120kg I felt horrible and knew change was needed. I was always sweating, tired and out of breath. I had high blood pressure and was often feeling ill. Diabetes type 2 was creeping up on me."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"fat","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z7h5x2kxppg53w4is65y.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even after this turning point I was still completely inadequate at sports and I didn’t have any discipline. I didn’t even know how to properly contract my muscles to lift something. I had no body sense at all."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I asked my mate "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/chrisfinch","rel":["nofollow"]},"children":[{"type":"text","value":"Chris"}]},{"type":"text","value":" to help me out. He was (is) a complete legend and instantly jumped at the chance to help a friend. We started doing his “half hour of power”, lifted weights and ran as often as possible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Well, I tried."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I had excuses. Many of them. “But I had a gig last night” or “I’m still too sore from last week”. I was a complete pussy and it must have frustrated Chris. But he was strong and pulled me through."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As I finally saw some results I overcame my disciplinary problems step by step. I changed my diet and the fat started coming of quickly. I even gained some muscle."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started researching and a whole world of bro-science opened up to me. I did programs like P90X, 5x5, and 4-hour body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"weightloss","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0wcd7nly7arzfjs9glt.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The thing that helped me most was my Facebook activity. I posted my weight daily. People would respond if it went up or down and it kept me motivated. This was the first time in my life peer pressure actually had a positive influence on my state of mind."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"weightloss","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8oa7r37rqrhgldhtegpd.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"guitars","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4yyrv0qc0q0r59piv0n.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In April 2014 my wife and I moved to Paris. At that point I was vegan for half a year and I was at my lightest weight since I started training. We had to deal with different stress factors when we arrived and I let go of the strict livestyle a little and gained some weight again. The cheese, wine and French baguettes are too awesome not to enjoy. In January 2014 I got up to ~95kg and Paris had officially turned me into a croissant."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But I wasn’t a croissant for long. I started lifting some weights again and slowely started to get back into it. When the marathon passed by our apartment in Rue Saint-Antoine in April 2014 I signed up on the spot. I became a long distance runner over night. New goals were set, and crushed over the proceeding six months."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oph2vujeha2kjojtab6i.jpg","width":1280},"children":[]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"from-fat-and-sick-to-slim-and-happy","depth":2,"text":"From fat and sick to slim and happy"}]}},"_type":"markdown","_id":"content:4.writing:my-fitness-story.md","_source":"content","_file":"4.writing/my-fitness-story.md","_extension":"md"},{"_path":"/writing/make-the-web-greener-luxury-edition","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Make the Web Greener, Luxury Edition","description":"If the internet were a country, it would be the world’s sixth biggest polluter. The...","id":1406180,"slug":"make-the-web-greener-luxury-edition","date":"2023-03-18T22:30:27Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3e00qrk4jojitb5tu06.jpg","canonical_url":"https://www.valtech.com/insights/make-the-web-greener-luxury-edition/","tags":["webdev","environment"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter"},"children":[{"type":"text","value":"If the internet were a country, it would be the world’s sixth biggest polluter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The internet consumes around 416TWh per year in electricity. That number does not say much until you compare it to the 300TWh the United Kingdom consumes. These are staggering numbers, and they will only go up as the internet keeps growing. Whether you realize it or not, carbon emissions are generated all over the place."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that is 211 kg CO2 per year or about twice the weight of a professional basketball player. This is more carbon than ten trees can absorb. If you think about how many websites we have on the internet, this comparison paints a pretty scary picture."}]},{"type":"element","tag":"h3","props":{"id":"the-luxury-dilemma-the-rich-experience-and-fast-page-loads"},"children":[{"type":"text","value":"The Luxury Dilemma: The Rich Experience and Fast Page Loads"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every web page is crafted with art-directed elements that tell the right story. Luxury product pages are rich experiences that make the user linger and enjoy the ride. This approach is great for the potential customer, but there is a dark undertone when we consider the environment. These pages are full of heavy images, videos and animations. The heavier the page, the more carbon is emitted. If pages take longer to load, the emissions go up due to more device usage–and the antenna and screen are used for a longer period too."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are some conflicting goals within luxury on the web. We want a rich experience, but we also want hyper-fast page loads. We all know that slow pages mean more user drop-off. And to make matters worse, we also need to think about the environment. We need to contain how much carbon is blasted into the atmosphere when someone visits a page."}]},{"type":"element","tag":"h3","props":{"id":"how-to-reduce-carbon-emissions-from-your-website"},"children":[{"type":"text","value":"How to Reduce Carbon Emissions from Your Website"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The above describes a complicated mix of problems to solve. We know that carbon emissions are lowest if:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A page is fast to find"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The page loads fast and with little resources"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Users stay on a page for a very short time"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"These three points are hard to carry out in the current way of working in luxury. That is not because we do not know how to build websites but because the goals are different. We want visitors to explore the brand, linger and become influenced by the product story. They should become lifelong customers. Sadly, this goes against what is best practice for websites with a low carbon footprint."}]},{"type":"element","tag":"h3","props":{"id":"being-sustainable-without-compromising-quality"},"children":[{"type":"text","value":"Being Sustainable Without Compromising Quality"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But fear not: There is a solution that can get us much closer to being sustainable. We can even keep the same level of quality we have now. In addition to being greener, this solution makes our websites more accessible to people in upcoming markets. The answer is: optimization of image and video delivery. We solve the problem by reducing excess and only loading what is needed in the context of the user."}]},{"type":"element","tag":"h3","props":{"id":"are-we-there-yet-optimizing-media-asset-delivery"},"children":[{"type":"text","value":"Are We There Yet? Optimizing Media Asset Delivery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most traditional CMS systems focus on content editing or cataloguing of content and not on serving of content per se. Serving the content is part of the suite of tools in the platform, but the focus tends to be on other aspects. We call this the “best-of-suite” approach where one vendor deals with all aspects of the website."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nowadays, there are companies that solve specific problems within the eco-system of websites. We call these “best-of-breed” solutions, and they tend to be cloud native SaaS companies. Among these companies, there is a category that only deals with media asset delivery."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Images and videos are particularly hard. If we ask a content editor, filmmaker, or web developer how to optimize assets for the web, they generally do not know. The same goes for the best-of-suite CMS systems. They do not specifically optimize assets for the web—they serve them as is."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This leaves the responsibility to the content editor. We have seen people struggle with photoshop and not know how to optimize an image. Teaching courses and paying for Adobe licenses is commonplace and awfully expensive."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Fortunately, there is a plethora of ways to optimize images and videos for the web—and the SaaS solutions mentioned above take care of the problem for you. They serve assets in the right format for the user’s context (browser, device, resolution). And they reduce the file size with AI to be indistinguishable from the original—doing this by hand as a content editor is impossible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We have had projects where the page weight dropped by 90 percent without loss of quality. Content editors would only upload the original image and the system did the rest."}]},{"type":"element","tag":"h3","props":{"id":"loading-the-right-assets-in-the-context-of-the-user"},"children":[{"type":"text","value":"Loading the Right Assets in the Context of the User"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to serving optimized assets, the most gain is made when not serving them at all. As funny as this may sound, it is the most effective way to have a low-carbon website. If a user never scrolls down or never opens the big mega menu, what is the use in loading these assets in the first place? You should only load assets you know the user will see. We call this “lazy loading,” and it is one of the most powerful tools in the bag of tricks of web developers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to lazy loading, it is also important to load assets in the right context. If a user visits your website on a phone, make sure to load an image with the same resolution the phone has. Loading bigger assets unnecessarily degrades the user experience. It also makes the website have a higher carbon footprint due to excessive file size."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The same goes for file types. If you want an animated background image on the hero banner (we all do), do not use a GIF, but rather a video. GIF’s are about five times as big as videos and tend to not work well on mobile devices."}]},{"type":"element","tag":"h3","props":{"id":"looking-ahead-on-website-sustainability"},"children":[{"type":"text","value":"Looking Ahead on Website Sustainability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We cannot always optimize our web pages according to the best practices for low-carbon websites. This is just the nature of luxury. But we can focus on smaller parts of the equation that have a huge influence on how sustainable the website is. All of this can be accomplished without compromising on quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Look at the future and choose a best-of-breed solution that handles one of the most complex parts of the web: images and media. By combining optimized assets and lazy loading we make our pages lighter. This means they are more accessible to new customers in emerging markets."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And wouldn’t it be nice if content editors did not need photoshop licenses anymore? The overhead of training and the extra process is not worth it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Instead, have your media delivered by a specialized solution—Mother Nature will thank you for having a low-carbon website."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter","depth":2,"text":"If the internet were a country, it would be the world’s sixth biggest polluter.","children":[{"id":"the-luxury-dilemma-the-rich-experience-and-fast-page-loads","depth":3,"text":"The Luxury Dilemma: The Rich Experience and Fast Page Loads"},{"id":"how-to-reduce-carbon-emissions-from-your-website","depth":3,"text":"How to Reduce Carbon Emissions from Your Website"},{"id":"being-sustainable-without-compromising-quality","depth":3,"text":"Being Sustainable Without Compromising Quality"},{"id":"are-we-there-yet-optimizing-media-asset-delivery","depth":3,"text":"Are We There Yet? Optimizing Media Asset Delivery"},{"id":"loading-the-right-assets-in-the-context-of-the-user","depth":3,"text":"Loading the Right Assets in the Context of the User"},{"id":"looking-ahead-on-website-sustainability","depth":3,"text":"Looking Ahead on Website Sustainability"}]}]}},"_type":"markdown","_id":"content:4.writing:make-the-web-greener-luxury-edition.md","_source":"content","_file":"4.writing/make-the-web-greener-luxury-edition.md","_extension":"md"},{"_path":"/writing/how-to-dynamically-stream-video","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to dynamically stream video","description":"Build it yourself or use Cloudinary Dynamic video streaming is a video delivery technique...","id":1406138,"slug":"how-to-dynamically-stream-video","date":"2023-03-18T21:56:45Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wx2ix9t60eajoccgjh7.png","canonical_url":"https://dev.to/timbenniks/how-to-dynamically-stream-video-135f","tags":["video","cloudinary","streaming"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"build-it-yourself-or-use-cloudinary"},"children":[{"type":"text","value":"Build it yourself or use Cloudinary"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Dynamic video streaming is a video delivery technique that adjusts the quality of a video stream in real time. It does this according to detected bandwidth and CPU capacity of a user. In this article we will explore the two techniques which allow you to dynamically stream video."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"HLS and MPEG-DASH are the two most popular formats out there. Dynamic or adaptive video delivery requires outputting a video in different quality settings along with some additional files. Both HLS and MPEG-DASH have different approaches to the problem."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The process of making adaptive streaming work is complex. Most services out there do not provide an end-to-end solution for this and the ones that do a are quite costly. The adaptive video streaming paradigm is not one that many companies have conquered as it requires specific knowledge and access to hardware. There is a reason we don't have many competitors for Netflix and YouTube. Adaptive streaming of video is hard."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"First we’ll go into how adaptive streaming works and then I’ll explain exactly how to do this yourself. It’s much easier than you think once you have the knowledge and the right third party tool to do the heavy lifting."}]},{"type":"element","tag":"h3","props":{"id":"how-adaptive-video-delivery-works"},"children":[{"type":"text","value":"How adaptive video delivery works"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The video stream adapts itself based on a set of rules. The user’s bandwidth, CPU load and video player resolution on the page. To be able to stream adaptively you need to be able to stream different versions of a video. Each variant is of different quality, has a different bitrate and potentially has a different codec or resolution. Think of it as progressive enhancement in web development. The simplest stream always works and based on the features you have (in this case, CPU power, bandwidth, resolution), you get a nicer looking video stream."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Each adaptive video is also joined by an index file that specifies predefined segments of the video. In the HLS standard these segments are usually 10 seconds long where in MPEG-DASH we use 1 second. There is also a master playlist that points to the available video variations with additional information about each one."}]},{"type":"element","tag":"h4","props":{"id":"an-audio-playlist-adaptation"},"children":[{"type":"text","value":"An audio playlist adaptation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s pretty cool that dynamic video streaming is based on the spec from the M3U8 audio playlist. M3U8 was originally designed for audio files, such as MP3, but nowadays it is commonly used to point media players to audio and video sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An adaptive streaming video player uses the playlist information to decide which of the available video variations fits the user’s network conditions, CPU load or resolution best. It can switch to another source at each 10 second segment (these segments can also be shorter, see examples below) if the network conditions change."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This approach works well to minimise bandwidth use and optimise it for a smooth playback for everybody who watches the video stream. It can also be used the other way around, if the streaming service is completely overloaded it can send a video stream with a smaller bitrate or resolution to the viewer."}]},{"type":"element","tag":"h3","props":{"id":"about-hls-and-mpeg-dash"},"children":[{"type":"text","value":"About HLS and MPEG-DASH"}]},{"type":"element","tag":"h4","props":{"id":"hls"},"children":[{"type":"text","value":"HLS"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"HLS was originally created by Apple to provide video for the iPhone, but now it’s a common format used across HTML5 web applications. You’ll need to encode your video with H.264 or HEVC/H.265 codecs, which can be decoded by all major browsers. With HLS, the video is chopped up into 10 second intervals and sent to the user."}]},{"type":"element","tag":"h4","props":{"id":"mpeg-dash"},"children":[{"type":"text","value":"MPEG-DASH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MPEG-DASH is the latest HLS competitor. It was originally created to be an alternative to HLS. It has a few advantages over HLS, mainly because it is open-source. This means the media content publisher community as a whole can contribute to its changes and updates. MPEG-DASH is globally supported and codec agnostic, which means that you can encode video without worrying about codec support. It has lower latency than HLS. It's playlist file is an "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".MPD"}]},{"type":"text","value":", which is an "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"XML"}]},{"type":"text","value":" format."}]},{"type":"element","tag":"h3","props":{"id":"doing-it-yourself"},"children":[{"type":"text","value":"Doing it yourself"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deliver videos using adaptive streaming you must generate multiple video versions, add an index file per variant and add a master playlist. The formats and encoding for HLS and MPEG-DASH are different for each of these files. If you want to stream using both HLS and MPEG-DASH formats you need to double the effort for every video you want to deliver. Additionally, for MPEG-DASH, the best practice is to deliver the audio and video separately. This stuff is complex and time consuming."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you are a developer who likes to get into the nitty gritty of "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"ffmpeg"}]},{"type":"text","value":" you can deep dive and create all sources for HLS and MPEG-DASH yourself."}]},{"type":"element","tag":"h4","props":{"id":"diy-steps-for-mpeg-dash"},"children":[{"type":"text","value":"DIY steps for MPEG-DASH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MPEG-DASH is simplest to do yourself. Let's give it a go!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Imagine we have a video file called "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"video.mp4"}]},{"type":"text","value":". To make sure we can adaptively stream the video we need to create video files with different bitrates and an audio file. "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Beware that this is a simplified version for illustration purposes. In real life "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"ffmpeg"}]},{"type":"text","value":" has many quirks based what video you give it."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 1: extract the audio"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Extract the audio track:"}]},{"type":"element","tag":"pre","props":{"code":"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 2: extract and re-encode the video track"}]}]},{"type":"element","tag":"pre","props":{"code":"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The video is encoded using H.264 codec. This forces to have a key frame every 24 frames, in this case, every second. This allows the video to be segmented in chunks of 1 second. The bitrate is evaluated according to the buffer size, so in order to be sure the encoding is close to the requested rate, the buffer size should be lower than the bitrate."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 3: generate the MPD file"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We now have one audio file and five video files. A Media Presentation Description (MPD) file has to be created. An MPD file functions as an index referencing the different video and audio tracks with their bitrate, size and how the segments are ordered."}]},{"type":"element","tag":"pre","props":{"code":"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The -dash option sets the duration of each segment to one second."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to preparing adaptive streaming content MP4Box can do a lot more. So much more in fact that it's best to just read more "},{"type":"element","tag":"a","props":{"href":"https://github.com/gpac/gpac/wiki/MP4Box","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 4: configure your webserver"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Make sure your webserver understands "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".mpd"}]},{"type":"text","value":" files by adding the following mime type: "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"application/dash+xml"}]},{"type":"text","value":" to its config."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 5: make sure your video player understands adaptive streaming"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Implement "},{"type":"element","tag":"a","props":{"href":"https://github.com/Dash-Industry-Forum/dash.js","rel":["nofollow"]},"children":[{"type":"text","value":"dash.js"}]},{"type":"text","value":" into your video player or build a custom video player around dash.js."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Concluding"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Obviously, doing this at scale or as a slightly less technical user this process is not realistic. You'll want to automate this completely."}]},{"type":"element","tag":"h4","props":{"id":"enter-cloudinary"},"children":[{"type":"text","value":"Enter: Cloudinary"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to being market leader in image delivery Cloudinary also provides features for video: from dynamic streaming profiles to cropping the subject perfectly on different video ratios. They even use AI to generate captions for muted videos or meaningful previews."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Today we are discussing the dynamic streaming service they offer. Cloudinary has created "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/video_manipulation_and_delivery#adaptive_bitrate_streaming_hls_and_mpeg_dash","rel":["nofollow"]},"children":[{"type":"text","value":"smart pre-defined"}]},{"type":"text","value":" streaming profiles to help you out. A streaming profile holds a set of video variation definitions with different qualities, bitrates, and codecs. For example, the one profile specifies 10 different variations ranging from extremely high quality to audio-only. You can also create "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/admin_api#adaptive_streaming_profiles","rel":["nofollow"]},"children":[{"type":"text","value":"custom profiles"}]},{"type":"text","value":" through their admin API."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once you have selected a profile, you upload your video file with an eager transformation that instructs the system to generate all the required files for the requested profile in either HLS or MPEG-DASH format. If you want to deliver both formats, add two "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/transformations_on_upload#eager_transformations","rel":["nofollow"]},"children":[{"type":"text","value":"eager transformations"}]},{"type":"text","value":" within your upload command."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This upload code is for the Node.js SDK."}]},{"type":"element","tag":"pre","props":{"code":"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '',\n public_id: '', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '',\n public_id: '', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that the file has been uploaded, it generates a bunch of different video and audio streams. These streams are represented in the playlist files below."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For the HLS version of the video this is what comes out as the m3u8 playlist file:"}]},{"type":"element","tag":"pre","props":{"code":"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For the MPEG-DASH version of the video this is what comes out as the MPD playlist file (I have shortened the file for readability):"}]},{"type":"element","tag":"pre","props":{"code":"\n \n \n \n /dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n /dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\n \n \n \n /dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n /dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that we have the playlist files and all the video streams we can either build our own fancy video player that understands dynamic streaming or we go for the "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/cloudinary_video_player","rel":["nofollow"]},"children":[{"type":"text","value":"Cloudinary player"}]},{"type":"text","value":". In this case I suggest we use the Cloudinary player as it works out of the box. Check out the code sandbox for a very simple vanilla JavaScript example of loading the player for both HLS and MPEG-DASH."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Try throttling your connection and see the differences in quality. To do this, open your web developer tools (assuming you use chrome), open the network tab and select a different connection type in the dropdown next to the \"preserve log\" and \"Disable cache\" checkboxes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Cloudinary video player is based on "},{"type":"element","tag":"a","props":{"href":"https://videojs.com/","rel":["nofollow"]},"children":[{"type":"text","value":"videojs"}]},{"type":"text","value":" and has both the HLS and MPEG-DASH plugins installed by default. In the code sandbox below you'll see both the HLS and the MPEG-DASH version. Beware that the HLS version has better support for showing different statistics than the MPEG-DASH version."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See the code here: "},{"type":"element","tag":"a","props":{"href":"https://codesandbox.io/s/white-cherry-g4ixt","rel":["nofollow"]},"children":[{"type":"text","value":"https://codesandbox.io/s/white-cherry-g4ixt"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"build-it-yourself-or-use-cloudinary","depth":2,"text":"Build it yourself or use Cloudinary","children":[{"id":"how-adaptive-video-delivery-works","depth":3,"text":"How adaptive video delivery works"},{"id":"about-hls-and-mpeg-dash","depth":3,"text":"About HLS and MPEG-DASH"},{"id":"doing-it-yourself","depth":3,"text":"Doing it yourself"}]}]}},"_type":"markdown","_id":"content:4.writing:how-to-dynamically-stream-video.md","_source":"content","_file":"4.writing/how-to-dynamically-stream-video.md","_extension":"md"},{"_path":"/writing/uniform-is-nuxt-3-read","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Uniform is Nuxt 3 ready","description":"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with Vue...","id":1405730,"slug":"uniform-is-nuxt-3-read","date":"2023-03-18T13:10:06Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96gzr0p69e9frwbj3i8w.png","canonical_url":"https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3","tags":["webdev","javascript","nuxt","vue"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with "},{"type":"element","tag":"a","props":{"href":"https://blog.vuejs.org/posts/vue-3-as-the-new-default.html","rel":["nofollow"]},"children":[{"type":"text","value":"Vue 3"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"https://v3.nuxtjs.org/","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt 3"}]},{"type":"text","value":". "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nuxt 3 is fast approaching GA. To ensure that Vue.js enthusiasts can build next-generation web experiences with the awesome features offered by Nuxt 3, our new SDK fully supports all Uniform capabilities: from no-code presentation management by Uniform Canvas, complete with web-socket-based live previews, to edge-side personalization and A/B testing through Uniform Context. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With the Nuxt 3 Nitro engine, developers can now run an entire site on the edge or combine personalization on the edge with delivery of the remaining content in SSG mode through a CDN. Even for highly dynamic pages, the latter choice results in blazing-fast page loads. We’re talking sub 50 milliseconds!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nuxt 3 is truly game changing, and Uniform takes full advantage of that with an easy-to-install SDK that follows Nuxt’s no-config ethos."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Features of Uniform’s Nuxt 3 module"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is what the module can do:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Auto-registers the required Uniform components."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Auto-creates a Uniform Canvas client."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Creates a Uniform Context instance (for personalization) and makes it available throughout the app without the need for a wrapping component."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Builds a handy "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"$useCompositionClick to copy"}]},{"type":"text","value":" composable on top of Nuxt's "},{"type":"element","tag":"a","props":{"href":"https://v3.nuxtjs.org/api/composables/use-async-data","rel":["nofollow"]},"children":[{"type":"text","value":"useAsyncData"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Displays live previews seamlessly."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Monitors query-string changes, which Nuxt doesn't do by default."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Benefits of using Uniform with Nuxt 3"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As a rule, no single system offers all the functionalities you need for an app. Instead, multiple systems must work together for the app to run smoothly. A "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architecture"}]},{"type":"text","value":" is one in which you can pick and choose the components for your technology stack, but getting them to work together well can be challenging. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Modern headless systems can connect with other systems as part of a composable architecture. However, using some composable services doesn’t give you a full composable architecture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Real composability means that you can add or remove components easily as your needs evolve. That’s what Uniform offers. With Uniform’s composition layer, you can build and maintain a modern stack with composable services without tightly coupling them. As a result, developers, content creators, and marketers alike can create and deliver experiences quickly, independently and without vendor lock-in."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers can add or change services any time, assured that their tools will work well together without the need for time-consuming and expensive replatforming and reintegration."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content creators can build engaging experiences with a consistent, no-code approach through which they can readily leverage all the tools in their stack."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Marketers can promote conversions through intent-based personalization and experimentation mechanisms that integrate with customer data and that are simple and intuitive for implementation by developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"As internal needs or consumer tastes change, the organization can be agile enough to meet these challenges, without extensive background work that doesn’t deliver direct value to end users."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:uniform-is-nuxt-3-read.md","_source":"content","_file":"4.writing/uniform-is-nuxt-3-read.md","_extension":"md"},{"_path":"/writing/digital-experience-platforms-the-old-versus-the-new","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Digital experience platforms: the old versus the new","description":"Digital experience platforms (DXPs) and the more modern digital experience composition platforms...","id":1405729,"slug":"digital-experience-platforms-the-old-versus-the-new","date":"2023-03-18T13:05:48Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1tc0ds73edh613y9yg6.png","canonical_url":"https://uniform.dev/blogs/digital-experience-composition-dxc/difference-between-dxp-and-dxcp","tags":["architecture","dxp","composable","webdev"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital experience platforms (DXPs) and the more modern "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platforms (DXCPs)"}]},{"type":"text","value":" share the same goal of making it easier for business users to create visually dynamic, personalized digital experiences. A major contrast is that DXCPs orchestrate solutions and technologies from different vendors. On the other hand, even though DXPs call themselves composable, they lock brands into a single vendor and one way of doing things at the expense of other capabilities."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To help brands decide whether to switch from a DXP to a DXCP, we explain below their key differences. More details are available in this video created by Headless Creator."}]},{"type":"element","tag":"h3","props":{"id":"dxcps-are-far-more-cloud-native"},"children":[{"type":"text","value":"DXCPs are far more cloud native"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A major disadvantage of DXPs is that their foundation is a content management system (CMS), which contains integrated add-ons or bolted-on tools along with such platforms as a digital asset management (DAM) and a product information management (PIM) system. Consequently, developers must manually apply updates, manage the hosting, customize the platform, and scale up the hosting to accommodate traffic spikes, such as those that occur around busy shopping days like Black Friday in the U.S. and Europe. The alternative is to hire the vendor to do all that at an additional cost."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Conversely, DXCPs and the headless tools they manage are all hosted in the cloud and cloud native, which means that updates can not only occur automatically, but also scale elastically as demand rises and falls. Also, since DXCPs are tech agnostic and API-first, business users can work with multiple tools there. They can do that in DXPs, too, but only to a limited extent, let alone that in venturing outside that vendor’s proverbial walled garden, they give up features and capabilities."}]},{"type":"element","tag":"h3","props":{"id":"dxcps-are-more-than-a-data-aggregator"},"children":[{"type":"text","value":"DXCPs are more than a data aggregator"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform views DXCPs as a way for brands and their developers to select advanced, API-first vendors and loosely couple those vendors’ tools together. Furthermore, thanks to DXCPs’ tooling, business users can work across the many integrated tools in a holistic, unified workflow. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Additionally:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCPs are more than a data aggregator. Even though effective tools are available for stitching APIs into a cohesive model for access and use by developers, those tools do not deftly manage experiences as DXCPs do. After all, API aggregators are meant for access by developers through code only, not for business users, whose expertise rests with a low- or no-code editing environment, in which DXCPs also specialize. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCPs are different from a CMS because, unlike a CMS that requires that all content be routed through it for a tight coupling of technology, they keep content and data sources on a level playing field and maintain the loose coupling so that you can replace and add capabilities as necessary with no technology lock-in. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In short, the entire focus of DXCPs is to accord teams freedom to collaborate smoothly, and for brands to switch tools without impacting the way other tools work and the overall web experience."}]},{"type":"element","tag":"h3","props":{"id":"dxcp-protects-domain-data"},"children":[{"type":"text","value":"DXCP protects domain data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When building webpages or experiences, developers need two types of data:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Domain data,"}]},{"type":"text","value":" which is core material, such as product models, that defines your brand across channels. For an events website, this data contains the names of the event spaces provided by your company, the dates, and the procedure for registration."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Design data,"}]},{"type":"text","value":" which is volatile, channel-specific material, such as your site’s colors and the way in which you can edit the display of week-by-week information. For an events website, for example, you can change page design or spotlight a feature with volatile data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In DXPs, both domain data and design data reside in the same CMS, potentially leading to a messy situation and a polluted content model. In DXCPs, the design data and domain data are separate, providing clean data workflows for innovation efforts and more system longevity."}]},{"type":"element","tag":"h3","props":{"id":"uniform-dxcp-readily-facilitates-transitioning-from-the-old"},"children":[{"type":"text","value":"Uniform DXCP readily facilitates transitioning from the old"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The primary function of composable frameworks like DXCPs is to enable both developers and business users to work seamlessly together, doing what they do best by leveraging the headless solutions that support them best. Composability also unlocks the potential of creating state-of-the-art, future-forward web experiences."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"dxcps-are-far-more-cloud-native","depth":3,"text":"DXCPs are far more cloud native"},{"id":"dxcps-are-more-than-a-data-aggregator","depth":3,"text":"DXCPs are more than a data aggregator"},{"id":"dxcp-protects-domain-data","depth":3,"text":"DXCP protects domain data"},{"id":"uniform-dxcp-readily-facilitates-transitioning-from-the-old","depth":3,"text":"Uniform DXCP readily facilitates transitioning from the old"}]}},"_type":"markdown","_id":"content:4.writing:digital-experience-platforms-the-old-versus-the-new.md","_source":"content","_file":"4.writing/digital-experience-platforms-the-old-versus-the-new.md","_extension":"md"},{"_path":"/writing/uniform-dxcp-the-what-why-and-how","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Uniform DXCP: the what, why, and how","description":"Nowadays, you’re hard pressed to find an application with all the functionalities you need for...","id":1405728,"slug":"uniform-dxcp-the-what-why-and-how","date":"2023-03-18T13:03:16Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0iccm5uux0ndu9ulnc2g.png","canonical_url":"https://uniform.dev/blogs/uniform-dxcp-the-what-why-and-how","tags":["cdn","edge","sitecore","headless"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nowadays, you’re hard pressed to find an application with all the functionalities you need for delivering personalized digital experiences. Even though with headless solutions, you can select the best options for your goals, you can, through composability, easily connect the applications that drive personalized experiences. Still, simply adopting headless technologies isn’t enough; you also need a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architecture"}]},{"type":"text","value":" that fosters innovation and a seamless authoring experience for business users. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The answer is Uniform "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"Digital Experience Composition Platform (DXCP)"}]},{"type":"text","value":", whose vendor-agnostic capabilities scale to your needs, enabling you to assemble, change, and reassemble your tools as requirements evolve. But what is Uniform DXCP and why does it exist? Read on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##What is Uniform DXCP?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform DXCP is a new, unique product category with which you can effortlessly integrate legacy and composable services with your design system and front end of choice. In particular, you can switch to and maintain composable systems without having to build and support the connections among those systems. In a composable architecture, that means adding and removing the tools without breaking your personalized, omnichannel digital experience. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Why is now the time to move beyond the modern tech stack?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Similar to a composer who arranges the notes of a musical score, you’re the composer of your project’s tech stack. Say, your stack comprises various tools—a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/headless-cms/uniform-for-headless-cms","rel":["nofollow"]},"children":[{"type":"text","value":"headless content management system (CMS)"}]},{"type":"text","value":", a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/uniform-for-headless-commerce","rel":["nofollow"]},"children":[{"type":"text","value":"commerce platform"}]},{"type":"text","value":", a digital asset management (DAM) system, and so on—from different vendors. By combining those technologies and hosting them on a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/sitecore/deliver-better-digital-experiences-with-a-cdn","rel":["nofollow"]},"children":[{"type":"text","value":"content delivery network (CDN)"}]},{"type":"text","value":", you render a webpage. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nonetheless, connecting headless tools with APIs doesn’t necessarily produce a high-quality or "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/headless-versus-composable-everything-you-need-to-know","rel":["nofollow"]},"children":[{"type":"text","value":"composable experience"}]},{"type":"text","value":". As your enterprise scales up, your business must grow as well, meaning that you must incorporate more and more applications into your tech stack, all of which are hard coded into one another through their app stores or your front-end technology. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What you end up with is a messy, unwieldy, and inflexible tech stack—a maintenance headache  for your developers. Not to mention that "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/switching-vendors-for-digital-architectures-without-replatforming","rel":["nofollow"]},"children":[{"type":"text","value":"replatforming"}]},{"type":"text","value":" or rebuilding your project from scratch can be nightmarish and expensive. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How do you transform your tech stack from a cacophony of integrations connected by endless "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/glue-code","rel":["nofollow"]},"children":[{"type":"text","value":"glue code"}]},{"type":"text","value":" into a composable architecture that bridges your tools into a harmonious experience? You do it with digital experience composition.  "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How do you transition from chaos to composable with DXCP"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With Uniform DXCP, you need not create and maintain the custom code that connects your APIs and front-end layers. Instead, you can compose and organize headless solutions in your tech stack without the exorbitant costs, laborious upgrades, and complexities. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here are the major benefits of moving to composable with Uniform DXCP: "}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Remember the messy tech stack we cited earlier? "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/the-mach-monolith","rel":["nofollow"]},"children":[{"type":"text","value":"Monolithic architectures"}]},{"type":"text","value":" require development of new features or investment in complicated integrations. Not so with Uniform DXCP, whose API-orchestration layer handles the connections among your digital experiences and the applications that power them."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"No more “publish and pray” moments. Uniform DXCP’s no-code orchestration layer accords business users an editor with which to drag and drop components wherever they want and preview the resultant display."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"In DXCP, your front end is unaware of your connections so no proprietary limitations exist, and you can select any front-end technology you desire. Whether you choose Java or PHP, your digital experience remains consistent and seamless."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCP offers a new paradigm for page creation around where data lives and how you manage that data. No more worries about product information being displayed outside the context of its intended design and user experience. With Uniform sitting on the end of your design data and keeping domain data intact, you’re free to deliver digital experiences through multiple services at scale. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How do you fuel your stack with digital experience composition?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After you’ve built a composable architecture in DXCP:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your developers can easily add features and swap out tools from the stack individually."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your stack stays organized with no need for those time-consuming, costly integrations that impede your speed to market."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your marketers can drag and drop the components they need to create personalized omnichannel experiences without developer assistance. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The result is less code, greater agility and flexibility, and a more smooth approach for handling orchestration and integrating new tools into your tech stack. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:uniform-dxcp-the-what-why-and-how.md","_source":"content","_file":"4.writing/uniform-dxcp-the-what-why-and-how.md","_extension":"md"},{"_path":"/writing/how-to-sniff-out-the-glue-monster","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to sniff out the Glue Monster","description":"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic...","id":1405727,"slug":"how-to-sniff-out-the-glue-monster","date":"2023-03-18T13:00:21Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8mwj68dscwvzuvcdd4y.png","canonical_url":"https://uniform.dev/blogs/how-to-sniff-out-the-glue-monster","tags":["javascript","architecture","composable","devops"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic platforms to "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architectures"}]},{"type":"text","value":", glue code that connects to systems or cleanses data has grown exponentially. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reality is, you as developers must connect headless systems for a cohesive, feature-complete architecture, but that’s a messy task. The amount of glue you must create hinges on deadlines, the potential need to switch systems later, and the answers to these questions:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you clean up that messy API response so its data fits the front end?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you adapt your front-end components to specific API output and add logic locally?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you separate domain data with design-related data, or mix up everything in data models in different headless systems?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue Code SPREAD","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5iPWgs3hiyQZb1O7cZECJt/671395cc3852d456f1dc02d34d6d5b2c/GlueCode_Blog_SPREAD.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Glue code is a nightmare of technical debt that leads to less innovation, more development effort, and, ultimately, higher expense on hidden requirements."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Types of glue"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue code Icon","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5n8VoHX3RPLBLFWg2IJsYP/f2e9ccc22bd7541b352b7bf19d24ffcb/GlueCode_Blog_Images_Glue_code_Icon.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else"},"children":[{"type":"text","value":"Code that queries a source or receives data that maps the input to fit something else. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example is code that queries an API endpoint and retrieves a huge yet incomplete dataset for the following steps:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Map the initial result into a more specific object. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enrich that object by querying another endpoint and add the result to the original. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Tidy up the code and create a final data set."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here’s a real-world use case: queries on a YouTube playlist and retrieval of the metadata on the videos there. The process runs as follows:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The code traverses the response to identify and arrange the video IDs in an array. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You query the YouTube video API for each video ID for all the needed data. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Given the massive amount of data that results, you go through the response for the exact data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the case of a less reputable source than YouTube or a legacy API, any changes could break the data structure you assume is returned. Not only that, since you have no inkling of the type of the returned data, your data-mapping code must be defensive. Some fields might be empty or even nonexistent sometimes. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Plus, placing all that code in your front end spells complexity. What to do when you’re building another front end like a mobile app or an Apple TV app? Do you duplicate the code in all the new channels?"}]},{"type":"element","tag":"h3","props":{"id":"polluting-stable-domain-data-with-volatile-design-data"},"children":[{"type":"text","value":"Polluting stable domain data with volatile design data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Generally, a data model for videos contains the following fields: "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"titleClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"descriptionClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"poster imageClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"durationClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"upload dateClick to copy"}]},{"type":"text","value":", and "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"video fileClick to copy"}]},{"type":"text","value":". But what to do if the product owner wants to highlight this video as “featured” for the week? You would add a “featured” checkbox to the data model and ask content editors to check “featured” in the CMS. In the front-end code, you would look for the “featured” flag and show a bigger version of the video card along with a boldfaced title. If the video appears in another context, like a search result or on another website, that “featured” flag has no meaning."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In time, you would add other checkboxes and dropdowns to show the content differently in various contexts, causing the content model to grow. At that point, if an architect who’s cleaning house removes a checkbox, multiple projects that leverage the video would crash and burn."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To sustain a setup with data models that are regularly polluted in that manner, you must build a plethora of defensive code that catches all the additional data. That’s how undesirable glue code and tech debt build up."}]},{"type":"element","tag":"h3","props":{"id":"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers"},"children":[{"type":"text","value":"Creating glue layers by vendors to stay sticky (pun intended) with customers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue Code STICKY architecture","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5zwPAAafgm4qZpoU9H2Bbw/8d4928142367cd19f8b76528bfc61ef0/GlueCode_Blog_STICKY.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The more “official” glue vendors add to a composable system, the harder it is for their customers to perform updates, or switch or add components. The more tech debt, the more support hours vendors can sell. Also, since modern, more agile vendors are bound to outpace the less competitive ones in time, the wise thing for the latter to do is adopt solutions that offer hyperflexible systems at lower cost, enabling their customers to focus on storytelling and solving business problems for their audience without sticky glue."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Ways to deglue"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Unglue Icon","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/16F6FELfCSkZjE8cCuRauw/2c81553462dd1d16be36b2a56dffd443/GlueCode_Blog_Images_Unglue_Icon.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The new product category digital experience composition facilitates degluing. Typically, you create pages on "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platforms (DXCPs)"}]},{"type":"text","value":" with data from numerous headless sources without having to understand how those sources work. With the DXCP hosting a brand’s design system in page components, you can drag and drop them onto the page and connect data from external sources to them. No need to write connection code at all. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXCPs map component properties to specific data fields of APIs. That means you could add to your video component an image from a DAM, a title and description from YouTube, and viewer metadata from an ERP system. Want to feature the video somewhere? Simply add a checkbox in the DXCP in the context of the component in question without affecting the data model of external systems. As a last step, add the data attached to the component to the CDN edge for caching. Alternatively, grab the information on the data source and query it yourself. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The front end contains a light and fast SDK that can query component compositions in the CDN-edge cache. With the content mapped explicitly to your component properties in the DXCP, no data mapping is required. And you are now deglued!—with no need to build code to straighten up data or query external systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Want to add a tiny bit of glue nonetheless? The SDK also contains hooks through which you can enrich or map data from the API before sending the data to the components."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the meantime, content editors can take advantage of the DXCP’s live-preview feature to contextually edit the website by connecting new headless sources and mapping API responses to the components you created. Updating a CMS or adding a legacy source takes only a few clicks, code free. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, content editors can manually type in content on the DXCP and, later on, attach a CMS or commerce system that replaces the static copy with dynamic pointers from component fields to API responses. Again, no code is required to accommodate those functions."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else","depth":3,"text":"Code that queries a source or receives data that maps the input to fit something else. "},{"id":"polluting-stable-domain-data-with-volatile-design-data","depth":3,"text":"Polluting stable domain data with volatile design data"},{"id":"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers","depth":3,"text":"Creating glue layers by vendors to stay sticky (pun intended) with customers"}]}},"_type":"markdown","_id":"content:4.writing:how-to-sniff-out-the-glue-monster.md","_source":"content","_file":"4.writing/how-to-sniff-out-the-glue-monster.md","_extension":"md"},{"_path":"/writing/the-future-of-managing-projects-at-agencie","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of managing projects at agencies","description":"Calling for a revolution in how agencies run tech projects I spent a lot of time working...","id":1405725,"slug":"the-future-of-managing-projects-at-agencie","date":"2023-03-18T12:56:10Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipu6a76iegjp4d19mb0u.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/the-future-of-managing-projects-at-agencies","tags":["composable","architecture","agency","process"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"calling-for-a-revolution-in-how-agencies-run-tech-projects"},"children":[{"type":"text","value":"Calling for a revolution in how agencies run tech projects"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I spent a lot of time working through messy production processes during my years at digital agencies. From single campaigns to building 800+ websites for a brand and its sub-brands, easier processes would have been better for the final result and my hairline. I’m so excited to work with new technology that will change the game for managing agency processes—making everything from delivery to collaboration much easier and faster."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have no illusions that I can fix everything—but I hope that you read this with an open mind and see that a better way is possible. Agency processes are ever-changing, and things always seem to fall apart as deadlines near. Nonetheless, by following what I describe below, you can deliver faster from day one and show results to clients for better feedback, all while setting up brands with a future-proof architecture. And yes, you can stay agile at the same time!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Why agencies embracing composable architectures face challenges"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Agencies that start working with "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architectures"}]},{"type":"text","value":" quickly see the benefits during the pitch stage, but when the work starts, so do the problems—mainly when you connect services and when content editors or marketers start working. Because projects are complex, agencies generally sell discovery phases, workshops, and agile methodologies. That’s a great practice, but one that also runs face-first into the challenge of building composable projects at scale."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here are two key issues:"}]},{"type":"element","tag":"h3","props":{"id":"the-way-agencies-work-makes-parallel-collaboration-difficult"},"children":[{"type":"text","value":"The way agencies work makes parallel collaboration difficult."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, choosing a CMS or front-end framework depends on the discovery phase or finalization of a client contract. When a CMS or a design is ready, front-end developers can start building the interface, and back-end developers can commence data modeling. QA always happens at the end, inevitably spilling over into the next sprint."}]},{"type":"element","tag":"h3","props":{"id":"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way"},"children":[{"type":"text","value":"The architecture is code-first, i.e., composed of glue code that works in only one way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As you scale that up, things get very painful very fast. "}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Abstract, code-first systems aren’t built for content editors. At best, they tolerate them. Given that it’s hard to deliver great work while constantly fighting with your own tools, people become upset and less productive, or they leave. Either result can cause major project delays."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers are constantly involved with the publication process because content editors need technical support to create experiences. That means that developers are kept from building new, value-adding features and pursuing innovation, and every sprint is filled with unpredictable disruption."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A tech stack connected through tightly-coupled integration code is way worse than the legacy monoliths. If things go wrong, no sole organization is at fault. Instead, the people with the overall responsibility—the agency—are held accountable."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"That glue code I mentioned before? It sticks "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"hard"}]},{"type":"text","value":". You must prepare for pain when you try to replace a single headless source in a web of hard-integrated sources and front-end code. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There is a better way, but it requires a major shift in your thinking."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How a great DXCP unlocks parallel workflows"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Time-to-value is much more critical than time-to-market. Going to market quickly with a terrible product doesn’t do much more than damage your reputation and annoy customers. The fact you least did it quickly won’t be much consolation to anyone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The secret for time to value is working more in parallel. Of course, that’s much easier said than done for difficult tasks like ideation of page composition, component definition, data-model design, CI/CD setup, and, concurrently, choice of the front-end framework. Fortunately, cool new tools are around to make it much easier. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To work in parallel, first, integrate design-related data into your process with a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":". Design data presents your content in a certain way in the context of each page and potentially for each audience. For example, a featured product shows as being featured because you tell the page to feature it in that specific way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On the other hand, the product data comes from your commerce engine, which just serves the product info and has no knowledge of whether the product is featured on a page. The DXCP orchestrates and links your design to the external source(s) that hold your data. This crucial context step allows you to work effectively in parallel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note the difference between domain data and design data. With a DXCP, you design pages based on the components that make up a page. You can link each component to a resource, i.e., an external API like a headless CMS, DAM, PIM, or a legacy system. Your domain data resides in those systems. You then bind the external API data to parameters and fields on the components in the DXCP to create the final experience for your audience on a channel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can set up connections with DXCP so that the system acts as an API data aggregator that loosely couples to external sources. Additionally, you can establish access rules that define which users can add resources and bind to components. For example, content editors could add the Instagram API and feed that data to a component for campaign pages without developer assistance. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once resources are bound, API results are cached at the CDN edge for fast and easy querying. Developers only need to connect to the CDN endpoint to access the data from all the sources that channel data to the components on the page."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even without a CMS, content editors can fill in the component fields with content, accelerating the UX and prototyping phases of a project. Once a CMS is in place, the content connects as a resource to a component without the need to rebuild the component. For efficiency, you can configure the fields to be dynamic. No coding is required."}]},{"type":"element","tag":"h3","props":{"id":"how-a-dxcp-enables-parallel-collaboration"},"children":[{"type":"text","value":"How a DXCP enables parallel collaboration"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you know what kind of components you need or have a library like "},{"type":"element","tag":"a","props":{"href":"https://www.kickstartds.com/","rel":["nofollow"]},"children":[{"type":"text","value":"kickstartDS"}]},{"type":"text","value":" or "},{"type":"element","tag":"a","props":{"href":"https://tailwindui.com/","rel":["nofollow"]},"children":[{"type":"text","value":"Tailwind UI"}]},{"type":"text","value":", you can configure them in the DXCP and start composing pages—with no need for a CMS initially. Simultaneously, the back-end team can select the headless tool while the front-end team can choose a front-end framework and start querying the composed pages. The QA team can start testing the front end as soon as the first few pages have been created with the component library."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Since the DXCP does not dictate what kind of hosting or CI/CD stack is needed, the DevOps team can work on the setup while the rest of the process is proceeding. Once you install the CDN integration, anyone with the appropriate access privileges can handle releases. Can’t find the prebuilt integration? Build your own, or just add a few webhooks for communication."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On top of that, DXCPs also feature a project map as a basis for creating pages and subpages. The product owner can start building user journeys in the same system while all the other operations are going on. Say goodbye to journey spreadsheets because you can now use the tool you will also use when teh project is in production."}]},{"type":"element","tag":"h3","props":{"id":"how-to-ensure-the-architecture-is-divisible-and-maintainable"},"children":[{"type":"text","value":"How to ensure the architecture is divisible and maintainable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Due to the nature of DXCP, you don’t need to interconnect external tools; they all talk directly to the DXCP. Likewise, changing or adding headless sources does not affect developers in nearly the same way. Without developer involvement in the no-code editor, universal previews, and project maps, content editors are much more productive. Business users don’t need to ‘publish and pray’ when they build a page from multiple sources—it’s all right there."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, since the no-code editor integrates flawlessly with external sources and normalizes their interfaces, content editors don’t need to understand how those systems work—making it far easier to onboard new team members. Add that to the freedom of grouping components together and easily personalizing those sources; business users are empowered to own their workflows and results without depending on overworked devs. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given that DXCP is front-end, hosting, and CDN agnostic, developers can use the tools they love, which makes the most sense for the job at hand. No more compromising with the whims of legacy tech! Even though DXCP has an opinion on the direction of the architecture, once developers go down that road, they have complete freedom to do their job in the way they prefer."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How DXCP transforms the project-development process"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Adopting DXCP can revolutionize how you build projects—if you let it. With traditional blockers out of the way, teams can accomplish more in parallel and show value much faster. For all that composable architecture at scale is generally messy and chaotic, forcing agencies and brands to work around issues never seen before: digital experience composition adds structure while staying tech-agnostic and accelerates time-to-value."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter how much things change, some things stay the same. The agencies that best embrace new technologies and new mindsets to maximize their impact will gain an edge in the market. As the market gets less certain, finding ways to deliver more value for clients faster and effectively showcase it will be crucial. When that also creates a platform that will deliver in the long term and position your agency as a key strategic partner—that’s where the magic happens. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"calling-for-a-revolution-in-how-agencies-run-tech-projects","depth":2,"text":"Calling for a revolution in how agencies run tech projects","children":[{"id":"the-way-agencies-work-makes-parallel-collaboration-difficult","depth":3,"text":"The way agencies work makes parallel collaboration difficult."},{"id":"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way","depth":3,"text":"The architecture is code-first, i.e., composed of glue code that works in only one way."},{"id":"how-a-dxcp-enables-parallel-collaboration","depth":3,"text":"How a DXCP enables parallel collaboration"},{"id":"how-to-ensure-the-architecture-is-divisible-and-maintainable","depth":3,"text":"How to ensure the architecture is divisible and maintainable"}]}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-managing-projects-at-agencie.md","_source":"content","_file":"4.writing/the-future-of-managing-projects-at-agencie.md","_extension":"md"},{"_path":"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Fast, personalized pages with Vercel Edge Middleware and Uniform","description":"To maintain an engaging relationship with your audience and increase conversions to your site, you...","id":1405723,"slug":"fast-personalized-pages-with-vercel-edge-middleware-and-uniform","date":"2023-03-18T12:49:56Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1yp1gg5ldu4y8tozle7.png","canonical_url":"https://uniform.dev/blogs/personalization/blazing-fast-personalized-pages-with-vercel-edge-middleware-and-uniform","tags":["performance","personalization","vercel","edge"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To maintain an engaging relationship with your audience and increase conversions to your site, you need personalization. However, creating personalized experiences is technically challenging. Most personalization techniques involve dynamic rendering and an origin server that holds personalization rules for end-users—a slow approach that often negates the conversions gained through personalization."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Among the many moving parts to consider, performance and scalability are tough nuts to crack. Fortunately, companies like Vercel, which recently released "},{"type":"element","tag":"a","props":{"href":"https://vercel.com/docs/concepts/functions/edge-middleware","rel":["nofollow"]},"children":[{"type":"text","value":"Edge Middleware"}]},{"type":"text","value":", make those problems readily solvable for developers. With Vercel in place, you only need to choose the right tech to personalize at the CDN edge without having to grapple with the one thing that slows things down: the origin server."}]},{"type":"element","tag":"h3","props":{"id":"the-benefits-of-edge"},"children":[{"type":"text","value":"The benefits of edge"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Vercel offers familiar tech to developers: it’s all JavaScript based. With Edge Middleware, developers have the tools to make great things happen that they could not before. All the dynamic tasks that typically occur on an origin server can now happen near end-users, leading to faster page loads and automatic scaling out of the box. Not only that, Edge Middleware have user data that’s handy for personalization: country, region, and the device in use."}]},{"type":"element","tag":"h3","props":{"id":"the-personalization-process-at-the-edge"},"children":[{"type":"text","value":"The personalization process at the edge"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By eliminating the origin server that is typically far away from end-users and bringing the dynamic rendering closer with Edge Middleware, you can personalize with high performance and in a decentralized manner. The only way to personalize without a central brain that knows all the personalization rules is to bring that brain into the software as a first-party tool. This is how that works:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create and store the configuration rules, i.e., all the "},{"type":"element","tag":"a","props":{"href":"https://docs.uniform.app/capabilities/personalization","rel":["nofollow"]},"children":[{"type":"text","value":"criteria for personalization"}]},{"type":"text","value":", in the codebase as a manifest JSON file at build time."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Store variations of the personalized content in the codebase at build time. Since a headless CMS is generally in use, those variations are tiny JSON models in the form of components."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The Edge Middleware has a tracker that monitors user behaviors, which are signals that users give off by doing something on the site. The Edge Middleware awards a score to the personalization criteria configured in step 1. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The tracker automatically creates a profile of user actions and, based on the scores awarded against the various criteria, displays the right content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You can render the content via the Edge Middleware or in the front end at hydration time."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The above approach to personalization is how Uniform Context works. Combining Edge Middleware rendering of personalized content with JavaScript hydration for subsequent page loads renders highly dynamic pages within ~50 milliseconds only. The approach is to initially render all the pages statically (SSG/Jamstack) and ensure that the Edge Middleware knows which parts it can personalize. While serving a page, the Edge Middleware checks if personalization is needed and, if so, fills the identified components with the correct personalized content."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"uniform-vercel-edge-middleware","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/4lvoQsz6WNCbJXIWQVQJSI/b36e13c87c86ca668fea6adf3da2b078/uniform-vercel-edge-middleware.svg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another benefit of the Vercel edge is that at the edge level, the CDN knows a lot about the end-users: their location, city, device, browser version, etc. Thus, Uniform Context can prepersonalize pages with Edge Middleware according to the location or device information from the Vercel CDN."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Want to try that out for yourself? You’ll find all the details in Uniform’s "},{"type":"element","tag":"a","props":{"href":"https://docs.uniform.app/integrations/cdn/vercel/personalization","rel":["nofollow"]},"children":[{"type":"text","value":"documentation on Vercel’s edge-side personalization"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To recap, by combining Uniform Context on Edge Middleware with statically rendered pages (SSG/Jamstack), you can create highly dynamic, personalized pages that load in less than a minute. In the past, Uniform offered dynamic personalization features through Vercel ESI. Edge Middleware now gives you a much more flexible and intuitive model for implementing personalization at scale. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-benefits-of-edge","depth":3,"text":"The benefits of edge"},{"id":"the-personalization-process-at-the-edge","depth":3,"text":"The personalization process at the edge"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","_source":"content","_file":"4.writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","_extension":"md"},{"_path":"/writing/the-move-from-monolithic-to-composable-architectures","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The move from monolithic to composable architectures","description":"Success in business can be attributed to many factors, notably team talent and efficacy of products...","id":1399554,"slug":"the-move-from-monolithic-to-composable-architectures","date":"2023-03-13T20:42:55Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56u97go8avwyexrr01nx.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/composable-architectures-are-the-future-of-the-digital-sphere","tags":["mach","webdev","composable","monolith"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Success in business can be attributed to many factors, notably team talent and efficacy of products or services. What also counts in this digital age are immersive and performant online experiences. Realistically, delivering engaging experiences is a never-ending undertaking. To avoid lagging behind rivals, brands must do that time and again in all their interactions with consumers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can you adapt and iterate as rapidly as necessary? Can you quickly respond to current trends and launch digital experiences without tech support? When it comes to digital capabilities and speed to market, technology makes all the difference. This post explains why the industry is moving from monolithic to composable architectures and how those two architectures can actually work together."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##What are monolithic applications?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Built as a single unit, monolithic applications (aka monolithic architectures) are all-in-one, self-contained suites with robust features. Known as legacy systems, monolithic applications occupy a long-standing place in today’s makeup of businesses as the easy way to acquire digital capabilities. You go through one purchase for all your business needs and sign a contract with one solution provider, who would make it all happen and support you along the way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Such a mono approach might not be the best for the long haul, however. In a free-market economy, monopolies are generally frowned upon because of the guardrails put up by those dominant players, who would enforce rules and regulations to stifle or eliminate competition altogether. What’s more, monopolies have no incentives for innovation or improvements in efficiency."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That’s not a direct comparison to monolithic solutions in tech per se since competition does exist among tech solution providers. Rather, a brief assessment of monopolies is helpful context for why stand-alone architectures aren't ideal for businesses. If one vendor has all the say about the ways your tech stack is used and adapted, you are limited in many ways."}]},{"type":"element","tag":"h2","props":{"id":"why-are-monolithic-applications-not-the-way-forward"},"children":[{"type":"text","value":"Why are monolithic applications not the way forward?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A pro-con analysis shows real—or at least perceived—benefits in relying on a monolithic architecture for your tech stack. If your IT team is well versed in the vendor along with its code and operating system, an established ease of use exists. Furthermore, it feels simple to keep and manage everything in one place and to have, theoretically, one source of truth, with all the tools housed together under the purview of one provider. Not to mention that you have one all-knowing point of contact or support team to call on in case of issues."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nonetheless, given the future of business and the digital experiences consumers demand, the cons of monolithic applications far outweigh the pros in three key areas:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Customization"}]},{"type":"text","value":". Limited is the ability to tailor monolithic applications to meet business needs. Also, even though those applications offer wide-reaching features, you might not ever use some of the features. And you’re at the whims of the monolith’s technology roadmap for innovation. For example, something you need to meet customer needs might not be available until the application’s next software update, potentially months away. In addition, in contrast to today’s fast market changes, upgrades can be time-consuming and slow with a need for developers to make changes or adaptations. With those modifications come complexities, third-party add-ons, or new applications that developers must painstakingly build themselves."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Agility"}]},{"type":"text","value":". Trends change and new opportunities emerge more rapidly than monolithic applications can keep up. Adaptability becomes a struggle, especially if you’re locked into the suite on contract."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Scalability"}]},{"type":"text","value":". Businesses that aspire to be fast-moving and competitive are hindered by monolithic technologies that are difficult to scale. Accordingly, growth is hampered because of the slow and heavy lift for developers to morph one monolithic architecture into an all-things-for-all-people stack."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another hurdle businesses face is adapting a monolithic application to be composable or as a “"},{"type":"element","tag":"a","props":{"href":"https://dev.to/timbenniks/the-mach-monolith-2knd","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":".” Rather than replatforming or ditching an established monolithic architecture to build a new microservices-centric one, brands apply API-first and composable solutions to an existing framework by integrating a host of composable products. Doing so could seriously muddy the waters, however, creating a beast of an architecture that’s not composable, sustainable, or agile."}]},{"type":"element","tag":"h2","props":{"id":"how-can-monoliths-and-composable-work-together"},"children":[{"type":"text","value":"How can monoliths and composable work together?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Legacy monolithic architectures can, in fact, work with composable applications through digital experience composition platform (DXCP), which acts as composable’s opinionless foundation by doing the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offer the prebuilt system integrations and tools business users need, lightening the burden of innovation through new features."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enable teams to merge their legacy platform with a composable approach, orchestrating best-of-need tools and offering a user-friendly interface for developers and practitioners alike."}]}]},{"type":"element","tag":"h2","props":{"id":"how-does-dxcp-help-make-composable-mainstream"},"children":[{"type":"text","value":"How does DXCP help make composable mainstream?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Without doubt, monolithic architectures are no longer ideal for brands that are focused on creating digital experiences that drive impact and conversions. Composable architectures give control of the experience-creation process to the brands responsible for the end results, instead of one tech vendor."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Despite the promise of future-ready composable stacks, building them can be a slow and expensive process, with weeks of custom glue code needed to integrate the multiple services. They are often also incredibly frustrating for marketing teams, content writers, graphic designers, and other business users, as previously simple tasks require multiple tools and developer support."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is where DXCP and companies like Uniform enter the picture. With rapid integration tools that dramatically speed system build and maintenance and powerful no-code interfaces for marketers and other business users to create engrossing experiences in a single, integrated environment using every tool they need."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-are-monolithic-applications-not-the-way-forward","depth":2,"text":"Why are monolithic applications not the way forward?"},{"id":"how-can-monoliths-and-composable-work-together","depth":2,"text":"How can monoliths and composable work together?"},{"id":"how-does-dxcp-help-make-composable-mainstream","depth":2,"text":"How does DXCP help make composable mainstream?"}]}},"_type":"markdown","_id":"content:4.writing:the-move-from-monolithic-to-composable-architectures.md","_source":"content","_file":"4.writing/the-move-from-monolithic-to-composable-architectures.md","_extension":"md"},{"_path":"/writing/mach-versus-monolithic-suites","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"MACH versus monolithic suites","description":"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are...","id":1399552,"slug":"mach-versus-monolithic-suites","date":"2023-03-13T20:37:36Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfwuyqdwlw3du1k96z1l.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/mach-versus-monolithic-suites#mach-as-an-evolution-of-monoliths","tags":["mach","composable","architecture","webdev"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are no longer viable and that companies must evolve continually to keep up with consumer expectations. However, making technology decisions can be difficult, confusing, and stressful, especially since you might have to live with them for years. You also run the risk of being locked into products that cannot keep up with your organization's changing needs or, even worse, products that were never a good fit in the first place. No wonder that when an architecture emerges that promises to reduce that risk, people pay attention."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reality is, monolithic suites are no longer the safest choice. In their quest to stay agile, nimble, customer-centric, and future-proof, businesses must find more effective ways for transforming digital experiences and are turning to the increasingly popular MACH architecture."}]},{"type":"element","tag":"h2","props":{"id":"mach-architecture-explained"},"children":[{"type":"text","value":"MACH architecture explained"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MACH stands for microservices, API-first, cloud-based, and headless, comprising decoupled, modular, self-contained, and independent components that work together as one, as explained below:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Microservices"}]},{"type":"text","value":": These are individual business capabilities that are independently built, deployed, and managed."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"API-first"}]},{"type":"text","value":": APIs function as the pipeline through which applications interact, resulting in a microservices-based architecture that activates data exchange among the services."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Cloud-native"}]},{"type":"text","value":": Since cloud computing offers scalability and adaptability, cloud-native applications foster innovation, accelerating the creation and optimization of microservices and, in turn, the process of project initiation through delivery."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Headless"}]},{"type":"text","value":": This approach of decoupling the front-end user experience from the back-end logic spells complete freedom in building omnichannel digital experiences."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Together, those four components promise to reduce the risk of product lock-in and enable enterprises to adopt technologies that best meet their needs in a timely manner. As a response to the monolithic architectures that have long dominated enterprise applications, MACH addresses the limitations of legacy technologies while staying flexible for businesses to adapt to changes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Understanding MACH requires coming to grips with its two foundational concepts, integration and composability, as well as the advantages and disadvantages of its monolithic predecessor."}]},{"type":"element","tag":"h2","props":{"id":"mach-as-an-evolution-of-monoliths"},"children":[{"type":"text","value":"MACH as an evolution of monoliths"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Though costly, monoliths are convenient because, being from a single vendor, their components are likely to work well together. Additionally, since most monolithic vendors are well-established market players, they offer all the features required for building and maintaining digital experiences and serve as a single contact for businesses to call on in case of issues."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Encompassing its services in one interdependent package, MACH evolves from a monolithic, tightly coupled system. Those services, frequently called a “best-of-need” stack, comprise robust APIs for facilitating data exchange among services along with the best tools for experience creation without incurring expenses on unnecessary features. Another benefit is that businesses need not depend on a single vendor’s roadmap for new channels or technologies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, businesses might find it difficult to evaluate the array of MACH vendors and tools and make the right decisions. Also, given MACH’s multivendor setup, teams might need to perform their tasks with several tools instead of one, as in the case of a monolithic system. Another major challenge is that integration of the tools often requires heavy custom coding."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To decide which system, MACH or monolithic, to opt for, businesses must find out if the advantages are real and whether the advantages surpass the disadvantages."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Suites versus MACH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The difference between a suite and MACH comes down to choice. In the case of a suite, the vendor selects the products for you. With MACH, you pick the products you want from the vendors you prefer."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Back when suites were popular, building a stack was just not practical for most businesses. Nowadays, vendors are building products with the expectation that companies will integrate them with other products. Moreover, delivering those products through a cloud-based infrastructure means that businesses need not support multiple products built with different technologies. That’s the world enabled by MACH."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For businesses that aim at building a technology stack of products that meet their unique requirements, MACH provides the foundational architecture. Therefore, if you buy a CMS, a personalization tool, and an enterprise module built on MACH principles, you can seamlessly and consistently connect them all."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Still, the suite approach continues to predominate, and businesses often adopt it even while designing a modern, composed architecture. That practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Uniform as the infrastructure of composable systems"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform offers a fast track to composability by handling all the difficult and time-consuming integration tasks, personalization settings, etc., so that you can focus on critical undertakings like web design and content creation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Remarkably, Uniform offers composability right out of the box. You get to select the components that you want in your stack, and we handle all the connections and orchestration. You need not build this complex but valuable integration yourself."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To recap, building composable systems on a MACH architecture is a modern, sustainable approach that resolves the difficult problems organizations have accepted as a natural part of working with enterprise software. With composability, you can build stacks with tools of your choice. The MACH architecture makes all that happen in a sustainable, scalable manner, and Uniform provides the infrastructure for orchestration across your MACH platforms."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mach-architecture-explained","depth":2,"text":"MACH architecture explained"},{"id":"mach-as-an-evolution-of-monoliths","depth":2,"text":"MACH as an evolution of monoliths"}]}},"_type":"markdown","_id":"content:4.writing:mach-versus-monolithic-suites.md","_source":"content","_file":"4.writing/mach-versus-monolithic-suites.md","_extension":"md"},{"_path":"/writing/the-mach-monolith","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The MACH monolith","description":"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take...","id":1399535,"slug":"the-mach-monolith","date":"2023-03-13T20:20:45Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdj396fv4iyh8zce4rsg.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/the-mach-monolith","tags":["architecture","composable","webdev","javascript"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take action. Now that everybody is jumping on the bandwagon, interesting developments have surfaced: Traditional monoliths have adopted new messaging with the terms “composable” and “headless” in it, and headless systems are integrating more monolithic-like features. Meanwhile, at a loss as to what to do to ensure that their architecture is scalable, secure, and future-proof, brands make decisions out of sheer FOMO. All that has created the beast I call the MACH Monolith."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The MACH approach for building digital architecture is the way to go, and it can be an amazing journey. However, you must apply the MACH principles correctly. This article explains what that means."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We can agree on one thing: web development is complex, hence the word "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"development"}]},{"type":"text","value":". For years, software vendors tried to simplify the job by creating suites with all the features businesses would need, from front-end accelerators to editing capabilities for rich content. Such an approach of having one platform to tackle all digital-business challenges worked pretty well."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, drawbacks do exist. For one thing, businesses must buy into how the suite is developed as a product. Additionally, they’re stuck with vendor lock-in and dependent on the suite’s roadmap, which holds back innovation and causes developers to break out of the system with customization. When updates are necessary to the underlying monolith, the architecture becomes flawed."}]},{"type":"element","tag":"h2","props":{"id":"a-paradigm-shift"},"children":[{"type":"text","value":"A paradigm shift"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The general mindset in web development is that even though everything is headless and API-first, we are still operating in the “suite” paradigm. Even the technical people who tried to break away from the monolith approach in the recent past still have that frame of mind. Paradigm shifts take time, and we are currently in the middle of one."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In today’s composable world, where architectures are crafted with best-of-breed tools, we must recognize the fact that no software can take the sting out of the challenges involved. Reality is, no full-chain covering pieces of software exist in the SaaS world even though that’s a bitter pill to swallow because that’s what we were used to with suites."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hence, the suite approach continues to predominate, and people often tend to adopt that even while designing a modern composed architecture. As reflected across disciplines, such a practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures. Let’s talk about how the MACH monolith surfaced."}]},{"type":"element","tag":"h2","props":{"id":"monolith-like-features-from-headless-first-products"},"children":[{"type":"text","value":"Monolith-like features from headless-first products"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Because only techies like the headless space, the market doesn’t seem ready to fully embrace API-first designs and composable architectures. After all, APIs are techspeak, and since architectures are created with a tech hat on, the experience is unfriendly to practitioners like content editors and marketers. For details on this phenomenon, see this "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/digital-experience-composition-dxc/tame-the-martech-chaos-with-dxc-and-mach","rel":["nofollow"]},"children":[{"type":"text","value":"article"}]},{"type":"text","value":" on orchestrating MACH architectures."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also, because headless systems are built by and for techies, API-first products are ahead of their time with no connecting mechanism for the composing elements to benefit all stakeholders. A way to resolve that is described later in this article."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid losing market share, headless systems must have the following features to become more usable to practitioners:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration fields into the CMS and other headless systems, e.g., search, DAM, PIM, commerce, CRM, and personalization, to unify the editing experience and offer a singular API for developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An ability to preview functionalities, tightly coupling the front end to the preview SDK of the CMS."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An ability to compose pages inside the CMS data model to add contextualized data for compositions to the clean data model of the CMS content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Routing and sitemap-related content mapping in the CMS that gives practitioners a clear overview of the system."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"All those features put the CMS in the center of the universe of digital architecture. Questions come to mind, however:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you have multiple CMS systems?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you want to switch your commerce engine but it’s tightly coupled to the CMS?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you'd like to switch to another CMS?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you must add another channel like a TV app, yet the data models with desktop presentational context cannot accommodate that?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The answers to those questions result in a load of pain for developers, who often must wrestle with a system replatform every few years. With things becoming too interconnected and concerns not separated, the ultimate choice is usually to discard the old architecture and start anew. Doing that gets very expensive very fast."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Surprisingly, since the paradigm shift is as yet incomplete, the original, highly innovative API-first companies are now adding other semi headless products to their portfolio so as to stay relevant in a slightly lagging market. Consequently, software vendors must serve the mid-market tier of businesses with accelerated product launches and ease of use. Otherwise, website-in-a-box systems like WordPress or Shopify will outperform them."}]},{"type":"element","tag":"h2","props":{"id":"hybrid-headless-and-pretend-composability-from-suites"},"children":[{"type":"text","value":"Hybrid headless and pretend composability from suites"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To stay relevant in the interim, traditional suite vendors are implementing a form of hybrid headless products. You can use their system in a headless, API-first manner but must stick to their way of operations. The fact that you need specialized knowledge of the system to work with it goes against the API-first proposition of total developer freedom. Still, you now have an API and, therefore, a headless system."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suite vendors are splitting up the suite or buying additional service providers and selling their products as composable pieces to their platform. That’s not real composability because you’re not free to choose your best-of-breed tools and can only select from the vendor’s pool of services, which are generally tightly coupled to the suite's core and, therefore, challenges filled. Being interconnected and indivisible is typical of monolithic software, not composable software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I call that approach compostable architecture."}]},{"type":"element","tag":"h2","props":{"id":"the-mach-monolith"},"children":[{"type":"text","value":"The MACH monolith"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We’re seeing a couple of patterns over and over again."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"MACH Monolith","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fp3gnzgd3unj8tbvru3c.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If the separation of concerns is not respected, software vendors create an indivisible and interconnected bundle of best-of-breed tools—a complicated scenario that makes it tough to discern what’s connected to what, not to mention that you have created your very own vendor lock-in. Things work in only one way, and only the original build team understands how they work. Onboarding of new team members becomes complicated and burdensome, leading to frustration among developers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Separately, contextual composition data is often stored in the CMS and mixed with the clean data model you started with, such as adding a checkbox to spotlight an item on a page, which is a design decision for the item in a specific context. What if that context changes when the item is shown in a different place on the website? Composing pages with specific user contexts is problematic in a CMS, invariably generating dirty data over time. Instead, page composition in the context of a user must occur in the front end or a composition platform."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another approach is not to fully interconnect the systems. That’s a great start, but where does that connection usually occur? In the front end. As a result, the front-end application contains all the knowledge of the link to all the systems that compose your website, generating a considerable risk for maintenance and security, let alone that it’s not future-proof. To be effective, a front end must be \"stupid\" and \"stateless\" for updates."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Besides, business problems also exist:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if the architecture does not behave the way it’s supposed to? Determining where it went wrong is complicated."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who do you seek help after pinpointing the issue? The best-of-breed tool, your team who made architecture decisions, or the agency that built the system? Businesses with a failing architecture that can’t point the liability finger eventually replatform and start the process from scratch. The MACH monolith thus ends up being much more inferior to the traditional suite with only one vendor."}]}]},{"type":"element","tag":"h2","props":{"id":"the-solution"},"children":[{"type":"text","value":"The solution"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What businesses need is an opinionless platform that does the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Orchestrates best-of-breed tools."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers a user-friendly interface to developers and practitioners alike."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers an entirely tech-agnostic SDK."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers no-code tools for practitioners to work with in such a way that they do not notice they are composting pages with different headless sources."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though the paradigm shift to truly composable architectures is still ongoing, the platform described above already exists. Enter "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"]},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":", on which developers and marketers have complete control of their digital-experience stack, and I’m proud to run its developer relations team. Uniform is slated to solve many issues developers, architects, and practitioners will face in the coming years."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"a-paradigm-shift","depth":2,"text":"A paradigm shift"},{"id":"monolith-like-features-from-headless-first-products","depth":2,"text":"Monolith-like features from headless-first products"},{"id":"hybrid-headless-and-pretend-composability-from-suites","depth":2,"text":"Hybrid headless and pretend composability from suites"},{"id":"the-mach-monolith","depth":2,"text":"The MACH monolith"},{"id":"the-solution","depth":2,"text":"The solution"}]}},"_type":"markdown","_id":"content:4.writing:the-mach-monolith.md","_source":"content","_file":"4.writing/the-mach-monolith.md","_extension":"md"},{"_path":"/writing/the-future-of-jamstack-is-composable","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of jamstack is composable","description":"This post is either for developers who want an “at-scale” overview of modern architecture or for...","id":998786,"slug":"the-future-of-jamstack-is-composable","date":"2022-02-23T13:04:08Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso0lvl9w5rea6i7sfp6u.jpeg","canonical_url":"https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g","tags":["jamstack","architecture","composable","orchestration"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This post is either for developers who want an “at-scale” overview of modern architecture or for technical decision-makers looking at a great way to build a digital pipeline in this new composable world."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire."}]},{"type":"element","tag":"h2","props":{"id":"in-this-article"},"children":[{"type":"text","value":"In this article"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Use the Jamstack with your favourite framework and host on your favourite CDN."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Combining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future."}]},{"type":"element","tag":"h2","props":{"id":"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures"},"children":[{"type":"text","value":"The Jamstack: why it sits front and centre in modern architectures"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sites built with the Jamstack approach are a combination of static files generated by the CI/CD pipeline of your choice. Most dynamic stuff happens in the generation step, where the codebase reaches out to APIs and services to render all pages statically."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Jamstack: build time vs runtime","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpp5kpu4k3wxs91wne0b.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The performance gains alone justify this approach. There is no runtime page generation, and the app doesn’t have to connect to an origin server to figure out what content to serve. If you want to scale up for Black Friday, just put the static files in more places on the CDN edge, and all is well. Next to the performance gains, you also have a much more secure system. If your architecture has an origin server with all the knowledge of the system, that is a weak point for security."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Traditional web vs Jamstack","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp86io6058n938u4dw70.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can add dynamic data as well. CDN providers have built the ability to run code on the edge, implementing serverless functions and edge workers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A serverless function is a service that lets you run code without provisioning or managing servers. Serverless functions tend to be simple and do not have a state. They require an input, and they will give an output. After use, they will not stay up unless you request them to do that. The benefit is that the cost is low and that these functions are not running if not needed - consuming less energy. You can use them when compiling your Jamstack site, but they also work well at runtime."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Edge workers (as Cloudflare calls them) are pieces of code that live on the CDN edge close to the user and execute when a user visits a URL. This is ideal for reading cookie values and changing the stream of HTML that the CDN renders for that page. With this approach, you can dynamically manipulate what the user sees in their context while still serving a static page initially created by your Jamstack site. This approach is excellent for rendering personalised content based on user actions without the need for JavaScript hydration or an origin server."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Add dynamic parts to the Jamstack with serverless and edge compute","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfn819631e7mvnau8mwl.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-orchestration-how-to-cable-manage-your-architecture"},"children":[{"type":"text","value":"The orchestration: how to cable manage your architecture"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How you connect things up before the site is rendered is vital for the platform you are building. There are many technical and organisational problems to address when you scale a composed architecture to big organisations."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Choices, choices, choices: CMS, Commerce, CDN, Marketing clouds, DAM, Personalization, A/B testing, CRM, etc."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration is complex, and orchestration is hard to build."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Often there is a lack of intuitive tools for non-devs to build and manage experiences."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Early implementation decisions can limit the ability to change and evolve."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Wrong choices can create developer bottlenecks and hinder time to market and agility."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The bigger the organisation, the more critical this statement becomes: "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"To achieve true value, you need to orchestrate technology, people, and processes."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The digital pipeline can be stalled at many places. You’ll need a platform to help you orchestrate the whole architecture into a usable system for all stakeholders. A cohesive system has the ability for multiple systems to work together as one - for each system to have an awareness of what the other systems are doing. This same story goes for the practitioners in the system. From developers to content editors and from marketers to data analysts. All these people play a vital role in your online success."}]},{"type":"element","tag":"h3","props":{"id":"the-platform-we-need"},"children":[{"type":"text","value":"The platform we need"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The platform we need has to be “opinionless” and technology agnostic. Its primary goal is to cater to all stakeholders and prevent re-platforming."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Services integrators or agencies often use the “re-platform” model. Out with the old monolith and in with the new monolith. This way, they can sell their business transformation story and do a big bang release. The drawback here is that re-platforming takes a long time and is costly. It is also the complete opposite of an agile approach to a project. Agencies tend to be \"platform partners\" and sell in a platform first solution rather than a specific value solution to a brand. This is logical as they can hire specialists that retain their value project after project. However, modern architectures demand making choices for the business's needs, not what the agency or software vendors want to sell in. Square pegs and round holes could work for a while until it’s too hard to manage, and then you re-platform. Again…"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The orchestration platform should support end-to-end delivery of digital products:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Development"}]},{"type":"text","value":": developers build components that incorporate content from multiple sources without building custom integrations."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Authoring"}]},{"type":"text","value":": practitioners build personalised digital experiences using no-code tools, including instant preview without involving developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Deployment"}]},{"type":"text","value":": developer and practitioner activities automatically trigger deployments to your CDN of choice to ensure digital experiences are always current."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Delivery"}]},{"type":"text","value":": Personalization and experimentation is delivered from the edge for the fastest possible performance."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The key is the “power of choice” for the tech stack, hosting / CDN, data fetching and what integrations are used. The point is that you as a technical stakeholder can choose when to add, remove or scale something without being held back by the system. There is no vendor lock-in, roadmap constraints, and re-platforming (swap an integration, migrate the data, and change some data mapping code)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"What a composable orchestration platform looks like","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvs9u5inctpg4f7iiu9h.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"data-fetching-approaches"},"children":[{"type":"text","value":"Data fetching approaches"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flexibility in how data is fetched from different sources is vital for the longevity of an orchestration platform. The platform SDK should not apply any opinion on how data is fetched. It offers an SDK that helps developers fetch it the way they want."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s essential that page compositions only point to data sources and that the platform itself does not store anything except for the identification of the component it references. The benefits are:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t store potentially sensitive data;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t duplicate content;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t have to know when data changes in the external source;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The platform does not have to serve the data and ingest the SLA provided by the source data it delivers."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s up to the developer to use the platform SDK to retrieve the compositional data and use platform provided helper tools to query the different API endpoints. The beauty of this approach is that the SDK and how the data is fetched can live anywhere. From the local codebase to an external middleware layer or a serverless function. There are some benefits to positioning the data fetching outside of your codebase:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You can hire separate developers who only focus on the API and the data mapping to the desired format. This separates concerns between disciplines, and back-end developers now have a place where they can feel at home."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The front-end application doesn’t need to know what external sources are queried. It queries one endpoint that returns the desired format for the front-end components to render."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A standalone front-end without knowledge of what external APIs feed it is highly flexible, future-proof, and hard to hack. Imagine a design system full of components with excellent documentation of what properties they need and a simple SDK to query data and map it directly to these properties. If you have to switch CMS or commerce engine, it’s a matter of remapping the data to the component properties and you are done."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data fetching in a composable orchestration platform","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u75kbivciz0ayqg3t7fd.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"concluding"},"children":[{"type":"text","value":"Concluding"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To successfully manage your digital pipeline, we need orchestration that adds structure to the stack, making it easier to align API first sources toward the same business goal and empowering all of the various teams contributing to the end product - developers, content authors and marketers. To keep the digital pipeline productive as new technologies emerge, you need orchestration that gives freedom of choice in every aspect of the architecture both today and tomorrow."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Imagine if marketers and developers could be friends again and work together to create the best experience for their website visitors?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"in-this-article","depth":2,"text":"In this article"},{"id":"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures","depth":2,"text":"The Jamstack: why it sits front and centre in modern architectures"},{"id":"the-orchestration-how-to-cable-manage-your-architecture","depth":2,"text":"The orchestration: how to cable manage your architecture","children":[{"id":"the-platform-we-need","depth":3,"text":"The platform we need"},{"id":"data-fetching-approaches","depth":3,"text":"Data fetching approaches"}]},{"id":"concluding","depth":2,"text":"Concluding"}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-jamstack-is-composable.md","_source":"content","_file":"4.writing/the-future-of-jamstack-is-composable.md","_extension":"md"}] \ No newline at end of file diff --git a/api/_content/query/6QYHEPmOrw.1718484357766.json b/api/_content/query/6QYHEPmOrw.1718484799542.json similarity index 100% rename from api/_content/query/6QYHEPmOrw.1718484357766.json rename to api/_content/query/6QYHEPmOrw.1718484799542.json diff --git a/api/_content/query/6eahgEsrS6.1718484357766.json b/api/_content/query/6eahgEsrS6.1718484357766.json deleted file mode 100644 index 7317f258..00000000 --- a/api/_content/query/6eahgEsrS6.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/uniform-is-nuxt-3-read","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Uniform is Nuxt 3 ready","description":"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with Vue...","id":1405730,"slug":"uniform-is-nuxt-3-read","date":"2023-03-18T13:10:06Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96gzr0p69e9frwbj3i8w.png","canonical_url":"https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3","tags":["webdev","javascript","nuxt","vue"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with "},{"type":"element","tag":"a","props":{"href":"https://blog.vuejs.org/posts/vue-3-as-the-new-default.html","rel":["nofollow"]},"children":[{"type":"text","value":"Vue 3"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"https://v3.nuxtjs.org/","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt 3"}]},{"type":"text","value":". "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nuxt 3 is fast approaching GA. To ensure that Vue.js enthusiasts can build next-generation web experiences with the awesome features offered by Nuxt 3, our new SDK fully supports all Uniform capabilities: from no-code presentation management by Uniform Canvas, complete with web-socket-based live previews, to edge-side personalization and A/B testing through Uniform Context. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With the Nuxt 3 Nitro engine, developers can now run an entire site on the edge or combine personalization on the edge with delivery of the remaining content in SSG mode through a CDN. Even for highly dynamic pages, the latter choice results in blazing-fast page loads. We’re talking sub 50 milliseconds!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nuxt 3 is truly game changing, and Uniform takes full advantage of that with an easy-to-install SDK that follows Nuxt’s no-config ethos."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Features of Uniform’s Nuxt 3 module"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is what the module can do:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Auto-registers the required Uniform components."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Auto-creates a Uniform Canvas client."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Creates a Uniform Context instance (for personalization) and makes it available throughout the app without the need for a wrapping component."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Builds a handy "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"$useCompositionClick to copy"}]},{"type":"text","value":" composable on top of Nuxt's "},{"type":"element","tag":"a","props":{"href":"https://v3.nuxtjs.org/api/composables/use-async-data","rel":["nofollow"]},"children":[{"type":"text","value":"useAsyncData"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Displays live previews seamlessly."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Monitors query-string changes, which Nuxt doesn't do by default."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Benefits of using Uniform with Nuxt 3"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As a rule, no single system offers all the functionalities you need for an app. Instead, multiple systems must work together for the app to run smoothly. A "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architecture"}]},{"type":"text","value":" is one in which you can pick and choose the components for your technology stack, but getting them to work together well can be challenging. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Modern headless systems can connect with other systems as part of a composable architecture. However, using some composable services doesn’t give you a full composable architecture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Real composability means that you can add or remove components easily as your needs evolve. That’s what Uniform offers. With Uniform’s composition layer, you can build and maintain a modern stack with composable services without tightly coupling them. As a result, developers, content creators, and marketers alike can create and deliver experiences quickly, independently and without vendor lock-in."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers can add or change services any time, assured that their tools will work well together without the need for time-consuming and expensive replatforming and reintegration."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Content creators can build engaging experiences with a consistent, no-code approach through which they can readily leverage all the tools in their stack."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Marketers can promote conversions through intent-based personalization and experimentation mechanisms that integrate with customer data and that are simple and intuitive for implementation by developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"As internal needs or consumer tastes change, the organization can be agile enough to meet these challenges, without extensive background work that doesn’t deliver direct value to end users."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:uniform-is-nuxt-3-read.md","_source":"content","_file":"4.writing/uniform-is-nuxt-3-read.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/6t4FnnIdiR.1718484357766.json b/api/_content/query/6t4FnnIdiR.1718484799542.json similarity index 100% rename from api/_content/query/6t4FnnIdiR.1718484357766.json rename to api/_content/query/6t4FnnIdiR.1718484799542.json diff --git a/api/_content/query/7Dob80rxnE.1718484357766.json b/api/_content/query/7Dob80rxnE.1718484799542.json similarity index 100% rename from api/_content/query/7Dob80rxnE.1718484357766.json rename to api/_content/query/7Dob80rxnE.1718484799542.json diff --git a/api/_content/query/8B7s6MVRQO.1718484357766.json b/api/_content/query/8B7s6MVRQO.1718484799542.json similarity index 100% rename from api/_content/query/8B7s6MVRQO.1718484357766.json rename to api/_content/query/8B7s6MVRQO.1718484799542.json diff --git a/api/_content/query/8WotymfYUw.1718484357766.json b/api/_content/query/8WotymfYUw.1718484357766.json deleted file mode 100644 index fad58839..00000000 --- a/api/_content/query/8WotymfYUw.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to get your webcam to look decent in a few simple steps","description":"If you have used a webcam before you know what it means to look like shit on camera. Even the most...","id":1407808,"slug":"how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","date":"2023-03-20T13:01:35Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finfev45k3ve6i4dgtu2r.png","canonical_url":"https://dev.to/timbenniks/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps-5eo4","tags":["webcam"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have used a webcam before you know what it means to look like shit on camera. Even the most expensive consumer webcams produce a “meh” result. So why do webcams suck? It’s their design. The webcam form factor has a bunch physical challenges that limits them from producing a good looking picture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Beware, the ideas outlined below are based on my experience and are by far not comprehensive or complete. That is not the idea of this post. Someone in the field of cameras will probably pick this apart on details. The global ideas stand, however."}]},{"type":"element","tag":"h3","props":{"id":"why-webcams-suck"},"children":[{"type":"text","value":"Why webcams suck"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Let’s get a bit technical. Almost all webcam "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Image_sensor","rel":["nofollow"]},"children":[{"type":"text","value":"image sensors"}]},{"type":"text","value":" are somewhere between 1/4\" and 1/3\" in size and they have a crop factor of around 7. Crop factor is a term that describes the difference between your camera’s sensor size and a traditional 35mm film frame. In the case of a webcam’s image sensor size and its crop factor a normal 18mm lens is the equivalent of a 126mm zoom lens. I might be a bit off here. The idea is that the crop factor plays a huge role."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A webcam tends to be positioned around 40cm (1.3 feet) from your face. Due to the high crop factor an extremely wide angle lens is needed to get a good visual at that distance. Think about it. If a 18mm lens is the equivalent of an 126mm lens it means that something we consider normal on a SLR camera is extremely zoomed in on a webcam. So, we need to zoom it out. BY A LOT. To do that, we use a wide angle lens."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Sensor explanation","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16nf6fvk0v76s11zb1ph.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The problem is, the wider you go, the less sharp the picture gets. If there wasn’t enough against the webcam form factor: the lenses in webcams are generally cheap and shitty. The webcam’s physical limitations make it terrible in low light situations. Even with studio lighting the image can appear grainy."}]},{"type":"element","tag":"h4","props":{"id":"there-are-more-issues-yikes"},"children":[{"type":"text","value":"There are more issues. Yikes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you check out high quality content there is always a nice "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Bokeh","rel":["nofollow"]},"children":[{"type":"text","value":"bokeh effect"}]},{"type":"text","value":". The more light a lens can capture (aperture) and the bigger the image sensor, the more bokeh you can expect. Bokeh is awesome, everybody needs bokeh."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In webcams autofocus works from about 1cm until 60cm (2feet). After that everything is always sharp. Webcams have a shallow depth of field. No bokeh. Not even close."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Combine a small sensor, a crappy wide angle lens and a shallow depth of field and you have the average webcam. A 200 euro webcam isn’t that much better than a 50 euro webcam. Sad but true."}]},{"type":"element","tag":"h4","props":{"id":"but-why-does-my-phone-camera-look-so-good"},"children":[{"type":"text","value":"But why does my phone camera look so good?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A real camera or a phone have much more computational power. The camera on a phone is almost its main feature nowadays. It’s where all the advertisement dollars go. Phones have bigger sensors, better lenses and sometimes even a dedicated hardware chip just for image processing."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most webcams also have some sort of processing power on board but it always kind of sucks. It mainly compresses the video feed so it’s streamable over the USB connection. Due to the compressed stream the PC hardly needs any processing to show the video. You have no access to aperture, shutter speed or ISO though."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can only post process the signal. But the damage is usually already done at this stage."}]},{"type":"element","tag":"h4","props":{"id":"but-why-arent-there-any-amazing-webcams-out-there"},"children":[{"type":"text","value":"But why aren’t there any amazing webcams out there?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s definitely possible and there are niche brands that build 1000 euro webcams. But if you have to spend that much, why not just buy a real camera? The actual market for webcams is likely just for conference calls, skype with family (if you don’t have a laptop or a phone) or content creators who are starting out. If webcams get too expensive, nobody will buy them."}]},{"type":"element","tag":"h3","props":{"id":"you-can-make-it-work-however"},"children":[{"type":"text","value":"You can make it work however"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In this post I’ll outline some tips and tricks you can apply to make your webcam look better. All techniques described below are applicable to any sort of camera setup. If you have a proper camera it just works better. We will be covering two topics. Lighting and post processing settings."}]},{"type":"element","tag":"h4","props":{"id":"lighting"},"children":[{"type":"text","value":"Lighting"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Lighting is by far the most important part of your setup if you want to make your webcam image look good. As mentioned before, webcams are not great in low light situations. To overcome this limitation you have to blast the filming subject (you) with light."}]},{"type":"element","tag":"h5","props":{"id":"light-temperatures"},"children":[{"type":"text","value":"Light temperatures"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are different types of light that need different white balance settings. Generally light bulbs are yellow and sun light is blue. When combining both you can green a green overtone. White balancing your camera in software is very important in this case."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I’d suggest not to use sunlight as it is hard to control. Close your blinds and go for light bulbs or LED lights only. There are many cheap options out there. Most lights can deliver different color temperatures ranging from 2500 (sunset) to 10000 (blue sky). Generally 5500 is considered noon daylight."}]},{"type":"element","tag":"h5","props":{"id":"shadows-diffusion"},"children":[{"type":"text","value":"Shadows & diffusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Light can be cast in different ways. Harder shadows and lighting from the top is used to depict movie villains for example. If you want an dramatic look, use hard shadows and light yourself from one side. If you want to look more mainstream use softer shadows and light yourself from more angles."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To generate softer shadows you have to diffuse your light. The more focused a light source is, the harder the shadows. The more diffusion is added, the softer the shadows. I personally use a couple of cloths of white t-shirt fabric stretched over my lights. Obviously there are also more professional ways to diffuse light but these are not available to everyone."}]},{"type":"element","tag":"h5","props":{"id":"your-light-setup"},"children":[{"type":"text","value":"Your light setup"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that we have our color temperatures and diffusion out of the way, let’s talk about how to set up your lights so you are lit properly for the webcam. If you have very limited options, just put a big light behind your camera and blast your face with white light. This will give you a 100% quality boost over having no lights."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have a little bit more flexibility I suggest using a three point light setup. The three point light setup is considered industry standard and will generally give you great results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Lighting setup","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/keef3ou8sbzpg24acrzj.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The three point light setup assumes you have a “key light”, a “fill light” and a “hair light”."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Key light: This is the main light source. It shines directly on the subject, usually from the front right or front left. It establishes the overall look and feel of the shot."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Fill light: The fill light provides balance to the key light by “filling in” the rest of the subject’s face with softer light. It should be positioned to the side opposite side of the key light."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hair light: Also called “back light” or “rim light”. This light creates a flattering rim of light around the subject, separating him or her from the background."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is how to set up your lights. To start turn all lights off so you are in a dark room."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Turn on your key light. Your key light is the brightest light in the scene and the one that creates the overall feel of the shot. Adjust its brightness to your liking. You should position the key light in a relatively high spot to reduce shadows on the face."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Add your fill light. The fill light should be on the opposite side of the key light, but still in front of the subject. Don’t make the key and fill lights symmetrical. The fill should be at the subject’s face level, and should get rid of any remaining shadows. The intensity of the fill light should be about half that of the key light."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Bring in the hair light. The back light separates you from the background. It can be placed anywhere behind the subject. Make sure to keep it out of the shot. Angle it down from a high position to achieve a sharp outline on the edge of the subject."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If there are lights behind you, make sure these have a very low intensity so they do not distract from you, the subject of the shot. To make the shot more interesting you can add some fun colored lights behind you as long as they are not too distracting. This is obviously not needed but it’s a fun thing to add."}]},{"type":"element","tag":"h3","props":{"id":"application-settings"},"children":[{"type":"text","value":"Application settings"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We are almost there! Let’s tweak some settings to make the camera quality appear much higher."}]},{"type":"element","tag":"h4","props":{"id":"turn-things-off"},"children":[{"type":"text","value":"Turn things off."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have a Logitech webcam. This camera comes with a little control panel that allows for some post process tweaking of the camera feed. If you are well lit you can turn off a bunch of things in this interface. First of all, keep the settings for brightness, contrast, saturation and sharpness at the default. We will fix these at a later stage."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Set the white balance on a fixed setting and make sure it is not set to auto. For my setup a white balance at around 4000 works."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make sure to turn off Backlight compensation and Gain. We do not need these as we are well lit."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"In the next tab make sure exposure is set to “auto”. If you attempt to expose yourself manually with a Logitech webcam all hell brakes loose. The image either looks like crap or your framerate will drop significantly."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Make sure to turn off Low Light compensation. There is no need for this as you are well lit."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Webcam settings","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rktns1m78yyy1owfexqd.png","width":1280},"children":[]}]},{"type":"element","tag":"h4","props":{"id":"color-correction"},"children":[{"type":"text","value":"Color correction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I use OBS, which comes with a great plugin to color correct the video feed from your webcam. The smallest adjustments give a great result. Stay subtle with the changes and your video will look a lot better fast."}]},{"type":"element","tag":"h4","props":{"id":"lut"},"children":[{"type":"text","value":"LUT"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Instagram filters can make a simple picture of food look like a very fancy picture of food. You can use these same kinds of filters on webcams too! It’s amazing what a little cosmetic tweak can do to your video quality. The filters I’m talking about are called "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/3D_lookup_table","rel":["nofollow"]},"children":[{"type":"text","value":"LUT"}]},{"type":"text","value":". LUT’s are generally used in the professional film world to color grade a movie."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"LUT’s are simple, easy-to-use filters that can be applied directly into "},{"type":"element","tag":"a","props":{"href":"https://obsproject.com/","rel":["nofollow"]},"children":[{"type":"text","value":"OBS"}]},{"type":"text","value":" allowing your webcam presentation to become brighter or more cinematic. For a great free pack of LUT’s go here: "},{"type":"element","tag":"a","props":{"href":"https://gamingcareers.com/guides/30-free-webcam-filters-obs/","rel":["nofollow"]},"children":[{"type":"text","value":"https://gamingcareers.com/guides/30-free-webcam-filters-obs/"}]}]},{"type":"element","tag":"h4","props":{"id":"you-can-try-one-more-thing"},"children":[{"type":"text","value":"You can try one more thing"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you have a cheap camera with a shallow depth of field and your lights are set up well, you can use a program called xsplit vcam to create a software bokeh effect! Beware, you need a relatively strong graphics card and the lighting needs to be spot on. Also, the program is not free."}]},{"type":"element","tag":"h3","props":{"id":"thats-it"},"children":[{"type":"text","value":"That's it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is the result I got after a bit of research and tweaking settings."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Before","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53ums57svft6zuza79l9.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"After","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h293vez6piv68hyzfy98.png","width":1280},"children":[]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"why-webcams-suck","depth":3,"text":"Why webcams suck"},{"id":"you-can-make-it-work-however","depth":3,"text":"You can make it work however"},{"id":"application-settings","depth":3,"text":"Application settings"},{"id":"thats-it","depth":3,"text":"That's it"}]}},"_type":"markdown","_id":"content:4.writing:how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","_source":"content","_file":"4.writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/9n8PljzAIU.1718484357766.json b/api/_content/query/9n8PljzAIU.1718484357766.json deleted file mode 100644 index 0bb5c14d..00000000 --- a/api/_content/query/9n8PljzAIU.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/presskit","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"press kit","description":"presskit desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Press Kit"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659294037/Presskit/FDLC2019_462.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"title-block","props":{"tag":"h3","title":"What do I do"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim Benniks is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":". "},{"type":"element","tag":"a","props":{"href":"https://machalliance.com","rel":["nofollow"],"title":"https://machalliance.com"},"children":[{"type":"text","value":"MACH Alliance"}]},{"type":"text","value":" Tech Council member, "},{"type":"element","tag":"a","props":{"href":"https://nuxt.com","rel":["nofollow"],"title":"https://nuxt.com"},"children":[{"type":"text","value":"NuxtJS"}]},{"type":"text","value":" ambassador, "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com","rel":["nofollow"],"title":"https://cloudinary.com"},"children":[{"type":"text","value":"Cloudinary"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://supabase.com","rel":["nofollow"],"title":"https://supabase.com"},"children":[{"type":"text","value":"Supabase"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://algolia.com","rel":["nofollow"],"title":"https://algolia.com"},"children":[{"type":"text","value":"Algolia"}]},{"type":"text","value":" Ambassador, and "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"content creator"}]},{"type":"text","value":"."}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Mini bio"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Over the past 15 years, Tim has worked at various agencies in Amsterdam and Paris with global clients like Nike, Heineken, Google, Tommy Hilfiger, EA Games, CHANEL, L'Oréal, Procter & Gamble, Louis Vuitton, and Hermès."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Currently, Tim is Developer Relations Lead for Outreach and Awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/","rel":["nofollow"],"title":"https://hygraph.com/"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" with a focus on content creation, speaking, and community building. In particular, he plays an active role in the developer community as a frequent speaker at conferences and creator of YouTube videos on modern technologies. He also collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS while serving on the MACH Alliance Tech Council. It's all about quality, community, and development of fancy websites."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A demanding job like that needs balancing. Tim plays guitar and revels in family time with his wife, cats, and two little Corgis called Princess Nugget and Scarlet."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Shorter mini bio"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" with a focus on developer relations, community building, and content creation. He’s active in the developer community through speaking engagements at conferences and creation of YouTube videos on modern technologies. Tim collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS, and is a member of the MACH Alliance Tech Council. It's all about quality, community, and development of great websites."}]}]}]}]}]},{"type":"element","tag":"speaker-details","props":{},"children":[]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741257/Tim/IMG_1020.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"speaker-media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:descripiton":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Click on the images for their full resolution versions."}]}]},{"type":"element","tag":"template","props":{"v-slot:image1":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg","rel":["nofollow"],"target":"_blank"},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in Berlin","height":6960,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg","width":4640,"className":["fancy-image"]},"children":[]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:image2":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg","rel":["nofollow"],"target":"_blank"},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in Paris","height":3080,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg","width":5472,"className":["fancy-image"]},"children":[]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:image3":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png","rel":["nofollow"],"target":"_blank"},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in his studio","height":2880,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png","width":5120,"className":["fancy-image"]},"children":[]}]}]}]}]},{"type":"element","tag":"talks","props":{":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/347230970_264022386183185_8706521077970757537_n_vpj6co","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:7.presskit.md","_source":"content","_file":"7.presskit.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/9n8PljzAIU.1718484799542.json b/api/_content/query/9n8PljzAIU.1718484799542.json new file mode 100644 index 00000000..d097e0a3 --- /dev/null +++ b/api/_content/query/9n8PljzAIU.1718484799542.json @@ -0,0 +1 @@ +{"_path":"/presskit","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Press kit","description":"Tim Benniks Press kit for conferences, webinars, and interviews.","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Press Kit"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659294037/Presskit/FDLC2019_462.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"title-block","props":{"tag":"h3","title":"What do I do"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim Benniks is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":". "},{"type":"element","tag":"a","props":{"href":"https://machalliance.com","rel":["nofollow"],"title":"https://machalliance.com"},"children":[{"type":"text","value":"MACH Alliance"}]},{"type":"text","value":" Tech Council member, "},{"type":"element","tag":"a","props":{"href":"https://nuxt.com","rel":["nofollow"],"title":"https://nuxt.com"},"children":[{"type":"text","value":"NuxtJS"}]},{"type":"text","value":" ambassador, "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com","rel":["nofollow"],"title":"https://cloudinary.com"},"children":[{"type":"text","value":"Cloudinary"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://supabase.com","rel":["nofollow"],"title":"https://supabase.com"},"children":[{"type":"text","value":"Supabase"}]},{"type":"text","value":" Ambassador, "},{"type":"element","tag":"a","props":{"href":"https://algolia.com","rel":["nofollow"],"title":"https://algolia.com"},"children":[{"type":"text","value":"Algolia"}]},{"type":"text","value":" Ambassador, and "},{"type":"element","tag":"a","props":{"href":"https://youtube.com/timbenniks","rel":["nofollow"],"title":"https://youtube.com/timbenniks"},"children":[{"type":"text","value":"content creator"}]},{"type":"text","value":"."}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Mini bio"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Over the past 15 years, Tim has worked at various agencies in Amsterdam and Paris with global clients like Nike, Heineken, Google, Tommy Hilfiger, EA Games, CHANEL, L'Oréal, Procter & Gamble, Louis Vuitton, and Hermès."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Currently, Tim is Developer Relations Lead for Outreach and Awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com/","rel":["nofollow"],"title":"https://hygraph.com/"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" with a focus on content creation, speaking, and community building. In particular, he plays an active role in the developer community as a frequent speaker at conferences and creator of YouTube videos on modern technologies. He also collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS while serving on the MACH Alliance Tech Council. It's all about quality, community, and development of fancy websites."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A demanding job like that needs balancing. Tim plays guitar and revels in family time with his wife, cats, and two little Corgis called Princess Nugget and Scarlet."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Shorter mini bio"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tim is Developer Relations Lead for outreach and awareness at "},{"type":"element","tag":"a","props":{"href":"https://hygraph.com","rel":["nofollow"],"title":"https://hygraph.com"},"children":[{"type":"text","value":"Hygraph"}]},{"type":"text","value":" with a focus on developer relations, community building, and content creation. He’s active in the developer community through speaking engagements at conferences and creation of YouTube videos on modern technologies. Tim collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS, and is a member of the MACH Alliance Tech Council. It's all about quality, community, and development of great websites."}]}]}]}]}]},{"type":"element","tag":"speaker-details","props":{},"children":[]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741257/Tim/IMG_1020.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"speaker-media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:descripiton":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Click on the images for their full resolution versions."}]}]},{"type":"element","tag":"template","props":{"v-slot:image1":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg","rel":["nofollow"]},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in Berlin","height":6960,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg","width":4640,"className":["fancy-image"]},"children":[]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:image2":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg","rel":["nofollow"]},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in Paris","height":3080,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg","width":5472,"className":["fancy-image"]},"children":[]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:image3":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png","rel":["nofollow"]},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks in his studio","height":2880,"loading":"lazy","provider":"cloudinary","sizes":"sm:50vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png","width":5120,"className":["fancy-image"]},"children":[]}]}]}]}]},{"type":"element","tag":"talks","props":{":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/347230970_264022386183185_8706521077970757537_n_vpj6co","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:7.presskit.md","_source":"content","_file":"7.presskit.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/APnO3rMXEX.1718484357766.json b/api/_content/query/APnO3rMXEX.1718484357766.json deleted file mode 100644 index 797c4c23..00000000 --- a/api/_content/query/APnO3rMXEX.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/the-mach-monolith","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The MACH monolith","description":"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take...","id":1399535,"slug":"the-mach-monolith","date":"2023-03-13T20:20:45Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdj396fv4iyh8zce4rsg.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/the-mach-monolith","tags":["architecture","composable","webdev","javascript"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take action. Now that everybody is jumping on the bandwagon, interesting developments have surfaced: Traditional monoliths have adopted new messaging with the terms “composable” and “headless” in it, and headless systems are integrating more monolithic-like features. Meanwhile, at a loss as to what to do to ensure that their architecture is scalable, secure, and future-proof, brands make decisions out of sheer FOMO. All that has created the beast I call the MACH Monolith."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The MACH approach for building digital architecture is the way to go, and it can be an amazing journey. However, you must apply the MACH principles correctly. This article explains what that means."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We can agree on one thing: web development is complex, hence the word "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"development"}]},{"type":"text","value":". For years, software vendors tried to simplify the job by creating suites with all the features businesses would need, from front-end accelerators to editing capabilities for rich content. Such an approach of having one platform to tackle all digital-business challenges worked pretty well."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, drawbacks do exist. For one thing, businesses must buy into how the suite is developed as a product. Additionally, they’re stuck with vendor lock-in and dependent on the suite’s roadmap, which holds back innovation and causes developers to break out of the system with customization. When updates are necessary to the underlying monolith, the architecture becomes flawed."}]},{"type":"element","tag":"h2","props":{"id":"a-paradigm-shift"},"children":[{"type":"text","value":"A paradigm shift"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The general mindset in web development is that even though everything is headless and API-first, we are still operating in the “suite” paradigm. Even the technical people who tried to break away from the monolith approach in the recent past still have that frame of mind. Paradigm shifts take time, and we are currently in the middle of one."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In today’s composable world, where architectures are crafted with best-of-breed tools, we must recognize the fact that no software can take the sting out of the challenges involved. Reality is, no full-chain covering pieces of software exist in the SaaS world even though that’s a bitter pill to swallow because that’s what we were used to with suites."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hence, the suite approach continues to predominate, and people often tend to adopt that even while designing a modern composed architecture. As reflected across disciplines, such a practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures. Let’s talk about how the MACH monolith surfaced."}]},{"type":"element","tag":"h2","props":{"id":"monolith-like-features-from-headless-first-products"},"children":[{"type":"text","value":"Monolith-like features from headless-first products"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Because only techies like the headless space, the market doesn’t seem ready to fully embrace API-first designs and composable architectures. After all, APIs are techspeak, and since architectures are created with a tech hat on, the experience is unfriendly to practitioners like content editors and marketers. For details on this phenomenon, see this "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/digital-experience-composition-dxc/tame-the-martech-chaos-with-dxc-and-mach","rel":["nofollow"]},"children":[{"type":"text","value":"article"}]},{"type":"text","value":" on orchestrating MACH architectures."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also, because headless systems are built by and for techies, API-first products are ahead of their time with no connecting mechanism for the composing elements to benefit all stakeholders. A way to resolve that is described later in this article."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid losing market share, headless systems must have the following features to become more usable to practitioners:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration fields into the CMS and other headless systems, e.g., search, DAM, PIM, commerce, CRM, and personalization, to unify the editing experience and offer a singular API for developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An ability to preview functionalities, tightly coupling the front end to the preview SDK of the CMS."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"An ability to compose pages inside the CMS data model to add contextualized data for compositions to the clean data model of the CMS content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Routing and sitemap-related content mapping in the CMS that gives practitioners a clear overview of the system."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"All those features put the CMS in the center of the universe of digital architecture. Questions come to mind, however:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you have multiple CMS systems?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you want to switch your commerce engine but it’s tightly coupled to the CMS?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you'd like to switch to another CMS?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if you must add another channel like a TV app, yet the data models with desktop presentational context cannot accommodate that?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The answers to those questions result in a load of pain for developers, who often must wrestle with a system replatform every few years. With things becoming too interconnected and concerns not separated, the ultimate choice is usually to discard the old architecture and start anew. Doing that gets very expensive very fast."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Surprisingly, since the paradigm shift is as yet incomplete, the original, highly innovative API-first companies are now adding other semi headless products to their portfolio so as to stay relevant in a slightly lagging market. Consequently, software vendors must serve the mid-market tier of businesses with accelerated product launches and ease of use. Otherwise, website-in-a-box systems like WordPress or Shopify will outperform them."}]},{"type":"element","tag":"h2","props":{"id":"hybrid-headless-and-pretend-composability-from-suites"},"children":[{"type":"text","value":"Hybrid headless and pretend composability from suites"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To stay relevant in the interim, traditional suite vendors are implementing a form of hybrid headless products. You can use their system in a headless, API-first manner but must stick to their way of operations. The fact that you need specialized knowledge of the system to work with it goes against the API-first proposition of total developer freedom. Still, you now have an API and, therefore, a headless system."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suite vendors are splitting up the suite or buying additional service providers and selling their products as composable pieces to their platform. That’s not real composability because you’re not free to choose your best-of-breed tools and can only select from the vendor’s pool of services, which are generally tightly coupled to the suite's core and, therefore, challenges filled. Being interconnected and indivisible is typical of monolithic software, not composable software."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I call that approach compostable architecture."}]},{"type":"element","tag":"h2","props":{"id":"the-mach-monolith"},"children":[{"type":"text","value":"The MACH monolith"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We’re seeing a couple of patterns over and over again."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"MACH Monolith","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fp3gnzgd3unj8tbvru3c.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If the separation of concerns is not respected, software vendors create an indivisible and interconnected bundle of best-of-breed tools—a complicated scenario that makes it tough to discern what’s connected to what, not to mention that you have created your very own vendor lock-in. Things work in only one way, and only the original build team understands how they work. Onboarding of new team members becomes complicated and burdensome, leading to frustration among developers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Separately, contextual composition data is often stored in the CMS and mixed with the clean data model you started with, such as adding a checkbox to spotlight an item on a page, which is a design decision for the item in a specific context. What if that context changes when the item is shown in a different place on the website? Composing pages with specific user contexts is problematic in a CMS, invariably generating dirty data over time. Instead, page composition in the context of a user must occur in the front end or a composition platform."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another approach is not to fully interconnect the systems. That’s a great start, but where does that connection usually occur? In the front end. As a result, the front-end application contains all the knowledge of the link to all the systems that compose your website, generating a considerable risk for maintenance and security, let alone that it’s not future-proof. To be effective, a front end must be \"stupid\" and \"stateless\" for updates."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Besides, business problems also exist:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"What if the architecture does not behave the way it’s supposed to? Determining where it went wrong is complicated."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Who do you seek help after pinpointing the issue? The best-of-breed tool, your team who made architecture decisions, or the agency that built the system? Businesses with a failing architecture that can’t point the liability finger eventually replatform and start the process from scratch. The MACH monolith thus ends up being much more inferior to the traditional suite with only one vendor."}]}]},{"type":"element","tag":"h2","props":{"id":"the-solution"},"children":[{"type":"text","value":"The solution"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What businesses need is an opinionless platform that does the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Orchestrates best-of-breed tools."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers a user-friendly interface to developers and practitioners alike."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers an entirely tech-agnostic SDK."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Offers no-code tools for practitioners to work with in such a way that they do not notice they are composting pages with different headless sources."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though the paradigm shift to truly composable architectures is still ongoing, the platform described above already exists. Enter "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev","rel":["nofollow"]},"children":[{"type":"text","value":"Uniform"}]},{"type":"text","value":", on which developers and marketers have complete control of their digital-experience stack, and I’m proud to run its developer relations team. Uniform is slated to solve many issues developers, architects, and practitioners will face in the coming years."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"a-paradigm-shift","depth":2,"text":"A paradigm shift"},{"id":"monolith-like-features-from-headless-first-products","depth":2,"text":"Monolith-like features from headless-first products"},{"id":"hybrid-headless-and-pretend-composability-from-suites","depth":2,"text":"Hybrid headless and pretend composability from suites"},{"id":"the-mach-monolith","depth":2,"text":"The MACH monolith"},{"id":"the-solution","depth":2,"text":"The solution"}]}},"_type":"markdown","_id":"content:4.writing:the-mach-monolith.md","_source":"content","_file":"4.writing/the-mach-monolith.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/AiUUCaAwTc.1718484357766.json b/api/_content/query/AiUUCaAwTc.1718484357766.json deleted file mode 100644 index 219af066..00000000 --- a/api/_content/query/AiUUCaAwTc.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/uniform-dxcp-the-what-why-and-how","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Uniform DXCP: the what, why, and how","description":"Nowadays, you’re hard pressed to find an application with all the functionalities you need for...","id":1405728,"slug":"uniform-dxcp-the-what-why-and-how","date":"2023-03-18T13:03:16Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0iccm5uux0ndu9ulnc2g.png","canonical_url":"https://uniform.dev/blogs/uniform-dxcp-the-what-why-and-how","tags":["cdn","edge","sitecore","headless"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nowadays, you’re hard pressed to find an application with all the functionalities you need for delivering personalized digital experiences. Even though with headless solutions, you can select the best options for your goals, you can, through composability, easily connect the applications that drive personalized experiences. Still, simply adopting headless technologies isn’t enough; you also need a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architecture"}]},{"type":"text","value":" that fosters innovation and a seamless authoring experience for business users. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The answer is Uniform "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"Digital Experience Composition Platform (DXCP)"}]},{"type":"text","value":", whose vendor-agnostic capabilities scale to your needs, enabling you to assemble, change, and reassemble your tools as requirements evolve. But what is Uniform DXCP and why does it exist? Read on."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##What is Uniform DXCP?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform DXCP is a new, unique product category with which you can effortlessly integrate legacy and composable services with your design system and front end of choice. In particular, you can switch to and maintain composable systems without having to build and support the connections among those systems. In a composable architecture, that means adding and removing the tools without breaking your personalized, omnichannel digital experience. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Why is now the time to move beyond the modern tech stack?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Similar to a composer who arranges the notes of a musical score, you’re the composer of your project’s tech stack. Say, your stack comprises various tools—a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/headless-cms/uniform-for-headless-cms","rel":["nofollow"]},"children":[{"type":"text","value":"headless content management system (CMS)"}]},{"type":"text","value":", a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/uniform-for-headless-commerce","rel":["nofollow"]},"children":[{"type":"text","value":"commerce platform"}]},{"type":"text","value":", a digital asset management (DAM) system, and so on—from different vendors. By combining those technologies and hosting them on a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/sitecore/deliver-better-digital-experiences-with-a-cdn","rel":["nofollow"]},"children":[{"type":"text","value":"content delivery network (CDN)"}]},{"type":"text","value":", you render a webpage. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nonetheless, connecting headless tools with APIs doesn’t necessarily produce a high-quality or "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/headless-versus-composable-everything-you-need-to-know","rel":["nofollow"]},"children":[{"type":"text","value":"composable experience"}]},{"type":"text","value":". As your enterprise scales up, your business must grow as well, meaning that you must incorporate more and more applications into your tech stack, all of which are hard coded into one another through their app stores or your front-end technology. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What you end up with is a messy, unwieldy, and inflexible tech stack—a maintenance headache  for your developers. Not to mention that "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/switching-vendors-for-digital-architectures-without-replatforming","rel":["nofollow"]},"children":[{"type":"text","value":"replatforming"}]},{"type":"text","value":" or rebuilding your project from scratch can be nightmarish and expensive. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How do you transform your tech stack from a cacophony of integrations connected by endless "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/glue-code","rel":["nofollow"]},"children":[{"type":"text","value":"glue code"}]},{"type":"text","value":" into a composable architecture that bridges your tools into a harmonious experience? You do it with digital experience composition.  "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How do you transition from chaos to composable with DXCP"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With Uniform DXCP, you need not create and maintain the custom code that connects your APIs and front-end layers. Instead, you can compose and organize headless solutions in your tech stack without the exorbitant costs, laborious upgrades, and complexities. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here are the major benefits of moving to composable with Uniform DXCP: "}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Remember the messy tech stack we cited earlier? "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/the-mach-monolith","rel":["nofollow"]},"children":[{"type":"text","value":"Monolithic architectures"}]},{"type":"text","value":" require development of new features or investment in complicated integrations. Not so with Uniform DXCP, whose API-orchestration layer handles the connections among your digital experiences and the applications that power them."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"No more “publish and pray” moments. Uniform DXCP’s no-code orchestration layer accords business users an editor with which to drag and drop components wherever they want and preview the resultant display."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"In DXCP, your front end is unaware of your connections so no proprietary limitations exist, and you can select any front-end technology you desire. Whether you choose Java or PHP, your digital experience remains consistent and seamless."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCP offers a new paradigm for page creation around where data lives and how you manage that data. No more worries about product information being displayed outside the context of its intended design and user experience. With Uniform sitting on the end of your design data and keeping domain data intact, you’re free to deliver digital experiences through multiple services at scale. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How do you fuel your stack with digital experience composition?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After you’ve built a composable architecture in DXCP:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your developers can easily add features and swap out tools from the stack individually."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your stack stays organized with no need for those time-consuming, costly integrations that impede your speed to market."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Your marketers can drag and drop the components they need to create personalized omnichannel experiences without developer assistance. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The result is less code, greater agility and flexibility, and a more smooth approach for handling orchestration and integrating new tools into your tech stack. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:uniform-dxcp-the-what-why-and-how.md","_source":"content","_file":"4.writing/uniform-dxcp-the-what-why-and-how.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/Bbt27l8b9U.1718484357766.json b/api/_content/query/Bbt27l8b9U.1718484357766.json deleted file mode 100644 index f18f31e5..00000000 --- a/api/_content/query/Bbt27l8b9U.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/the-lost-promise-of-headless","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The lost promise of headless","description":"In recent years, headless technology, which boosts performance, developer experience, and...","id":1517485,"slug":"the-lost-promise-of-headless","date":"2023-06-26T18:18:19Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrvfb6a8wh5lt0mbyzat.png","canonical_url":"https://uniform.dev/blogs/the-lost-promise-of-headless","tags":["headless","architecture","mach"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In recent years, headless technology, which boosts performance, developer experience, and best-of-breed headless systems, has gained significant traction in web development. At its core, headless streamlines and accelerates the process of building and delivering web experiences  through APIs, which separates content creation and management from presentation. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, despite the excitement and promise, headless technology has fallen short in living up to its potential in several key areas."}]},{"type":"element","tag":"h2","props":{"id":"technical-complexity"},"children":[{"type":"text","value":"Technical complexity"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The primary appeal of headless technology lies in decoupling content creation and presentation, as a result of which developers can work on the presentation layer with their preferred tools and frameworks while content editors can focus on building and managing content. However, that separation comes at a cost. Specifically:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To connect the multiple layers, a significant amount of code must be written, which leads to technical debt, a heavier workload, and inflexibility. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Adding data to content models to address design-driven choices for an output channel, e.g., checkboxes to enlarge an image, pollutes the data model. The more design-related and channel-specific data you add to content models, the more technical debt you create."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"If you must connect a different data source to the same front-end component, but the content models do not align, issues arise. "}]}]},{"type":"element","tag":"h2","props":{"id":"content-editing-challenges"},"children":[{"type":"text","value":"Content-editing challenges"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another major challenge with headless technology is the disconnect between content editors and the systems they work with. Due to the abstract nature of headless CMS, content editors often struggle to pinpoint how their content will be displayed on the front end, leading to confusion, frustration, and a steep learning curve for novices."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, the lack of a clear connection between content and presentation makes it difficult for content editors to preview their work and ensure that it looks and functions as intended. A suboptimal user experience results, let alone a time sink for revisions and troubleshooting."}]},{"type":"element","tag":"h2","props":{"id":"the-way-forward-dxcp"},"children":[{"type":"text","value":"The way forward: DXCP"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Without question, despite the promise of headless technology for revolutionizing the way we build web experiences, serious hurdles remain. To overcome them, tools and processes that facilitate team collaboration and streamline the development process are necessary so that developers and content editors can work closely together to bridge the gap between content creation and presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A proven solution is a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":", which seamlessly integrates content and presentation. While on that platform, nondevelopers can visually create and manage digital experiences with content from multiple sources, delivering those experiences agnostically to a front-end of choice, significantly reducing technical debt, and gaining flexibility. Businesses can then adapt and innovate much faster, especially since the connection to all headless systems and APIs occurs in the DXCP, and the code remains clean."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What’s more, the incorporation of a DXCP into the development process affords content editors a clear view of how their content will be displayed and the ability to interact with the presentation layer. Plus, the absence of data silos means a more streamlined and efficient workflow as well as a more intuitive user experience for both content creators and developers."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"technical-complexity","depth":2,"text":"Technical complexity"},{"id":"content-editing-challenges","depth":2,"text":"Content-editing challenges"},{"id":"the-way-forward-dxcp","depth":2,"text":"The way forward: DXCP"}]}},"_type":"markdown","_id":"content:4.writing:the-lost-promise-of-headless.md","_source":"content","_file":"4.writing/the-lost-promise-of-headless.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/BdYVzVKYLc.1718484357766.json b/api/_content/query/BdYVzVKYLc.1718484357766.json deleted file mode 100644 index 19106bd9..00000000 --- a/api/_content/query/BdYVzVKYLc.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/speaking","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Speaking","description":"Speaking desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Speaking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"VUEJS AMSTERDAM 2023"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","fit":"crop","height":618,"loading":"eager","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741136/Tim/332051017_2552795964930421_7872527921593081497_n.jpg","width":1440},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Presskit"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Looking for my bio, talk information or pictures? Go to the presskit page to find different varieties of my bio, headshots and past talks I have done. This page also includes slides and other info needed to add me as a speaker to your conference."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Emcee"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Masters of ceremonies, commonly called emcees, offer a profound value at conferences. As a seasoned emcee, I usually start with an anecdote as introduction, followed by an in-depth Q&A session that truly features the speakers and their content. Over the past few years, my emcee gigs have been largely virtual. Starting 2022, however, I've also acted as emcee at in-person conferences, such as Vuejs Amsterdam."}]}]}]}]}]},{"type":"element","tag":"talks","props":{":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:index.md","_source":"content","_file":"5.speaking/index.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/BdYVzVKYLc.1718484799542.json b/api/_content/query/BdYVzVKYLc.1718484799542.json new file mode 100644 index 00000000..6b895701 --- /dev/null +++ b/api/_content/query/BdYVzVKYLc.1718484799542.json @@ -0,0 +1 @@ +{"_path":"/speaking","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Speaking","description":"I love speaking at conferences all around the world. This page lists all upcoming and older talks I've done.","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Speaking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"VUEJS AMSTERDAM 2023"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","fit":"crop","height":618,"loading":"eager","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741136/Tim/332051017_2552795964930421_7872527921593081497_n.jpg","width":1440},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Presskit"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Looking for my bio, talk information or pictures? Go to the presskit page to find different varieties of my bio, headshots and past talks I have done. This page also includes slides and other info needed to add me as a speaker to your conference."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Emcee"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Masters of ceremonies, commonly called emcees, offer a profound value at conferences. As a seasoned emcee, I usually start with an anecdote as introduction, followed by an in-depth Q&A session that truly features the speakers and their content. Over the past few years, my emcee gigs have been largely virtual. Starting 2022, however, I've also acted as emcee at in-person conferences, such as Vuejs Amsterdam."}]}]}]}]}]},{"type":"element","tag":"talks","props":{":small":"false"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Talks"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:5.speaking:index.md","_source":"content","_file":"5.speaking/index.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/C1c54tT0tc.1718484357766.json b/api/_content/query/C1c54tT0tc.1718484799542.json similarity index 100% rename from api/_content/query/C1c54tT0tc.1718484357766.json rename to api/_content/query/C1c54tT0tc.1718484799542.json diff --git a/api/_content/query/C5WzURARZA.1718484357766.json b/api/_content/query/C5WzURARZA.1718484357766.json deleted file mode 100644 index c8ed41c4..00000000 --- a/api/_content/query/C5WzURARZA.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/mach-versus-monolithic-suites","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"MACH versus monolithic suites","description":"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are...","id":1399552,"slug":"mach-versus-monolithic-suites","date":"2023-03-13T20:37:36Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfwuyqdwlw3du1k96z1l.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/mach-versus-monolithic-suites#mach-as-an-evolution-of-monoliths","tags":["mach","composable","architecture","webdev"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are no longer viable and that companies must evolve continually to keep up with consumer expectations. However, making technology decisions can be difficult, confusing, and stressful, especially since you might have to live with them for years. You also run the risk of being locked into products that cannot keep up with your organization's changing needs or, even worse, products that were never a good fit in the first place. No wonder that when an architecture emerges that promises to reduce that risk, people pay attention."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reality is, monolithic suites are no longer the safest choice. In their quest to stay agile, nimble, customer-centric, and future-proof, businesses must find more effective ways for transforming digital experiences and are turning to the increasingly popular MACH architecture."}]},{"type":"element","tag":"h2","props":{"id":"mach-architecture-explained"},"children":[{"type":"text","value":"MACH architecture explained"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MACH stands for microservices, API-first, cloud-based, and headless, comprising decoupled, modular, self-contained, and independent components that work together as one, as explained below:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Microservices"}]},{"type":"text","value":": These are individual business capabilities that are independently built, deployed, and managed."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"API-first"}]},{"type":"text","value":": APIs function as the pipeline through which applications interact, resulting in a microservices-based architecture that activates data exchange among the services."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Cloud-native"}]},{"type":"text","value":": Since cloud computing offers scalability and adaptability, cloud-native applications foster innovation, accelerating the creation and optimization of microservices and, in turn, the process of project initiation through delivery."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Headless"}]},{"type":"text","value":": This approach of decoupling the front-end user experience from the back-end logic spells complete freedom in building omnichannel digital experiences."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Together, those four components promise to reduce the risk of product lock-in and enable enterprises to adopt technologies that best meet their needs in a timely manner. As a response to the monolithic architectures that have long dominated enterprise applications, MACH addresses the limitations of legacy technologies while staying flexible for businesses to adapt to changes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Understanding MACH requires coming to grips with its two foundational concepts, integration and composability, as well as the advantages and disadvantages of its monolithic predecessor."}]},{"type":"element","tag":"h2","props":{"id":"mach-as-an-evolution-of-monoliths"},"children":[{"type":"text","value":"MACH as an evolution of monoliths"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Though costly, monoliths are convenient because, being from a single vendor, their components are likely to work well together. Additionally, since most monolithic vendors are well-established market players, they offer all the features required for building and maintaining digital experiences and serve as a single contact for businesses to call on in case of issues."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Encompassing its services in one interdependent package, MACH evolves from a monolithic, tightly coupled system. Those services, frequently called a “best-of-need” stack, comprise robust APIs for facilitating data exchange among services along with the best tools for experience creation without incurring expenses on unnecessary features. Another benefit is that businesses need not depend on a single vendor’s roadmap for new channels or technologies."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"However, businesses might find it difficult to evaluate the array of MACH vendors and tools and make the right decisions. Also, given MACH’s multivendor setup, teams might need to perform their tasks with several tools instead of one, as in the case of a monolithic system. Another major challenge is that integration of the tools often requires heavy custom coding."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To decide which system, MACH or monolithic, to opt for, businesses must find out if the advantages are real and whether the advantages surpass the disadvantages."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Suites versus MACH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The difference between a suite and MACH comes down to choice. In the case of a suite, the vendor selects the products for you. With MACH, you pick the products you want from the vendors you prefer."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Back when suites were popular, building a stack was just not practical for most businesses. Nowadays, vendors are building products with the expectation that companies will integrate them with other products. Moreover, delivering those products through a cloud-based infrastructure means that businesses need not support multiple products built with different technologies. That’s the world enabled by MACH."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For businesses that aim at building a technology stack of products that meet their unique requirements, MACH provides the foundational architecture. Therefore, if you buy a CMS, a personalization tool, and an enterprise module built on MACH principles, you can seamlessly and consistently connect them all."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Still, the suite approach continues to predominate, and businesses often adopt it even while designing a modern, composed architecture. That practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Uniform as the infrastructure of composable systems"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform offers a fast track to composability by handling all the difficult and time-consuming integration tasks, personalization settings, etc., so that you can focus on critical undertakings like web design and content creation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Remarkably, Uniform offers composability right out of the box. You get to select the components that you want in your stack, and we handle all the connections and orchestration. You need not build this complex but valuable integration yourself."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To recap, building composable systems on a MACH architecture is a modern, sustainable approach that resolves the difficult problems organizations have accepted as a natural part of working with enterprise software. With composability, you can build stacks with tools of your choice. The MACH architecture makes all that happen in a sustainable, scalable manner, and Uniform provides the infrastructure for orchestration across your MACH platforms."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"mach-architecture-explained","depth":2,"text":"MACH architecture explained"},{"id":"mach-as-an-evolution-of-monoliths","depth":2,"text":"MACH as an evolution of monoliths"}]}},"_type":"markdown","_id":"content:4.writing:mach-versus-monolithic-suites.md","_source":"content","_file":"4.writing/mach-versus-monolithic-suites.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/C5zX7rAQHT.1718484357766.json b/api/_content/query/C5zX7rAQHT.1718484357766.json deleted file mode 100644 index 39e5b75f..00000000 --- a/api/_content/query/C5zX7rAQHT.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/make-the-web-greener-luxury-edition","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Make the Web Greener, Luxury Edition","description":"If the internet were a country, it would be the world’s sixth biggest polluter. The...","id":1406180,"slug":"make-the-web-greener-luxury-edition","date":"2023-03-18T22:30:27Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3e00qrk4jojitb5tu06.jpg","canonical_url":"https://www.valtech.com/insights/make-the-web-greener-luxury-edition/","tags":["webdev","environment"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter"},"children":[{"type":"text","value":"If the internet were a country, it would be the world’s sixth biggest polluter."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The internet consumes around 416TWh per year in electricity. That number does not say much until you compare it to the 300TWh the United Kingdom consumes. These are staggering numbers, and they will only go up as the internet keeps growing. Whether you realize it or not, carbon emissions are generated all over the place."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that is 211 kg CO2 per year or about twice the weight of a professional basketball player. This is more carbon than ten trees can absorb. If you think about how many websites we have on the internet, this comparison paints a pretty scary picture."}]},{"type":"element","tag":"h3","props":{"id":"the-luxury-dilemma-the-rich-experience-and-fast-page-loads"},"children":[{"type":"text","value":"The Luxury Dilemma: The Rich Experience and Fast Page Loads"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Every web page is crafted with art-directed elements that tell the right story. Luxury product pages are rich experiences that make the user linger and enjoy the ride. This approach is great for the potential customer, but there is a dark undertone when we consider the environment. These pages are full of heavy images, videos and animations. The heavier the page, the more carbon is emitted. If pages take longer to load, the emissions go up due to more device usage–and the antenna and screen are used for a longer period too."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There are some conflicting goals within luxury on the web. We want a rich experience, but we also want hyper-fast page loads. We all know that slow pages mean more user drop-off. And to make matters worse, we also need to think about the environment. We need to contain how much carbon is blasted into the atmosphere when someone visits a page."}]},{"type":"element","tag":"h3","props":{"id":"how-to-reduce-carbon-emissions-from-your-website"},"children":[{"type":"text","value":"How to Reduce Carbon Emissions from Your Website"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The above describes a complicated mix of problems to solve. We know that carbon emissions are lowest if:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A page is fast to find"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The page loads fast and with little resources"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Users stay on a page for a very short time"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"These three points are hard to carry out in the current way of working in luxury. That is not because we do not know how to build websites but because the goals are different. We want visitors to explore the brand, linger and become influenced by the product story. They should become lifelong customers. Sadly, this goes against what is best practice for websites with a low carbon footprint."}]},{"type":"element","tag":"h3","props":{"id":"being-sustainable-without-compromising-quality"},"children":[{"type":"text","value":"Being Sustainable Without Compromising Quality"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But fear not: There is a solution that can get us much closer to being sustainable. We can even keep the same level of quality we have now. In addition to being greener, this solution makes our websites more accessible to people in upcoming markets. The answer is: optimization of image and video delivery. We solve the problem by reducing excess and only loading what is needed in the context of the user."}]},{"type":"element","tag":"h3","props":{"id":"are-we-there-yet-optimizing-media-asset-delivery"},"children":[{"type":"text","value":"Are We There Yet? Optimizing Media Asset Delivery"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Most traditional CMS systems focus on content editing or cataloguing of content and not on serving of content per se. Serving the content is part of the suite of tools in the platform, but the focus tends to be on other aspects. We call this the “best-of-suite” approach where one vendor deals with all aspects of the website."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nowadays, there are companies that solve specific problems within the eco-system of websites. We call these “best-of-breed” solutions, and they tend to be cloud native SaaS companies. Among these companies, there is a category that only deals with media asset delivery."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Images and videos are particularly hard. If we ask a content editor, filmmaker, or web developer how to optimize assets for the web, they generally do not know. The same goes for the best-of-suite CMS systems. They do not specifically optimize assets for the web—they serve them as is."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This leaves the responsibility to the content editor. We have seen people struggle with photoshop and not know how to optimize an image. Teaching courses and paying for Adobe licenses is commonplace and awfully expensive."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Fortunately, there is a plethora of ways to optimize images and videos for the web—and the SaaS solutions mentioned above take care of the problem for you. They serve assets in the right format for the user’s context (browser, device, resolution). And they reduce the file size with AI to be indistinguishable from the original—doing this by hand as a content editor is impossible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We have had projects where the page weight dropped by 90 percent without loss of quality. Content editors would only upload the original image and the system did the rest."}]},{"type":"element","tag":"h3","props":{"id":"loading-the-right-assets-in-the-context-of-the-user"},"children":[{"type":"text","value":"Loading the Right Assets in the Context of the User"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to serving optimized assets, the most gain is made when not serving them at all. As funny as this may sound, it is the most effective way to have a low-carbon website. If a user never scrolls down or never opens the big mega menu, what is the use in loading these assets in the first place? You should only load assets you know the user will see. We call this “lazy loading,” and it is one of the most powerful tools in the bag of tricks of web developers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to lazy loading, it is also important to load assets in the right context. If a user visits your website on a phone, make sure to load an image with the same resolution the phone has. Loading bigger assets unnecessarily degrades the user experience. It also makes the website have a higher carbon footprint due to excessive file size."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The same goes for file types. If you want an animated background image on the hero banner (we all do), do not use a GIF, but rather a video. GIF’s are about five times as big as videos and tend to not work well on mobile devices."}]},{"type":"element","tag":"h3","props":{"id":"looking-ahead-on-website-sustainability"},"children":[{"type":"text","value":"Looking Ahead on Website Sustainability"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We cannot always optimize our web pages according to the best practices for low-carbon websites. This is just the nature of luxury. But we can focus on smaller parts of the equation that have a huge influence on how sustainable the website is. All of this can be accomplished without compromising on quality."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Look at the future and choose a best-of-breed solution that handles one of the most complex parts of the web: images and media. By combining optimized assets and lazy loading we make our pages lighter. This means they are more accessible to new customers in emerging markets."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And wouldn’t it be nice if content editors did not need photoshop licenses anymore? The overhead of training and the extra process is not worth it."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Instead, have your media delivered by a specialized solution—Mother Nature will thank you for having a low-carbon website."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter","depth":2,"text":"If the internet were a country, it would be the world’s sixth biggest polluter.","children":[{"id":"the-luxury-dilemma-the-rich-experience-and-fast-page-loads","depth":3,"text":"The Luxury Dilemma: The Rich Experience and Fast Page Loads"},{"id":"how-to-reduce-carbon-emissions-from-your-website","depth":3,"text":"How to Reduce Carbon Emissions from Your Website"},{"id":"being-sustainable-without-compromising-quality","depth":3,"text":"Being Sustainable Without Compromising Quality"},{"id":"are-we-there-yet-optimizing-media-asset-delivery","depth":3,"text":"Are We There Yet? Optimizing Media Asset Delivery"},{"id":"loading-the-right-assets-in-the-context-of-the-user","depth":3,"text":"Loading the Right Assets in the Context of the User"},{"id":"looking-ahead-on-website-sustainability","depth":3,"text":"Looking Ahead on Website Sustainability"}]}]}},"_type":"markdown","_id":"content:4.writing:make-the-web-greener-luxury-edition.md","_source":"content","_file":"4.writing/make-the-web-greener-luxury-edition.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/Cex6PFmN3Y.1718484357766.json b/api/_content/query/Cex6PFmN3Y.1718484357766.json deleted file mode 100644 index fd91fa05..00000000 --- a/api/_content/query/Cex6PFmN3Y.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/the-2015-paris-maratho","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The 2015 Paris marathon","description":"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue...","id":1406188,"slug":"the-2015-paris-maratho","date":"2023-03-18T22:45:48Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furlbqaankzj82uhwrfq7.jpg","canonical_url":"https://dev.to/timbenniks/the-2015-paris-marathon-i0l","tags":["personal","fitness"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue Saint-Antoine. Seeing all these people swooshing by impressed me so much that I signed-up for the 2015 marathon on the spot. The goal was set, the easy part was over."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gu3psk58kwz3gfppsmc8.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I gave myself five months to conquer the beast. 42.195 kilometres. After running on and off for a couple of years it was time to get serious. As I work for AKQA I naturally chose to train with the Nike+ app and all the related products."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Nike’s marathon training program was brutal. Even at the rookie level it made me run five times a week from the get-go. After living the good life for eight months in Paris both my endurance and cardio vascular strength were shit. It’s safe to say I was happy that the distances were short for the first couple of weeks."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I didn’t have any specific goals in mind, just general stuff like: “I want to get a bit lighter so the running gets easier” or “I’d love to set a new half marathon personal best at one point”. I trusted the rigorous training schedule would get me there eventually."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It didn’t. The training was so intense that I had skip workouts and I had to start experimenting with food to figure out how I could get my legs ready for the next run. My body could just not cope with the sheer amount of kilometres I had to run each week."}]},{"type":"element","tag":"h3","props":{"id":"january"},"children":[{"type":"text","value":"January"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After two months of pain I had finally found a balance. Turns out that eating super low fat and high carb was the best for my recovery. I was basically eating according to the 80/10/10 principle. 80% carbs, 10% fats, 10% protein. I’m not preaching this way of eating, it was just great for me."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"January","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9z60d58hzj247adpsmsn.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To achieve eating this macro ratio I had to cut out all animal products. If I ate too much fat on a rest day, like when you go out to dinner and you don’t want to be the asshole who can’t eat anything, I would have heavy legs the next day."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started eating copious amounts of fruit, rice, pasta, quinoa and veggies. My brain started functioning ten times better and I didn’t even think about coffee anymore. January was awesome. I ran pain free and the long distances started to become enjoyable. Good times. I ran 147km that month. This might not seem a lot to seasoned runners but I came from ~50km a month. I started a new chapter in my running career."}]},{"type":"element","tag":"h3","props":{"id":"february"},"children":[{"type":"text","value":"February"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We went on a ski trip in the beginning of February. I was an amazing holiday with loads of skiing, good food and laughs. I did some workouts in the gym and a proper mountain walk. I really hoped I hadn’t lost my running gains."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"February","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etfg0xoxax0zbyzrmcig.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first Monday back I had a nasty cough but decided to at least try my fast 8km run I had planned for that day. Bad decision. Over the course of the week I developed a bronchitis and both the doctor and my wife (the boss and a bad ass physiotherapist) forbade me to run the following two weeks."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I slept a lot and kept on eating well and as soon as the illness lifted I started running short distances again. I cursed my way through the first week. Even though the running hurt, my pace was still fast."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In February I ran the awesome amount of 37.98km over five runs. The last of the five was the most painful 15km run of my life. We’d strolled around “Le Salon d’Agriculture” for three hours before. We tasted wines and tried cheeses. I had forgotten to drink any water. Rookie mistake. Lactic acid legs for days!"}]},{"type":"element","tag":"h3","props":{"id":"march"},"children":[{"type":"text","value":"March"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Back to awesome. I ran 181km in 4 weeks. An absolute record month in my book. I had an amazing run in Amsterdam on which my whole family followed me by bike. I also ran personal bests on the 5km, 10km, 15km and 21km. I decided to drop the Nike+ program as I had missed too much the month before. This was a smart move. The Nike+ program would have burnt me out."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I had been in training for 4 months by now and I had been sick the month before. The exhaustion was setting in a bit. I didn’t particularly feel it in my legs, but I started having problems staying focused on evening runs. One time I had to jump aside while a policeman was arresting someone. I flipped my ankle and had to walk home for an hour."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"March","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r8u4pxda4nalwwa4x0o.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I felt stupid for being distracted. Even though I had super light shoes without much cushioning I stopped being in touch with the ground I was running on. Sounds like I’m a hippy aye? It’s a runners thing."}]},{"type":"element","tag":"h3","props":{"id":"april"},"children":[{"type":"text","value":"April"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Only two weeks left. I did a 27km run in a very busy, rainy and hilly Paris. After that I was so exhausted that I decided to start my tapering period a week early. I thought I’d hurt my feet too much and suddenly got very nervous. My marathon veteran colleagues told me this is normal and I should just chill out."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I only ran a handful of runs up until the big day. The thing I liked most about the tapering period was the carbo-loading. My food intake doubled in the week before the big race. #CTFU. I felt amazing and started dropping weight. I should have eaten much more the past four months."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"April","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4p4xky34q3vxlhfcgfg6.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"d-day"},"children":[{"type":"text","value":"D-DAY"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I was so nervous I hardly even looked at the enormous amount of runners around me. I was standing on the Champs-Elysees with 50.000 other athletes. This was going to be the most epic challenge of my life."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"D-DAY","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qsgkyqt7mudojkqok6z.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first bit felt like heaven. Especially because my mate "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/chrisfinch","rel":["nofollow"]},"children":[{"type":"text","value":"Chris"}]},{"type":"text","value":" had just given me an amazing pep-talk over the phone. The Champs Elysees was mine and mine alone. Turns out I clocked the first kilometre at a 6:12 pace. Slow as fuck but a nice start to a long day. After that I slowly picked up the pace to a nice average between 5:25 and 5:35."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Around the 7km point my awesome friend "},{"type":"element","tag":"a","props":{"href":"https://www.instagram.com/henrike.theda.klug/","rel":["nofollow"]},"children":[{"type":"text","value":"Henrike"}]},{"type":"text","value":" spotted me from the sidelines and joined me for about 1.5km. We picked up the pace and race had properly started."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It was super warm so I drank water every chance I got. My training had been during winter time so I was used to running with a maximum temperature of 10 degrees celcius. Even though it was warm I ran a great half marathon (for me at least, 01:52:34)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The heat had silently sneaked up on me and at kilometre 22 the wall hit me like a hammer."}]},{"type":"element","tag":"h3","props":{"id":"the-wall"},"children":[{"type":"text","value":"The Wall"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The wall is really the biatch people say she is. I could not even put one foot in front of the other anymore. It took me half an hour to stumble to the next food station. It took 35 minutes to run 3km. I had some water, a sugar cube, a GU gel and a slice of mandarin. Obviously this was way too much so I felt sick for the next 5km. My brain was telling me to stop but I just couldn’t let go."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the following kilometres it didn’t get any better. I managed to find a happy medium in between running and walking. My nike+ app was all over the place and wasn’t accurate at all anymore. At one point I just turned it off and upped my Spotify volume. The next song was by Motörhead and I felt my heart skip a beat. The race was back on.For 2km.After that I went back to my previous state."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"During the five months I trained my wife had always been there for me. She gave me tips and picked me back up when I had hit a low point. When I saw her at kilometre 30 I couldn’t be happier. I gave her a quick kiss and a smile and I was on my way again."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Just before hitting the Bois de Boulogne I became captain slow. I was having a real rough patch when I heard people shout my name. These people were "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/photo.php?fbid=10153775712979392&set=a.10151354689589392&type=1&theater","rel":["nofollow"]},"children":[{"type":"text","value":"Marie and her son Adrian."}]},{"type":"text","value":" It’s great to have the support of your friends. It made me start running again. As it turns out, my wife had been sending loads of photo’s to my family back in Amsterdam. They had been following my every move."}]},{"type":"element","tag":"h3","props":{"id":"bois-de-boulogne"},"children":[{"type":"text","value":"Bois de Boulogne"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Bois de Boulogne was truly intense. They call it “the march of the death” and rightfully so. It starts at kilometre 35, there are hardly any supporters and it’s mostly uphill."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I did the “pain shuffle” for the last 7km. The pain shuffle means that you can’t really bent your legs anymore but you still run. In my case, stumbling without falling. I ran from km sign to km sign without even hearing my music."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When I saw the 40km sign I decided to not walk anymore and I did whatever it took to make that happen. At kilometre 41 I noticed that a lot of the faster runners were coming back to show us their medals and cheer us on. There was an amazing feeling of companionship in the pack of runners."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"At kilometre 42 I saw the finish AND my wife at the same time. It was finally over. I didn’t even bother to sprint."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It took me four hours and forty six minutes. A total pain train. While riding home on the metro I felt a little shit because I walked so much. Should I have gone deeper? But while writing this piece, pride is taking over. I actually did this. My first marathon in the heat in under five hours. #putain."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"finisher","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdxzyzf1wztrl220nwa4.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"some-numbers"},"children":[{"type":"text","value":"Some Numbers"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ran 615.14km over 67 runs with an average pace of 05:42"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average distance was 9.18km per run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I went from 95 to 86.7 kilos (and lost all gains)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I slept 7h 50m a night on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ate 1840kcal a day on average (probably not enough)"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I took 12609 steps a day on average"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"january","depth":3,"text":"January"},{"id":"february","depth":3,"text":"February"},{"id":"march","depth":3,"text":"March"},{"id":"april","depth":3,"text":"April"},{"id":"d-day","depth":3,"text":"D-DAY"},{"id":"the-wall","depth":3,"text":"The Wall"},{"id":"bois-de-boulogne","depth":3,"text":"Bois de Boulogne"},{"id":"some-numbers","depth":3,"text":"Some Numbers"}]}},"_type":"markdown","_id":"content:4.writing:the-2015-paris-maratho.md","_source":"content","_file":"4.writing/the-2015-paris-maratho.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/D10q53lJp0.1718484357766.json b/api/_content/query/D10q53lJp0.1718484357766.json deleted file mode 100644 index bc74d1ee..00000000 --- a/api/_content/query/D10q53lJp0.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/my-fitness-story","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"My Fitness Story","description":"From fat and sick to slim and happy Aside from a short period in high school I have always...","id":1406186,"slug":"my-fitness-story","date":"2023-03-18T22:39:46Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86xayxbotaqwk8get75h.jpg","canonical_url":"https://dev.to/timbenniks/my-fitness-story-1p97","tags":["fitness","personal"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"from-fat-and-sick-to-slim-and-happy"},"children":[{"type":"text","value":"From fat and sick to slim and happy"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Aside from a short period in high school I have always been a chubby kid. When I lived at home my mom made sure I didn’t go overboard with food. She stopped me here and there when needed and always made sure we had healthy food on the table."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After highschool I started living on my own and became a lot more active as a musician. I got used to a very burgundian lifestyle and started eating all kinds of junk. The free drinks for musicians also didn’t help."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have always been interested in muscles and posture but never had the discipline to change myself into something I liked. I quickly turned into a lazy musician. Beer and fast food, either before or after a gig, were the norm. I didn’t know any better and ate highly refined foods containing a shitload of ingredients with long and incomprehensible names. Looking back it’s unbelievable how little I knew about stuff I put in my body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Being fat was always in the back of my mind and it nagged at me. When I reached 120kg I felt horrible and knew change was needed. I was always sweating, tired and out of breath. I had high blood pressure and was often feeling ill. Diabetes type 2 was creeping up on me."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"fat","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z7h5x2kxppg53w4is65y.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even after this turning point I was still completely inadequate at sports and I didn’t have any discipline. I didn’t even know how to properly contract my muscles to lift something. I had no body sense at all."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I asked my mate "},{"type":"element","tag":"a","props":{"href":"https://www.facebook.com/chrisfinch","rel":["nofollow"]},"children":[{"type":"text","value":"Chris"}]},{"type":"text","value":" to help me out. He was (is) a complete legend and instantly jumped at the chance to help a friend. We started doing his “half hour of power”, lifted weights and ran as often as possible."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Well, I tried."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I had excuses. Many of them. “But I had a gig last night” or “I’m still too sore from last week”. I was a complete pussy and it must have frustrated Chris. But he was strong and pulled me through."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As I finally saw some results I overcame my disciplinary problems step by step. I changed my diet and the fat started coming of quickly. I even gained some muscle."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started researching and a whole world of bro-science opened up to me. I did programs like P90X, 5x5, and 4-hour body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"weightloss","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0wcd7nly7arzfjs9glt.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The thing that helped me most was my Facebook activity. I posted my weight daily. People would respond if it went up or down and it kept me motivated. This was the first time in my life peer pressure actually had a positive influence on my state of mind."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"weightloss","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8oa7r37rqrhgldhtegpd.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"guitars","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4yyrv0qc0q0r59piv0n.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In April 2014 my wife and I moved to Paris. At that point I was vegan for half a year and I was at my lightest weight since I started training. We had to deal with different stress factors when we arrived and I let go of the strict livestyle a little and gained some weight again. The cheese, wine and French baguettes are too awesome not to enjoy. In January 2014 I got up to ~95kg and Paris had officially turned me into a croissant."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But I wasn’t a croissant for long. I started lifting some weights again and slowely started to get back into it. When the marathon passed by our apartment in Rue Saint-Antoine in April 2014 I signed up on the spot. I became a long distance runner over night. New goals were set, and crushed over the proceeding six months."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oph2vujeha2kjojtab6i.jpg","width":1280},"children":[]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"from-fat-and-sick-to-slim-and-happy","depth":2,"text":"From fat and sick to slim and happy"}]}},"_type":"markdown","_id":"content:4.writing:my-fitness-story.md","_source":"content","_file":"4.writing/my-fitness-story.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/ERjUsfW4wf.1718484357766.json b/api/_content/query/ERjUsfW4wf.1718484799542.json similarity index 100% rename from api/_content/query/ERjUsfW4wf.1718484357766.json rename to api/_content/query/ERjUsfW4wf.1718484799542.json diff --git a/api/_content/query/EyOIvVwDWf.1718484357766.json b/api/_content/query/EyOIvVwDWf.1718484357766.json deleted file mode 100644 index 890c3c15..00000000 --- a/api/_content/query/EyOIvVwDWf.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/the-future-of-managing-projects-at-agencie","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of managing projects at agencies","description":"Calling for a revolution in how agencies run tech projects I spent a lot of time working...","id":1405725,"slug":"the-future-of-managing-projects-at-agencie","date":"2023-03-18T12:56:10Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipu6a76iegjp4d19mb0u.png","canonical_url":"https://uniform.dev/blogs/composable-architecture/the-future-of-managing-projects-at-agencies","tags":["composable","architecture","agency","process"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"calling-for-a-revolution-in-how-agencies-run-tech-projects"},"children":[{"type":"text","value":"Calling for a revolution in how agencies run tech projects"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I spent a lot of time working through messy production processes during my years at digital agencies. From single campaigns to building 800+ websites for a brand and its sub-brands, easier processes would have been better for the final result and my hairline. I’m so excited to work with new technology that will change the game for managing agency processes—making everything from delivery to collaboration much easier and faster."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I have no illusions that I can fix everything—but I hope that you read this with an open mind and see that a better way is possible. Agency processes are ever-changing, and things always seem to fall apart as deadlines near. Nonetheless, by following what I describe below, you can deliver faster from day one and show results to clients for better feedback, all while setting up brands with a future-proof architecture. And yes, you can stay agile at the same time!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Why agencies embracing composable architectures face challenges"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Agencies that start working with "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architectures"}]},{"type":"text","value":" quickly see the benefits during the pitch stage, but when the work starts, so do the problems—mainly when you connect services and when content editors or marketers start working. Because projects are complex, agencies generally sell discovery phases, workshops, and agile methodologies. That’s a great practice, but one that also runs face-first into the challenge of building composable projects at scale."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here are two key issues:"}]},{"type":"element","tag":"h3","props":{"id":"the-way-agencies-work-makes-parallel-collaboration-difficult"},"children":[{"type":"text","value":"The way agencies work makes parallel collaboration difficult."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, choosing a CMS or front-end framework depends on the discovery phase or finalization of a client contract. When a CMS or a design is ready, front-end developers can start building the interface, and back-end developers can commence data modeling. QA always happens at the end, inevitably spilling over into the next sprint."}]},{"type":"element","tag":"h3","props":{"id":"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way"},"children":[{"type":"text","value":"The architecture is code-first, i.e., composed of glue code that works in only one way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"As you scale that up, things get very painful very fast. "}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Abstract, code-first systems aren’t built for content editors. At best, they tolerate them. Given that it’s hard to deliver great work while constantly fighting with your own tools, people become upset and less productive, or they leave. Either result can cause major project delays."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers are constantly involved with the publication process because content editors need technical support to create experiences. That means that developers are kept from building new, value-adding features and pursuing innovation, and every sprint is filled with unpredictable disruption."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A tech stack connected through tightly-coupled integration code is way worse than the legacy monoliths. If things go wrong, no sole organization is at fault. Instead, the people with the overall responsibility—the agency—are held accountable."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"That glue code I mentioned before? It sticks "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"hard"}]},{"type":"text","value":". You must prepare for pain when you try to replace a single headless source in a web of hard-integrated sources and front-end code. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There is a better way, but it requires a major shift in your thinking."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How a great DXCP unlocks parallel workflows"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Time-to-value is much more critical than time-to-market. Going to market quickly with a terrible product doesn’t do much more than damage your reputation and annoy customers. The fact you least did it quickly won’t be much consolation to anyone."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The secret for time to value is working more in parallel. Of course, that’s much easier said than done for difficult tasks like ideation of page composition, component definition, data-model design, CI/CD setup, and, concurrently, choice of the front-end framework. Fortunately, cool new tools are around to make it much easier. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To work in parallel, first, integrate design-related data into your process with a "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":". Design data presents your content in a certain way in the context of each page and potentially for each audience. For example, a featured product shows as being featured because you tell the page to feature it in that specific way."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On the other hand, the product data comes from your commerce engine, which just serves the product info and has no knowledge of whether the product is featured on a page. The DXCP orchestrates and links your design to the external source(s) that hold your data. This crucial context step allows you to work effectively in parallel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Note the difference between domain data and design data. With a DXCP, you design pages based on the components that make up a page. You can link each component to a resource, i.e., an external API like a headless CMS, DAM, PIM, or a legacy system. Your domain data resides in those systems. You then bind the external API data to parameters and fields on the components in the DXCP to create the final experience for your audience on a channel."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can set up connections with DXCP so that the system acts as an API data aggregator that loosely couples to external sources. Additionally, you can establish access rules that define which users can add resources and bind to components. For example, content editors could add the Instagram API and feed that data to a component for campaign pages without developer assistance. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once resources are bound, API results are cached at the CDN edge for fast and easy querying. Developers only need to connect to the CDN endpoint to access the data from all the sources that channel data to the components on the page."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even without a CMS, content editors can fill in the component fields with content, accelerating the UX and prototyping phases of a project. Once a CMS is in place, the content connects as a resource to a component without the need to rebuild the component. For efficiency, you can configure the fields to be dynamic. No coding is required."}]},{"type":"element","tag":"h3","props":{"id":"how-a-dxcp-enables-parallel-collaboration"},"children":[{"type":"text","value":"How a DXCP enables parallel collaboration"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you know what kind of components you need or have a library like "},{"type":"element","tag":"a","props":{"href":"https://www.kickstartds.com/","rel":["nofollow"]},"children":[{"type":"text","value":"kickstartDS"}]},{"type":"text","value":" or "},{"type":"element","tag":"a","props":{"href":"https://tailwindui.com/","rel":["nofollow"]},"children":[{"type":"text","value":"Tailwind UI"}]},{"type":"text","value":", you can configure them in the DXCP and start composing pages—with no need for a CMS initially. Simultaneously, the back-end team can select the headless tool while the front-end team can choose a front-end framework and start querying the composed pages. The QA team can start testing the front end as soon as the first few pages have been created with the component library."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Since the DXCP does not dictate what kind of hosting or CI/CD stack is needed, the DevOps team can work on the setup while the rest of the process is proceeding. Once you install the CDN integration, anyone with the appropriate access privileges can handle releases. Can’t find the prebuilt integration? Build your own, or just add a few webhooks for communication."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On top of that, DXCPs also feature a project map as a basis for creating pages and subpages. The product owner can start building user journeys in the same system while all the other operations are going on. Say goodbye to journey spreadsheets because you can now use the tool you will also use when teh project is in production."}]},{"type":"element","tag":"h3","props":{"id":"how-to-ensure-the-architecture-is-divisible-and-maintainable"},"children":[{"type":"text","value":"How to ensure the architecture is divisible and maintainable"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Due to the nature of DXCP, you don’t need to interconnect external tools; they all talk directly to the DXCP. Likewise, changing or adding headless sources does not affect developers in nearly the same way. Without developer involvement in the no-code editor, universal previews, and project maps, content editors are much more productive. Business users don’t need to ‘publish and pray’ when they build a page from multiple sources—it’s all right there."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, since the no-code editor integrates flawlessly with external sources and normalizes their interfaces, content editors don’t need to understand how those systems work—making it far easier to onboard new team members. Add that to the freedom of grouping components together and easily personalizing those sources; business users are empowered to own their workflows and results without depending on overworked devs. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given that DXCP is front-end, hosting, and CDN agnostic, developers can use the tools they love, which makes the most sense for the job at hand. No more compromising with the whims of legacy tech! Even though DXCP has an opinion on the direction of the architecture, once developers go down that road, they have complete freedom to do their job in the way they prefer."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##How DXCP transforms the project-development process"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Adopting DXCP can revolutionize how you build projects—if you let it. With traditional blockers out of the way, teams can accomplish more in parallel and show value much faster. For all that composable architecture at scale is generally messy and chaotic, forcing agencies and brands to work around issues never seen before: digital experience composition adds structure while staying tech-agnostic and accelerates time-to-value."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter how much things change, some things stay the same. The agencies that best embrace new technologies and new mindsets to maximize their impact will gain an edge in the market. As the market gets less certain, finding ways to deliver more value for clients faster and effectively showcase it will be crucial. When that also creates a platform that will deliver in the long term and position your agency as a key strategic partner—that’s where the magic happens. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"calling-for-a-revolution-in-how-agencies-run-tech-projects","depth":2,"text":"Calling for a revolution in how agencies run tech projects","children":[{"id":"the-way-agencies-work-makes-parallel-collaboration-difficult","depth":3,"text":"The way agencies work makes parallel collaboration difficult."},{"id":"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way","depth":3,"text":"The architecture is code-first, i.e., composed of glue code that works in only one way."},{"id":"how-a-dxcp-enables-parallel-collaboration","depth":3,"text":"How a DXCP enables parallel collaboration"},{"id":"how-to-ensure-the-architecture-is-divisible-and-maintainable","depth":3,"text":"How to ensure the architecture is divisible and maintainable"}]}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-managing-projects-at-agencie.md","_source":"content","_file":"4.writing/the-future-of-managing-projects-at-agencie.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/FRYyxqTTRY.1718484357766.json b/api/_content/query/FRYyxqTTRY.1718484799542.json similarity index 100% rename from api/_content/query/FRYyxqTTRY.1718484357766.json rename to api/_content/query/FRYyxqTTRY.1718484799542.json diff --git a/api/_content/query/GA8RnNeHtb.1718484357766.json b/api/_content/query/GA8RnNeHtb.1718484357766.json deleted file mode 100644 index af836a5f..00000000 --- a/api/_content/query/GA8RnNeHtb.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/the-future-of-headless-cms-content-federation-with-graphql","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of headless CMS: Content Federation with GraphQL","description":"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing...","id":1614623,"slug":"the-future-of-headless-cms-content-federation-with-graphql","date":"2023-09-28T14:39:16Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pk8b2ihfddxqlt3w4tu.jpg","canonical_url":"https://hygraph.com/blog/content-federation-with-graphql","tags":["headless","cms","graphql","federation"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing amount of fragmentation in tooling, it offers a way to decouple data and systems, giving organizations more flexibility and agility."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Despite the promise of headless architecture, data, and systems easily become tightly coupled. Whether through custom middleware or frontend stitching, one system can have ripple effects on all others. This can make it difficult to manage and update content and causes technical debt. In the past, I called this the"},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/","rel":["nofollow"]},"children":[{"type":"text","value":" MACH Monolith"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A federated architecture, on the other hand, truly decouples data and systems. Federation is a technique of using autonomous systems to work with the data and logic they’re best suited for. What differentiates that from the MACH Monolith is how the data comes back together. Federation takes these autonomous services and crafts a unified, standardized, and powerful API for use in any application."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While there are many patterns for accomplishing federation, one architecture is Content Federation. Content federation is the process of bringing together content from multiple sources into a single, unified view that can be accessed both at the API layer, as well as at the editor level."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In a federated architecture, the content federation layer brings together content from the different systems. This layer acts as a single point of access for data, making it easy for users to get the content they need, regardless of where it is stored."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A few benefits of a federated architecture include:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Increased flexibility and agility: Each system is responsible for its data and logic, which gives them more autonomy and flexibility. This makes it easier to manage and update systems and makes it easier to add new systems to the architecture."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Improved security: A federated architecture can reduce the attack surface. When data and systems are tightly coupled, a vulnerability in one system can compromise other systems. A federated architecture reduces the risk of this happening by decoupling data and systems."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Reduced complexity: A federated architecture can simplify how data is managed. In a traditional architecture, data is often stored in multiple systems, making it difficult to keep track of. A federated architecture brings together data from different systems into a single, unified view, which makes it easier to manage, inspect, and use data. The implementation layer has one standardized, unified way to ask for the content."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Overall, a federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Federated Content Platform","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://media.graphassets.com/4wC9B4MBSaZDeQvB26QA","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-importance-of-autonomy-in-a-federated-architecture"},"children":[{"type":"text","value":"The importance of autonomy in a federated architecture"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"While most federation articles focus on the benefits of unification, system autonomy is really the key benefit. This autonomy means that systems can be developed and managed independently without worrying about the other systems in the architecture. This can be a major advantage, as it allows organizations to be more agile and responsive to change while still maintaining standards."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This enforced autonomy increases the reach of standardization. In an e-commerce application, product information — pricing, description, categorization — should be standardized wherever it’s used. Without Content Federation, the product data would be re-entered in the systems that don’t house it. When an editor of the blog goes to create a post about a product, they introduce the human potential for error. If they merely select a product from the e-commerce system, they can rely on the owners of that data to keep their data standardized."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When the standards for a particular piece of data changes, the data is changed in the home system, and each other system is ready to receive that change. No additional work necessary."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security. Federation brings autonomy to the data layer while also giving rise to a unification layer Content Federation brings a deeper sense of standardization through systemic change instead of human change. Without autonomy, we have complexity; without unification and standardization, we have glue code. We need both in the modern stack."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-importance-of-autonomy-in-a-federated-architecture","depth":2,"text":"The importance of autonomy in a federated architecture"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-headless-cms-content-federation-with-graphql.md","_source":"content","_file":"4.writing/the-future-of-headless-cms-content-federation-with-graphql.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/IAiE2ZFxKJ.1718484357766.json b/api/_content/query/IAiE2ZFxKJ.1718484357766.json deleted file mode 100644 index 24a7f41e..00000000 --- a/api/_content/query/IAiE2ZFxKJ.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/alive-and-kicking","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"alive and kicking","description":"alive and kicking desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A GUITAR KARAOKE EXPERIENCE WITH COMPOSABLE ARCHITECTURE"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718459447/Tim/contentcon-tim.png","width":1440,"fit":"cover","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Rock & Roll in the browser"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Get ready to rock out at your next tech conference! I've created an electrifying browser-based karaoke experience tailored explicitly for rock & roll guitar. Using the innovative power of Vue, Nuxt, and webmidi, everything from the backing tracks to the guitar amp presets is dynamically controlled."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And the best part? You, the audience, get to participate too! By logging in with Twitter or Github, you can live-vote what songs I should play next, making this a fully interactive and unforgettable experience."}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948358/Alive%20and%20Kicking/104649HDV09996-Enhanced-NR.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Share your vote"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You, the audience, get to participate too! By logging in with your Twitter or Github account, you can live-vote what songs I should play next during my guitar karaoke performance."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But that's not all - every vote you cast will be displayed on the big screen as a bouncing ball, making you a part of the talk. You vote, I play - let's make this a night to remember!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After voting for your favorite song, you can share a personalized image of the song and your profile picture on your social media accounts."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:media":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":1080,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw md:40vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718461639/share_ddu23k.jpg","width":1920},"children":[]}]}]}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948347/Alive%20and%20Kicking/102217HDV09938-Enhanced-NR.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"6",":small":"false","folder":"alive-and-kicking"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:8.alive-and-kicking.md","_source":"content","_file":"8.alive-and-kicking.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/IAiE2ZFxKJ.1718484799542.json b/api/_content/query/IAiE2ZFxKJ.1718484799542.json new file mode 100644 index 00000000..77949930 --- /dev/null +++ b/api/_content/query/IAiE2ZFxKJ.1718484799542.json @@ -0,0 +1 @@ +{"_path":"/alive-and-kicking","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Alive and kicking","description":"Alive and kicking, a browser based guitar karaoke with composable architecture using live voting. Built with Vue, Nuxt, Supabase and Hygraph.","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking"}]}]},{"type":"element","tag":"template","props":{"v-slot:description":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A GUITAR KARAOKE EXPERIENCE WITH COMPOSABLE ARCHITECTURE"}]}]},{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718459447/Tim/contentcon-tim.png","width":1440,"fit":"cover","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Rock & Roll in the browser"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Get ready to rock out at your next tech conference! I've created an electrifying browser-based karaoke experience tailored explicitly for rock & roll guitar. Using the innovative power of Vue, Nuxt, and webmidi, everything from the backing tracks to the guitar amp presets is dynamically controlled."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And the best part? You, the audience, get to participate too! By logging in with Twitter or Github, you can live-vote what songs I should play next, making this a fully interactive and unforgettable experience."}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948358/Alive%20and%20Kicking/104649HDV09996-Enhanced-NR.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"two-column","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:sidea":""},"children":[{"type":"element","tag":"title-block","props":{"tag":"h3","title":"Share your vote"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You, the audience, get to participate too! By logging in with your Twitter or Github account, you can live-vote what songs I should play next during my guitar karaoke performance."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"But that's not all - every vote you cast will be displayed on the big screen as a bouncing ball, making you a part of the talk. You vote, I play - let's make this a night to remember!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After voting for your favorite song, you can share a personalized image of the song and your profile picture on your social media accounts."}]}]}]}]},{"type":"element","tag":"template","props":{"v-slot:sideb":""},"children":[{"type":"element","tag":"media","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:media":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":1080,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw md:40vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1718461639/share_ddu23k.jpg","width":1920},"children":[]}]}]}]}]}]},{"type":"element","tag":"hero","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:image":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tim Benniks","height":618,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://res.cloudinary.com/dwfcofnrd/image/upload/v1713948347/Alive%20and%20Kicking/102217HDV09938-Enhanced-NR.jpg","width":1440,"fit":"thumbnail","quality":"100"},"children":[]}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"6",":small":"false","folder":"alive-and-kicking"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Alive and Kicking Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:8.alive-and-kicking.md","_source":"content","_file":"8.alive-and-kicking.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/JU1wjanXWh.1718484357766.json b/api/_content/query/JU1wjanXWh.1718484799542.json similarity index 100% rename from api/_content/query/JU1wjanXWh.1718484357766.json rename to api/_content/query/JU1wjanXWh.1718484799542.json diff --git a/api/_content/query/JmfU35l3zw.1718484357766.json b/api/_content/query/JmfU35l3zw.1718484799542.json similarity index 100% rename from api/_content/query/JmfU35l3zw.1718484357766.json rename to api/_content/query/JmfU35l3zw.1718484799542.json diff --git a/api/_content/query/LOe0VEbmgd.1718484357766.json b/api/_content/query/LOe0VEbmgd.1718484357766.json deleted file mode 100644 index d05abefc..00000000 --- a/api/_content/query/LOe0VEbmgd.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/videos","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"videos","description":"videos desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Videos"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I made video in different categories. From personal videos to vlogs, to tutorials and work related videos. Lot's of stuff to explore here!"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"tim"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Personal Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"mp"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Middleware Productions Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"uniform"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"headless-creator"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Headless Creator Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:index.md","_source":"content","_file":"3.videos/index.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/LOe0VEbmgd.1718484799542.json b/api/_content/query/LOe0VEbmgd.1718484799542.json new file mode 100644 index 00000000..0832db37 --- /dev/null +++ b/api/_content/query/LOe0VEbmgd.1718484799542.json @@ -0,0 +1 @@ +{"_path":"/videos","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Videos","description":"An overview of my videos","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Videos"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I make videos in different categories, from personal videos to vlogs to tutorials and work-related videos. There is a lot to explore here!"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"tim"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Personal Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"mp"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Middleware Productions Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"uniform"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform Videos"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"headless-creator"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Headless Creator Videos"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:3.videos:index.md","_source":"content","_file":"3.videos/index.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/Lf4U0zGT0w.1718484357766.json b/api/_content/query/Lf4U0zGT0w.1718484357766.json deleted file mode 100644 index 7326c786..00000000 --- a/api/_content/query/Lf4U0zGT0w.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/the-future-of-jamstack-is-composable","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"The future of jamstack is composable","description":"This post is either for developers who want an “at-scale” overview of modern architecture or for...","id":998786,"slug":"the-future-of-jamstack-is-composable","date":"2022-02-23T13:04:08Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso0lvl9w5rea6i7sfp6u.jpeg","canonical_url":"https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g","tags":["jamstack","architecture","composable","orchestration"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This post is either for developers who want an “at-scale” overview of modern architecture or for technical decision-makers looking at a great way to build a digital pipeline in this new composable world."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire."}]},{"type":"element","tag":"h2","props":{"id":"in-this-article"},"children":[{"type":"text","value":"In this article"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Use the Jamstack with your favourite framework and host on your favourite CDN."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Combining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future."}]},{"type":"element","tag":"h2","props":{"id":"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures"},"children":[{"type":"text","value":"The Jamstack: why it sits front and centre in modern architectures"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sites built with the Jamstack approach are a combination of static files generated by the CI/CD pipeline of your choice. Most dynamic stuff happens in the generation step, where the codebase reaches out to APIs and services to render all pages statically."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Jamstack: build time vs runtime","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpp5kpu4k3wxs91wne0b.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The performance gains alone justify this approach. There is no runtime page generation, and the app doesn’t have to connect to an origin server to figure out what content to serve. If you want to scale up for Black Friday, just put the static files in more places on the CDN edge, and all is well. Next to the performance gains, you also have a much more secure system. If your architecture has an origin server with all the knowledge of the system, that is a weak point for security."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Traditional web vs Jamstack","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp86io6058n938u4dw70.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can add dynamic data as well. CDN providers have built the ability to run code on the edge, implementing serverless functions and edge workers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A serverless function is a service that lets you run code without provisioning or managing servers. Serverless functions tend to be simple and do not have a state. They require an input, and they will give an output. After use, they will not stay up unless you request them to do that. The benefit is that the cost is low and that these functions are not running if not needed - consuming less energy. You can use them when compiling your Jamstack site, but they also work well at runtime."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Edge workers (as Cloudflare calls them) are pieces of code that live on the CDN edge close to the user and execute when a user visits a URL. This is ideal for reading cookie values and changing the stream of HTML that the CDN renders for that page. With this approach, you can dynamically manipulate what the user sees in their context while still serving a static page initially created by your Jamstack site. This approach is excellent for rendering personalised content based on user actions without the need for JavaScript hydration or an origin server."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Add dynamic parts to the Jamstack with serverless and edge compute","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfn819631e7mvnau8mwl.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"the-orchestration-how-to-cable-manage-your-architecture"},"children":[{"type":"text","value":"The orchestration: how to cable manage your architecture"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"How you connect things up before the site is rendered is vital for the platform you are building. There are many technical and organisational problems to address when you scale a composed architecture to big organisations."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Choices, choices, choices: CMS, Commerce, CDN, Marketing clouds, DAM, Personalization, A/B testing, CRM, etc."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Integration is complex, and orchestration is hard to build."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Often there is a lack of intuitive tools for non-devs to build and manage experiences."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Early implementation decisions can limit the ability to change and evolve."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Wrong choices can create developer bottlenecks and hinder time to market and agility."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The bigger the organisation, the more critical this statement becomes: "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"To achieve true value, you need to orchestrate technology, people, and processes."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The digital pipeline can be stalled at many places. You’ll need a platform to help you orchestrate the whole architecture into a usable system for all stakeholders. A cohesive system has the ability for multiple systems to work together as one - for each system to have an awareness of what the other systems are doing. This same story goes for the practitioners in the system. From developers to content editors and from marketers to data analysts. All these people play a vital role in your online success."}]},{"type":"element","tag":"h3","props":{"id":"the-platform-we-need"},"children":[{"type":"text","value":"The platform we need"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The platform we need has to be “opinionless” and technology agnostic. Its primary goal is to cater to all stakeholders and prevent re-platforming."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Services integrators or agencies often use the “re-platform” model. Out with the old monolith and in with the new monolith. This way, they can sell their business transformation story and do a big bang release. The drawback here is that re-platforming takes a long time and is costly. It is also the complete opposite of an agile approach to a project. Agencies tend to be \"platform partners\" and sell in a platform first solution rather than a specific value solution to a brand. This is logical as they can hire specialists that retain their value project after project. However, modern architectures demand making choices for the business's needs, not what the agency or software vendors want to sell in. Square pegs and round holes could work for a while until it’s too hard to manage, and then you re-platform. Again…"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The orchestration platform should support end-to-end delivery of digital products:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Development"}]},{"type":"text","value":": developers build components that incorporate content from multiple sources without building custom integrations."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Authoring"}]},{"type":"text","value":": practitioners build personalised digital experiences using no-code tools, including instant preview without involving developers."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Deployment"}]},{"type":"text","value":": developer and practitioner activities automatically trigger deployments to your CDN of choice to ensure digital experiences are always current."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Delivery"}]},{"type":"text","value":": Personalization and experimentation is delivered from the edge for the fastest possible performance."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The key is the “power of choice” for the tech stack, hosting / CDN, data fetching and what integrations are used. The point is that you as a technical stakeholder can choose when to add, remove or scale something without being held back by the system. There is no vendor lock-in, roadmap constraints, and re-platforming (swap an integration, migrate the data, and change some data mapping code)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"What a composable orchestration platform looks like","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvs9u5inctpg4f7iiu9h.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"data-fetching-approaches"},"children":[{"type":"text","value":"Data fetching approaches"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flexibility in how data is fetched from different sources is vital for the longevity of an orchestration platform. The platform SDK should not apply any opinion on how data is fetched. It offers an SDK that helps developers fetch it the way they want."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s essential that page compositions only point to data sources and that the platform itself does not store anything except for the identification of the component it references. The benefits are:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t store potentially sensitive data;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t duplicate content;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"the platform doesn’t have to know when data changes in the external source;"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The platform does not have to serve the data and ingest the SLA provided by the source data it delivers."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s up to the developer to use the platform SDK to retrieve the compositional data and use platform provided helper tools to query the different API endpoints. The beauty of this approach is that the SDK and how the data is fetched can live anywhere. From the local codebase to an external middleware layer or a serverless function. There are some benefits to positioning the data fetching outside of your codebase:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You can hire separate developers who only focus on the API and the data mapping to the desired format. This separates concerns between disciplines, and back-end developers now have a place where they can feel at home."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The front-end application doesn’t need to know what external sources are queried. It queries one endpoint that returns the desired format for the front-end components to render."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A standalone front-end without knowledge of what external APIs feed it is highly flexible, future-proof, and hard to hack. Imagine a design system full of components with excellent documentation of what properties they need and a simple SDK to query data and map it directly to these properties. If you have to switch CMS or commerce engine, it’s a matter of remapping the data to the component properties and you are done."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Data fetching in a composable orchestration platform","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u75kbivciz0ayqg3t7fd.png","width":1280},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"concluding"},"children":[{"type":"text","value":"Concluding"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To successfully manage your digital pipeline, we need orchestration that adds structure to the stack, making it easier to align API first sources toward the same business goal and empowering all of the various teams contributing to the end product - developers, content authors and marketers. To keep the digital pipeline productive as new technologies emerge, you need orchestration that gives freedom of choice in every aspect of the architecture both today and tomorrow."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Imagine if marketers and developers could be friends again and work together to create the best experience for their website visitors?"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"in-this-article","depth":2,"text":"In this article"},{"id":"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures","depth":2,"text":"The Jamstack: why it sits front and centre in modern architectures"},{"id":"the-orchestration-how-to-cable-manage-your-architecture","depth":2,"text":"The orchestration: how to cable manage your architecture","children":[{"id":"the-platform-we-need","depth":3,"text":"The platform we need"},{"id":"data-fetching-approaches","depth":3,"text":"Data fetching approaches"}]},{"id":"concluding","depth":2,"text":"Concluding"}]}},"_type":"markdown","_id":"content:4.writing:the-future-of-jamstack-is-composable.md","_source":"content","_file":"4.writing/the-future-of-jamstack-is-composable.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/NQV9bKQqe6.1718484357766.json b/api/_content/query/NQV9bKQqe6.1718484799542.json similarity index 100% rename from api/_content/query/NQV9bKQqe6.1718484357766.json rename to api/_content/query/NQV9bKQqe6.1718484799542.json diff --git a/api/_content/query/OKKlPxqjJz.1718484357766.json b/api/_content/query/OKKlPxqjJz.1718484799542.json similarity index 100% rename from api/_content/query/OKKlPxqjJz.1718484357766.json rename to api/_content/query/OKKlPxqjJz.1718484799542.json diff --git a/api/_content/query/P7u7UGvUxa.1718484357766.json b/api/_content/query/P7u7UGvUxa.1718484799542.json similarity index 100% rename from api/_content/query/P7u7UGvUxa.1718484357766.json rename to api/_content/query/P7u7UGvUxa.1718484799542.json diff --git a/api/_content/query/Pp8NBTQGor.1718484357766.json b/api/_content/query/Pp8NBTQGor.1718484799542.json similarity index 100% rename from api/_content/query/Pp8NBTQGor.1718484357766.json rename to api/_content/query/Pp8NBTQGor.1718484799542.json diff --git a/api/_content/query/QUPjPFZqUL.1718484357766.json b/api/_content/query/QUPjPFZqUL.1718484357766.json deleted file mode 100644 index a56bcaa9..00000000 --- a/api/_content/query/QUPjPFZqUL.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/how-to-sniff-out-the-glue-monster","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to sniff out the Glue Monster","description":"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic...","id":1405727,"slug":"how-to-sniff-out-the-glue-monster","date":"2023-03-18T13:00:21Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8mwj68dscwvzuvcdd4y.png","canonical_url":"https://uniform.dev/blogs/how-to-sniff-out-the-glue-monster","tags":["javascript","architecture","composable","devops"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic platforms to "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how","rel":["nofollow"]},"children":[{"type":"text","value":"composable architectures"}]},{"type":"text","value":", glue code that connects to systems or cleanses data has grown exponentially. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reality is, you as developers must connect headless systems for a cohesive, feature-complete architecture, but that’s a messy task. The amount of glue you must create hinges on deadlines, the potential need to switch systems later, and the answers to these questions:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you clean up that messy API response so its data fits the front end?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you adapt your front-end components to specific API output and add logic locally?"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Do you separate domain data with design-related data, or mix up everything in data models in different headless systems?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue Code SPREAD","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5iPWgs3hiyQZb1O7cZECJt/671395cc3852d456f1dc02d34d6d5b2c/GlueCode_Blog_SPREAD.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Glue code is a nightmare of technical debt that leads to less innovation, more development effort, and, ultimately, higher expense on hidden requirements."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Types of glue"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue code Icon","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5n8VoHX3RPLBLFWg2IJsYP/f2e9ccc22bd7541b352b7bf19d24ffcb/GlueCode_Blog_Images_Glue_code_Icon.png","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else"},"children":[{"type":"text","value":"Code that queries a source or receives data that maps the input to fit something else. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An example is code that queries an API endpoint and retrieves a huge yet incomplete dataset for the following steps:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Map the initial result into a more specific object. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enrich that object by querying another endpoint and add the result to the original. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Tidy up the code and create a final data set."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here’s a real-world use case: queries on a YouTube playlist and retrieval of the metadata on the videos there. The process runs as follows:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The code traverses the response to identify and arrange the video IDs in an array. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You query the YouTube video API for each video ID for all the needed data. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Given the massive amount of data that results, you go through the response for the exact data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the case of a less reputable source than YouTube or a legacy API, any changes could break the data structure you assume is returned. Not only that, since you have no inkling of the type of the returned data, your data-mapping code must be defensive. Some fields might be empty or even nonexistent sometimes. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Plus, placing all that code in your front end spells complexity. What to do when you’re building another front end like a mobile app or an Apple TV app? Do you duplicate the code in all the new channels?"}]},{"type":"element","tag":"h3","props":{"id":"polluting-stable-domain-data-with-volatile-design-data"},"children":[{"type":"text","value":"Polluting stable domain data with volatile design data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Generally, a data model for videos contains the following fields: "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"titleClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"descriptionClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"poster imageClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"durationClick to copy"}]},{"type":"text","value":", "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"upload dateClick to copy"}]},{"type":"text","value":", and "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"video fileClick to copy"}]},{"type":"text","value":". But what to do if the product owner wants to highlight this video as “featured” for the week? You would add a “featured” checkbox to the data model and ask content editors to check “featured” in the CMS. In the front-end code, you would look for the “featured” flag and show a bigger version of the video card along with a boldfaced title. If the video appears in another context, like a search result or on another website, that “featured” flag has no meaning."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In time, you would add other checkboxes and dropdowns to show the content differently in various contexts, causing the content model to grow. At that point, if an architect who’s cleaning house removes a checkbox, multiple projects that leverage the video would crash and burn."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To sustain a setup with data models that are regularly polluted in that manner, you must build a plethora of defensive code that catches all the additional data. That’s how undesirable glue code and tech debt build up."}]},{"type":"element","tag":"h3","props":{"id":"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers"},"children":[{"type":"text","value":"Creating glue layers by vendors to stay sticky (pun intended) with customers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Glue Code STICKY architecture","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/5zwPAAafgm4qZpoU9H2Bbw/8d4928142367cd19f8b76528bfc61ef0/GlueCode_Blog_STICKY.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The more “official” glue vendors add to a composable system, the harder it is for their customers to perform updates, or switch or add components. The more tech debt, the more support hours vendors can sell. Also, since modern, more agile vendors are bound to outpace the less competitive ones in time, the wise thing for the latter to do is adopt solutions that offer hyperflexible systems at lower cost, enabling their customers to focus on storytelling and solving business problems for their audience without sticky glue."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Ways to deglue"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Unglue Icon","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/16F6FELfCSkZjE8cCuRauw/2c81553462dd1d16be36b2a56dffd443/GlueCode_Blog_Images_Unglue_Icon.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The new product category digital experience composition facilitates degluing. Typically, you create pages on "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platforms (DXCPs)"}]},{"type":"text","value":" with data from numerous headless sources without having to understand how those sources work. With the DXCP hosting a brand’s design system in page components, you can drag and drop them onto the page and connect data from external sources to them. No need to write connection code at all. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"DXCPs map component properties to specific data fields of APIs. That means you could add to your video component an image from a DAM, a title and description from YouTube, and viewer metadata from an ERP system. Want to feature the video somewhere? Simply add a checkbox in the DXCP in the context of the component in question without affecting the data model of external systems. As a last step, add the data attached to the component to the CDN edge for caching. Alternatively, grab the information on the data source and query it yourself. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The front end contains a light and fast SDK that can query component compositions in the CDN-edge cache. With the content mapped explicitly to your component properties in the DXCP, no data mapping is required. And you are now deglued!—with no need to build code to straighten up data or query external systems."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Want to add a tiny bit of glue nonetheless? The SDK also contains hooks through which you can enrich or map data from the API before sending the data to the components."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In the meantime, content editors can take advantage of the DXCP’s live-preview feature to contextually edit the website by connecting new headless sources and mapping API responses to the components you created. Updating a CMS or adding a legacy source takes only a few clicks, code free. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Moreover, content editors can manually type in content on the DXCP and, later on, attach a CMS or commerce system that replaces the static copy with dynamic pointers from component fields to API responses. Again, no code is required to accommodate those functions."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else","depth":3,"text":"Code that queries a source or receives data that maps the input to fit something else. "},{"id":"polluting-stable-domain-data-with-volatile-design-data","depth":3,"text":"Polluting stable domain data with volatile design data"},{"id":"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers","depth":3,"text":"Creating glue layers by vendors to stay sticky (pun intended) with customers"}]}},"_type":"markdown","_id":"content:4.writing:how-to-sniff-out-the-glue-monster.md","_source":"content","_file":"4.writing/how-to-sniff-out-the-glue-monster.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/TLVOEG0eg6.1718484357766.json b/api/_content/query/TLVOEG0eg6.1718484799542.json similarity index 100% rename from api/_content/query/TLVOEG0eg6.1718484357766.json rename to api/_content/query/TLVOEG0eg6.1718484799542.json diff --git a/api/_content/query/W3GiOtIbe3.1718484357766.json b/api/_content/query/W3GiOtIbe3.1718484357766.json deleted file mode 100644 index a2a82eaa..00000000 --- a/api/_content/query/W3GiOtIbe3.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Writing","description":"Writing desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Writing"},"children":[]},{"type":"element","tag":"articles","props":{":small":"false"},"children":[]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:index.md","_source":"content","_file":"4.writing/index.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/W3GiOtIbe3.1718484799542.json b/api/_content/query/W3GiOtIbe3.1718484799542.json new file mode 100644 index 00000000..de647434 --- /dev/null +++ b/api/_content/query/W3GiOtIbe3.1718484799542.json @@ -0,0 +1 @@ +{"_path":"/writing","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"Writing","description":"My articles","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Writing"},"children":[]},{"type":"text","value":":articles{:small=\"false\"}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:4.writing:index.md","_source":"content","_file":"4.writing/index.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/WkCVtgoueB.1718484357766.json b/api/_content/query/WkCVtgoueB.1718484799542.json similarity index 100% rename from api/_content/query/WkCVtgoueB.1718484357766.json rename to api/_content/query/WkCVtgoueB.1718484799542.json diff --git a/api/_content/query/XJHVUWcqR5.1718484357766.json b/api/_content/query/XJHVUWcqR5.1718484799542.json similarity index 100% rename from api/_content/query/XJHVUWcqR5.1718484357766.json rename to api/_content/query/XJHVUWcqR5.1718484799542.json diff --git a/api/_content/query/Y5yBzYRoYi.1718484357766.json b/api/_content/query/Y5yBzYRoYi.1718484357766.json deleted file mode 100644 index e6693f55..00000000 --- a/api/_content/query/Y5yBzYRoYi.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Fast, personalized pages with Vercel Edge Middleware and Uniform","description":"To maintain an engaging relationship with your audience and increase conversions to your site, you...","id":1405723,"slug":"fast-personalized-pages-with-vercel-edge-middleware-and-uniform","date":"2023-03-18T12:49:56Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1yp1gg5ldu4y8tozle7.png","canonical_url":"https://uniform.dev/blogs/personalization/blazing-fast-personalized-pages-with-vercel-edge-middleware-and-uniform","tags":["performance","personalization","vercel","edge"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To maintain an engaging relationship with your audience and increase conversions to your site, you need personalization. However, creating personalized experiences is technically challenging. Most personalization techniques involve dynamic rendering and an origin server that holds personalization rules for end-users—a slow approach that often negates the conversions gained through personalization."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Among the many moving parts to consider, performance and scalability are tough nuts to crack. Fortunately, companies like Vercel, which recently released "},{"type":"element","tag":"a","props":{"href":"https://vercel.com/docs/concepts/functions/edge-middleware","rel":["nofollow"]},"children":[{"type":"text","value":"Edge Middleware"}]},{"type":"text","value":", make those problems readily solvable for developers. With Vercel in place, you only need to choose the right tech to personalize at the CDN edge without having to grapple with the one thing that slows things down: the origin server."}]},{"type":"element","tag":"h3","props":{"id":"the-benefits-of-edge"},"children":[{"type":"text","value":"The benefits of edge"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Vercel offers familiar tech to developers: it’s all JavaScript based. With Edge Middleware, developers have the tools to make great things happen that they could not before. All the dynamic tasks that typically occur on an origin server can now happen near end-users, leading to faster page loads and automatic scaling out of the box. Not only that, Edge Middleware have user data that’s handy for personalization: country, region, and the device in use."}]},{"type":"element","tag":"h3","props":{"id":"the-personalization-process-at-the-edge"},"children":[{"type":"text","value":"The personalization process at the edge"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By eliminating the origin server that is typically far away from end-users and bringing the dynamic rendering closer with Edge Middleware, you can personalize with high performance and in a decentralized manner. The only way to personalize without a central brain that knows all the personalization rules is to bring that brain into the software as a first-party tool. This is how that works:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create and store the configuration rules, i.e., all the "},{"type":"element","tag":"a","props":{"href":"https://docs.uniform.app/capabilities/personalization","rel":["nofollow"]},"children":[{"type":"text","value":"criteria for personalization"}]},{"type":"text","value":", in the codebase as a manifest JSON file at build time."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Store variations of the personalized content in the codebase at build time. Since a headless CMS is generally in use, those variations are tiny JSON models in the form of components."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The Edge Middleware has a tracker that monitors user behaviors, which are signals that users give off by doing something on the site. The Edge Middleware awards a score to the personalization criteria configured in step 1. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The tracker automatically creates a profile of user actions and, based on the scores awarded against the various criteria, displays the right content."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"You can render the content via the Edge Middleware or in the front end at hydration time."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The above approach to personalization is how Uniform Context works. Combining Edge Middleware rendering of personalized content with JavaScript hydration for subsequent page loads renders highly dynamic pages within ~50 milliseconds only. The approach is to initially render all the pages statically (SSG/Jamstack) and ensure that the Edge Middleware knows which parts it can personalize. While serving a page, the Edge Middleware checks if personalization is needed and, if so, fills the identified components with the correct personalized content."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"uniform-vercel-edge-middleware","height":720,"loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://images.ctfassets.net/9ku1oyd4k3wo/4lvoQsz6WNCbJXIWQVQJSI/b36e13c87c86ca668fea6adf3da2b078/uniform-vercel-edge-middleware.svg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Another benefit of the Vercel edge is that at the edge level, the CDN knows a lot about the end-users: their location, city, device, browser version, etc. Thus, Uniform Context can prepersonalize pages with Edge Middleware according to the location or device information from the Vercel CDN."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Want to try that out for yourself? You’ll find all the details in Uniform’s "},{"type":"element","tag":"a","props":{"href":"https://docs.uniform.app/integrations/cdn/vercel/personalization","rel":["nofollow"]},"children":[{"type":"text","value":"documentation on Vercel’s edge-side personalization"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"conclusion"},"children":[{"type":"text","value":"Conclusion"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To recap, by combining Uniform Context on Edge Middleware with statically rendered pages (SSG/Jamstack), you can create highly dynamic, personalized pages that load in less than a minute. In the past, Uniform offered dynamic personalization features through Vercel ESI. Edge Middleware now gives you a much more flexible and intuitive model for implementing personalization at scale. "}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-benefits-of-edge","depth":3,"text":"The benefits of edge"},{"id":"the-personalization-process-at-the-edge","depth":3,"text":"The personalization process at the edge"},{"id":"conclusion","depth":2,"text":"Conclusion"}]}},"_type":"markdown","_id":"content:4.writing:fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","_source":"content","_file":"4.writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/YceZCifPHM.1718484357766.json b/api/_content/query/YceZCifPHM.1718484799542.json similarity index 100% rename from api/_content/query/YceZCifPHM.1718484357766.json rename to api/_content/query/YceZCifPHM.1718484799542.json diff --git a/api/_content/query/a4xkXjbkdX.1718484357766.json b/api/_content/query/a4xkXjbkdX.1718484357766.json deleted file mode 100644 index e0da6878..00000000 --- a/api/_content/query/a4xkXjbkdX.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Level up your collaboration game: Developer insights for winning with marketing pros","description":"Building outstanding user experiences takes, first and foremost, effective collaboration between...","id":1456239,"slug":"level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","date":"2023-05-03T15:49:29Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhfuu567f1khlxvglcn0.png","canonical_url":"https://uniform.dev/blogs/level-up-your-collaboration-game-developer-insights-for-winning-with","tags":["webdev","marketing","collaboration"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Building outstanding user experiences takes, first and foremost, effective collaboration between marketing and development teams. Oftentimes, however, those teams’ different perspectives lead to misunderstandings and opacity, which could seriously impact progress and revenue. Over the last two years of interacting and working within a marketing department as a seasoned technical leader, I've developed strategies to enhance collaboration, boost cross-team communications, and promote project success. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Below are the steps to take."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Set clear objectives"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Since both development and marketing play vital roles in implementing user experiences that drive business goals, the contributors in question must share clear, common objectives, e.g., projected sales, number of service signups, and brand messaging. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Reaching those goals sometimes requires both technical and marketing-driven activities, such as code refactoring, site-performance boosts, messaging-success measurements, and analytics gathering. Those work streams, whose specifics are highly contextual to the specific job marketers or developers do, could easily cause conflict."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To avoid miscommunication, do the following:"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Invite participation from all team members."}]},{"type":"text","value":" Involve them in planning sessions, explain the background of the strategies to be built, and ascertain that everyone is on the same page."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Set SMART goals."}]},{"type":"text","value":" Create specific, measurable, attainable, relevant, and time-bound objectives."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Plan together"}]},{"type":"text","value":". Align schedules based on the teams’ different workflows."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"##Understand how the other discipline works"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A healthy dose of the qualities below is key:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Respect."}]},{"type":"text","value":" To minimize friction, respect for each other's operating methods, styles, and process is essential. Besides acquiring an understanding of the various workflows, team members must be willing to compromise for alignment’s sake."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Patience."}]},{"type":"text","value":" Be accommodating, thoughtful, and tolerant when explaining processes to the other team. A unified approach like Agile project management can forge collaboration by breaking projects into stages, constantly engaging with stakeholders, and enabling both teams to simultaneously track goals and meet objectives."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Remember, a world of difference exists in how developers and marketers think. Establishing a mechanism through which they can learn about one another's tasks and routines goes a long way in championing collaboration."}]},{"type":"element","tag":"h2","props":{"id":"leverage-each-others-skills"},"children":[{"type":"text","value":"Leverage each other’s skills"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Developers and marketers contribute unique, value-add skills:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Developers"}]},{"type":"text","value":" can offer product or technical insights by clarifying why certain code approaches and rendering modes help reach marketing goals."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Marketers"}]},{"type":"text","value":" can share user feedback, messaging learnings, and test data with developers as support for spiffing up the UI and product features."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Essentially, developers work in the context of the “how,” and marketers, of the ”why.” Both are equally valuable for successful projects."}]},{"type":"element","tag":"h2","props":{"id":"make-data-based-decisions"},"children":[{"type":"text","value":"Make data-based decisions"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Data is crucial for measuring success. Developers and marketers play a different role vis-à-vis data:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Developers create technology for harnessing data that marketers need to optimize conversion."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Marketers collect data and strategize campaigns accordingly. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Using analytics tools and personalization engines is instrumental for fulfilling project goals. Ultimately, developers must find a way to integrate “hated tools” so that both teams are happy."}]},{"type":"element","tag":"h2","props":{"id":"use-the-tools-that-appeal-to-both-teams"},"children":[{"type":"text","value":"Use the tools that appeal to both teams"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Tools that propel collaboration fall into different categories. For example, Jira and Linear are process systems, and Figma and Zeplin are design devices. Other tools are slated for website architecture."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Even though developers love the freedom to choose the tools they prefer to build websites, it comes at the price of abstract interfaces and many open tabs for marketers. As technology evolves, techies must keep up with industry trends without being bogged down by marketers’ tool choices. That’s where headless has failed us: The pendulum of architecture choices to build websites has swung too far. Developers love it, yet marketers hate it. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platform (DXCP)"}]},{"type":"text","value":" affords both developers and marketers control of features, content, and the ever-ticking clock. Though technically agnostic, a DXCP—"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Helps developers funnel data to a front-end channel of their choice without compromises. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Enables marketers to independently and visually edit content in a no-code environment without having to seek developer assistance."}]}]},{"type":"element","tag":"h2","props":{"id":"faithfully-perform-the-paramount-steps"},"children":[{"type":"text","value":"Faithfully perform the paramount steps"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By setting clear objectives, understanding each other's processes, leveraging each other’s unique skills, making data-driven decisions, and adopting tools that cater to both parties, marketing and development teams can cooperate smoothly, eliminate roadblocks, and deliver phenomenal projects. With the right strategies and mindset, the sky's the limit for the potential of those high-performing teams to achieve exceptional results."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://uniform.dev/demo","rel":["nofollow"]},"children":[{"type":"text","value":"Check out Uniform DXCP"}]},{"type":"text","value":", on which developers and business teams can access all the tools they need to deliver well and fast."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"leverage-each-others-skills","depth":2,"text":"Leverage each other’s skills"},{"id":"make-data-based-decisions","depth":2,"text":"Make data-based decisions"},{"id":"use-the-tools-that-appeal-to-both-teams","depth":2,"text":"Use the tools that appeal to both teams"},{"id":"faithfully-perform-the-paramount-steps","depth":2,"text":"Faithfully perform the paramount steps"}]}},"_type":"markdown","_id":"content:4.writing:level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","_source":"content","_file":"4.writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/brX4CwCJoQ.1718484357766.json b/api/_content/query/brX4CwCJoQ.1718484799542.json similarity index 100% rename from api/_content/query/brX4CwCJoQ.1718484357766.json rename to api/_content/query/brX4CwCJoQ.1718484799542.json diff --git a/api/_content/query/cJTyjRNdPr.1718484357766.json b/api/_content/query/cJTyjRNdPr.1718484357766.json deleted file mode 100644 index c1f77caf..00000000 --- a/api/_content/query/cJTyjRNdPr.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/this-is-headless-20","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"This is headless 2.0","description":"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about...","id":1533031,"slug":"this-is-headless-20","date":"2023-07-11T07:48:19Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4ykeb6acv0q288ygpaj.png","canonical_url":"https://www.linkedin.com/pulse/headless-20-tim-benniks/","tags":["webdev","mach","headless","architecture"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about the "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":" before. Here, I’ll describe how to avoid ending up in a codebase full of technical debt, aka glue code—chores that overburden and frustrate developers."}]},{"type":"element","tag":"h3","props":{"id":"the-why"},"children":[{"type":"text","value":"The why"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Headless technology has gained prominence in web development, offering benefits like higher performance, front-end freedom, DX features, and management through APIs—a thrill for techies. However, at scale, complexities arise due to an endless need for glue code for connecting content sources, let alone authoring issues caused by disconnects between content editors and front-end presentation."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In particular, separation of content authoring and presentation results in a steep learning curve for content editors, who would need help to preview their work and ensure a correct display. But how do you preview content that connects to multiple sources, all offering some form of preview capability? As a fix, people do either of the following:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Connect to the sources via CMS plugins and add data-modeling capabilities for page layouts unrelated to core CMS functionalities. For more details, read my article on the "},{"type":"element","tag":"a","props":{"href":"https://www.linkedin.com/pulse/mach-monolith-tim-benniks","rel":["nofollow"]},"children":[{"type":"text","value":"MACH monolith"}]},{"type":"text","value":". "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hard-code all the connections in the front end, forcing content editors to file IT tickets for updates."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For web projects to succeed, since developers, marketers, and content editors boast "},{"type":"element","tag":"a","props":{"href":"https://dev.to/timbenniks/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pros-17k","rel":["nofollow"]},"children":[{"type":"text","value":"different strengths"}]},{"type":"text","value":", teams must be able to collaborate harmoniously and seamlessly. For all that headless promises freedom and excellent developer experience, it pushes the pain threshold of marketers."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Connecting lots of services creates glue code and technical debt.","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7a0lii31280n03qva7v.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connecting lots of services creates glue code and technical debt."}]},{"type":"element","tag":"h3","props":{"id":"the-how"},"children":[{"type":"text","value":"The how"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Two things are paramount as a fix:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple, easy-to-maintain front-end codebases that contain minimal glue code and technical debt. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Elimination of the need for content editors to tackle the abstractness of a composable architecture populated by a plethora of different tools. Content editors need a visual-editing capability across headless sources to ensure the display is exactly what they desire without giving up on a solid technical architecture."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In other words, content editors need a page-composition process similar in concept to that of GraphQL, i.e., one that returns only the needed properties and content of all page components. All the editors need to do is add the component props with data from external sources—with no need to know the data’s origin. The result is curated, page-specific JSON output that can be consumed by the front end, which need not connect to external data sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually.","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fu1m8gqp9r20nq7fx7dy.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"What emerges is a transparent and simple platform on which to compose pages based on design components, whose props point to a field in an external API endpoint. That platform would "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"not"}]},{"type":"text","value":" be a CMS or data-federation tool. All it needs to know is which component points to which data source for a specific page composition."}]},{"type":"element","tag":"h3","props":{"id":"a-visual-workspace"},"children":[{"type":"text","value":"A visual workspace"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Therefore, the job of the platform, which represents all the design components with linked data sources (CMS, PIM, DAM), is to connect them and store the result like a curated GraphQL query on a CDN edge. The only data this platform would potentially store are one-off content strings like “latest blog posts” or the fact that a particular component variant, e.g., the image on the left or right, is shown in a specific context."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"That setup gives rise to a streamlined workflow:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"To publish content, editors visually connect external data to components properties. That data can come from any source."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Editors compose their design-system components visually to represent the page design they want."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A curated JSON structure of the composition is saved to the CDN edge."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The front end connects to the API endpoint of the platform. An intuitive and light SDK connects to the CDN edge, keeping the front end code simple."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To make it all visual for content editors, match the naming of the design-system components in the codebase to the ones in the platform and have the SDK show the components in a preview window. Simultaneously, content editors can bind data from external sources to the props and design how the components should look and behave."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"With solid cache purging for data sources, you can create dynamic pages that connect to any amount of data and deliver in less than 50ms from a CDN edge near you. In case of external data-source changes, the TTL on the field or a webhook purges the cache, resulting in fresh data. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If used in conjunction with the latest Next, NuxtJS, or Astro features, this approach leads to a robust yet no-frills front end with no need to connect to data sources in code or mapping their data to component props. Talk about happy developers!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Image description","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gxchvyapco21ibgpkxl9.png","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Map design system component props to individual API response fields to create a visual editor that works across headless sources."}]},{"type":"element","tag":"h3","props":{"id":"a-recap"},"children":[{"type":"text","value":"A recap"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Connecting everything code-first at scale is painful for developers and content editors alike, the former having to maintain the connections and content mappings, and the latter getting lost in the abstract tools with no clues of what happens on a click to publish."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A composable architecture of headless sources must be a team buy, not just a developer choice. What’s needed is a visual workspace that’s—"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Friendly to content editors but also feature-rich for developers while maintaining excellent technical architecture without compromises. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Agnostic and not a one-size-fits-all offering from a single CMS vendor. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In other words, we need a modern, composable form of the old-school DXPs like Adobe AEM. I believe what I described above resembles digital experience composition as coined by Gartner."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"This is Headless 2.0"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"the-why","depth":3,"text":"The why"},{"id":"the-how","depth":3,"text":"The how"},{"id":"a-visual-workspace","depth":3,"text":"A visual workspace"},{"id":"a-recap","depth":3,"text":"A recap"}]}},"_type":"markdown","_id":"content:4.writing:this-is-headless-20.md","_source":"content","_file":"4.writing/this-is-headless-20.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/d9u1bfNTGs.1718484357766.json b/api/_content/query/d9u1bfNTGs.1718484357766.json deleted file mode 100644 index df9edccb..00000000 --- a/api/_content/query/d9u1bfNTGs.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/why-i-didnt-run-the-2016-marathon","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Why I didn't run the 2016 marathon","description":"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on...","id":1406190,"slug":"why-i-didnt-run-the-2016-marathon","date":"2023-03-18T22:52:37Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafpsw3jbsie5bf7w8wp9.jpg","canonical_url":"https://dev.to/timbenniks/why-i-didnt-run-the-2016-marathon-57e3","tags":["personal","fitness","running"],"collection_id":22299,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on October 16th 2016. I’ve learnt a life lesson about the balance between the load and capacity of the body while training for a marathon."}]},{"type":"element","tag":"h3","props":{"id":"tldr"},"children":[{"type":"text","value":"tl;dr"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won't be able to cope with the added stress."}]},{"type":"element","tag":"h3","props":{"id":"the-load-capacity-model"},"children":[{"type":"text","value":"The Load-Capacity Model"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Load-Capacity model was created in 1990 by A.T.M Bernards and L.H.A Hagenaars, two Dutch physiotherapists. The MDBB (Dutch abbreviation) model is meant to be a conceptual model for physiotherapy. "},{"type":"element","tag":"a","props":{"href":"https://www.researchgate.net/publication/224983108_Het_meerdimensionale_belasting-belastbaarheidsmodel_een_conceptueel_model_voor_de_fysiotherapie","rel":["nofollow"]},"children":[{"type":"text","value":"This is one of their publications from 1999"}]},{"type":"text","value":". They created this model to add the "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Biopsychosocial_model","rel":["nofollow"]},"children":[{"type":"text","value":"biopsychosocial"}]},{"type":"text","value":" element to physiotherapy treatments."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"I just want to caveat that even though there is some merit to the claims made in this post, the Load-Capacity model is generally taught at physiotherapy school, most of the conclusions I ended up with are anecdotal. I’ll be using the Load-Capacity model specifically for my personal experience so my writing will be somewhat one-sided."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On the physical side, the Load-Capacity model is a key concept in preventing and managing running injuries. It is all about understanding the balance between training load and the body’s capacity to handle that load. In a nutshell it’s a case of working within your limits and not pushing the training beyond what the body can cope with."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then there is the mental side. External stressors will also impact the balance between capacity and load. If you keep the load the same but your capacity goes down due to grief or work stress, the body will be pushed over the edge of what the it would normally tolerate."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The load-capacity balance is different for everybody and could also change over time. As it did for me. I upped the load in a steady way by training for the marathon but my body’s capacity went down due to external stressors which I wasn’t able to identify. For one, I have a thick skull but I also wasn’t used to the fact that my body would tell me to stop. I could do whatever I wanted to it without stretching or any kind of warm up. If I twisted my ankle the pain would go away in a day."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtcthucv7qthp2sra697.jpg","width":1280},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This year I was always stiff and I had to concentrate way harder to stick to proper form. Suddenly I got little pains like plantar fasciitis and an inflamed Achilles tendon. Even after stretching out my hips and calves it felt like I was running on stilts. The pains and stiffness started two months into training. Four months in, I started to get extremely tired, I developed a rash and I my IBS started to play up way more often. I also got sick after doing longer runs at marathon pace."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The things I just described start to happen when the load is surpassing the capacity of the body for a length of time. I slowly got "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Overtraining","rel":["nofollow"]},"children":[{"type":"text","value":"overtrained"}]},{"type":"text","value":". As my body could normally handle anything I threw at it, I was a bit oblivious towards the symptoms of over training."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"My sweet wife is a physiotherapist and saw me coming from a mile away. Classic. I needed my wife and many of my peers to tell me that I was over trained. The cause was a combination of training and external circumstances."}]},{"type":"element","tag":"h3","props":{"id":"this-is-what-happened"},"children":[{"type":"text","value":"This is what happened"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"I started off well and I was determined to make less mistakes in the preparation this time around. I had plans to have my diet in check from day one. I would go to the gym as well. Next to this I kept a record of everything. Training sessions with Strava, sleep analysis and heart rate with Sleepcycle and food and weight with MyFitnessPal."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This year I decided to go for a training plan which let me train five times per week. Of these five sessions only three where running. The other two were either biking or a gym session. Running only three times per week meant that I could be flexible with the days as I sometimes work nights or have social events to attend. The plan had me running more miles each run but at a slow pace."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The first couple of months everything went well. I actually beat my personal bests on the 5km and 10km quite easily."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/628465080","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" Strava run and "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/655258214","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" one."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"And I also found back my love for cycling. I bought the cheapest bike with the best reviews. It has a Microshift group set which isn’t as precise but works very well if maintained properly."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Two and a half months in, things started to feel a bit painful, especially after running. I realise now that the stress I experienced outside of training impacted my capacity to handle the increased training load."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A couple of things happened at the same time. We had a cancer scare in the family for which I went to Amsterdam for a while. Things are better now but I’ve had a lot to worry about. Right after I came back to Paris my wife miscarried. We’ve been trying to have a baby for a long time and each time it fails it’s like getting hit in the face."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"On top of these two things I found out that I have "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/Irritable_bowel_syndrome","rel":["nofollow"]},"children":[{"type":"text","value":"IBS"}]},{"type":"text","value":". I’ve probably had it for a long time but it started to flare up around March this year. I’ve been trying to find the right diet and it’s not easy."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It seems that the absorption of nutrients isn’t working well due to the inflammation in my gut. I had to try to eat less foods that contains "},{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/FODMAP","rel":["nofollow"]},"children":[{"type":"text","value":"FODMAPs"}]},{"type":"text","value":" so that my insides would relax a bit. Having a constant belly ache and bad sleep as a result does not help the capacity of the body to deal with an increased training load. I made a little "},{"type":"element","tag":"a","props":{"href":"https://timbenniks.nl/fodmap","rel":["nofollow"]},"children":[{"type":"text","value":"tool"}]},{"type":"text","value":" to see which foods are allowed on the low FODMAP diet."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Funnily enough I felt quite good during runs. Well, except when it was hot. I hate warm humid weather and have I trouble training in it. It was usually after the runs that I would suddenly feel the pain my body was in. Willpower is an amazing thing. I think I could actually run the marathon on sheer brain juice tomorrow. It would do horrible things to my body though."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The run below seems to have gone very well but I got sick after and couldn’t train for a week. My whole body ached and I slept all weekend."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out "},{"type":"element","tag":"a","props":{"href":"https://www.strava.com/activities/683549355/","rel":["nofollow"]},"children":[{"type":"text","value":"this"}]},{"type":"text","value":" Strava run."}]},{"type":"element","tag":"h3","props":{"id":"what-i-have-learnt"},"children":[{"type":"text","value":"What I have learnt"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won’t be able to cope with the added stress."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It took 20 years to start enjoying sports. I lost a "},{"type":"element","tag":"a","props":{"href":"https://timbenniks.dev/articles/my-fitness-story","rel":["nofollow"]},"children":[{"type":"text","value":"lot of weight"}]},{"type":"text","value":" and got hooked. I could throw anything at my body and it would bounce back. Now it doesn’t and I have to accept that. This summer of training thought me to be humble and to listen both my peers (my wife mainly, as she is always right) and my body."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Not running this race was a hard decision for me as I always stick to the challenges I set for myself. I’ve decided that feeling good is more important than running a marathon. I’ve done it once before and have proven that I can do it. My body can deal with running but it’s not comfortable doing it. I have my build against me. I’m going to focus on being flexible and strong. I’ll be running shorter distances and I’ll be cycling way more. Also, I’m going back to the gym to do what my body was build to do. Lift iron. I might even try yoga…"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Running","loading":"lazy","provider":"cloudinary","sizes":"sm:100vw","src":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt09jc5r7w862n5smsas.jpg","width":1280},"children":[]}]},{"type":"element","tag":"h3","props":{"id":"some-numbers"},"children":[{"type":"text","value":"Some Numbers"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ran 483.4km over 51 runs with an average pace of 05:40"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average distance was 9.5km per run"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I went from 96.1 to 92.9 kilos"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I slept 8h 20m a night on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I ate 2258kcal a day on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I took 9565 steps a day on average"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"I had an average resting HR of 63.5bpm"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"My average food macro balance was 62.2% carbs, 16,2% fat, 21,5% protein."}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"tldr","depth":3,"text":"tl;dr"},{"id":"the-load-capacity-model","depth":3,"text":"The Load-Capacity Model"},{"id":"this-is-what-happened","depth":3,"text":"This is what happened"},{"id":"what-i-have-learnt","depth":3,"text":"What I have learnt"},{"id":"some-numbers","depth":3,"text":"Some Numbers"}]}},"_type":"markdown","_id":"content:4.writing:why-i-didnt-run-the-2016-marathon.md","_source":"content","_file":"4.writing/why-i-didnt-run-the-2016-marathon.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/fbMJZsprKC.1718484357766.json b/api/_content/query/fbMJZsprKC.1718484357766.json deleted file mode 100644 index 6b6b7d9e..00000000 --- a/api/_content/query/fbMJZsprKC.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/digital-experience-platforms-the-old-versus-the-new","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"Digital experience platforms: the old versus the new","description":"Digital experience platforms (DXPs) and the more modern digital experience composition platforms...","id":1405729,"slug":"digital-experience-platforms-the-old-versus-the-new","date":"2023-03-18T13:05:48Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1tc0ds73edh613y9yg6.png","canonical_url":"https://uniform.dev/blogs/digital-experience-composition-dxc/difference-between-dxp-and-dxcp","tags":["architecture","dxp","composable","webdev"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Digital experience platforms (DXPs) and the more modern "},{"type":"element","tag":"a","props":{"href":"https://uniform.dev/what-is-digital-experience-composition","rel":["nofollow"]},"children":[{"type":"text","value":"digital experience composition platforms (DXCPs)"}]},{"type":"text","value":" share the same goal of making it easier for business users to create visually dynamic, personalized digital experiences. A major contrast is that DXCPs orchestrate solutions and technologies from different vendors. On the other hand, even though DXPs call themselves composable, they lock brands into a single vendor and one way of doing things at the expense of other capabilities."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To help brands decide whether to switch from a DXP to a DXCP, we explain below their key differences. More details are available in this video created by Headless Creator."}]},{"type":"element","tag":"h3","props":{"id":"dxcps-are-far-more-cloud-native"},"children":[{"type":"text","value":"DXCPs are far more cloud native"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A major disadvantage of DXPs is that their foundation is a content management system (CMS), which contains integrated add-ons or bolted-on tools along with such platforms as a digital asset management (DAM) and a product information management (PIM) system. Consequently, developers must manually apply updates, manage the hosting, customize the platform, and scale up the hosting to accommodate traffic spikes, such as those that occur around busy shopping days like Black Friday in the U.S. and Europe. The alternative is to hire the vendor to do all that at an additional cost."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Conversely, DXCPs and the headless tools they manage are all hosted in the cloud and cloud native, which means that updates can not only occur automatically, but also scale elastically as demand rises and falls. Also, since DXCPs are tech agnostic and API-first, business users can work with multiple tools there. They can do that in DXPs, too, but only to a limited extent, let alone that in venturing outside that vendor’s proverbial walled garden, they give up features and capabilities."}]},{"type":"element","tag":"h3","props":{"id":"dxcps-are-more-than-a-data-aggregator"},"children":[{"type":"text","value":"DXCPs are more than a data aggregator"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform views DXCPs as a way for brands and their developers to select advanced, API-first vendors and loosely couple those vendors’ tools together. Furthermore, thanks to DXCPs’ tooling, business users can work across the many integrated tools in a holistic, unified workflow. "}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Additionally:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCPs are more than a data aggregator. Even though effective tools are available for stitching APIs into a cohesive model for access and use by developers, those tools do not deftly manage experiences as DXCPs do. After all, API aggregators are meant for access by developers through code only, not for business users, whose expertise rests with a low- or no-code editing environment, in which DXCPs also specialize. "}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"DXCPs are different from a CMS because, unlike a CMS that requires that all content be routed through it for a tight coupling of technology, they keep content and data sources on a level playing field and maintain the loose coupling so that you can replace and add capabilities as necessary with no technology lock-in. "}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In short, the entire focus of DXCPs is to accord teams freedom to collaborate smoothly, and for brands to switch tools without impacting the way other tools work and the overall web experience."}]},{"type":"element","tag":"h3","props":{"id":"dxcp-protects-domain-data"},"children":[{"type":"text","value":"DXCP protects domain data"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When building webpages or experiences, developers need two types of data:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Domain data,"}]},{"type":"text","value":" which is core material, such as product models, that defines your brand across channels. For an events website, this data contains the names of the event spaces provided by your company, the dates, and the procedure for registration."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Design data,"}]},{"type":"text","value":" which is volatile, channel-specific material, such as your site’s colors and the way in which you can edit the display of week-by-week information. For an events website, for example, you can change page design or spotlight a feature with volatile data."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In DXPs, both domain data and design data reside in the same CMS, potentially leading to a messy situation and a polluted content model. In DXCPs, the design data and domain data are separate, providing clean data workflows for innovation efforts and more system longevity."}]},{"type":"element","tag":"h3","props":{"id":"uniform-dxcp-readily-facilitates-transitioning-from-the-old"},"children":[{"type":"text","value":"Uniform DXCP readily facilitates transitioning from the old"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The primary function of composable frameworks like DXCPs is to enable both developers and business users to work seamlessly together, doing what they do best by leveraging the headless solutions that support them best. Composability also unlocks the potential of creating state-of-the-art, future-forward web experiences."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"dxcps-are-far-more-cloud-native","depth":3,"text":"DXCPs are far more cloud native"},{"id":"dxcps-are-more-than-a-data-aggregator","depth":3,"text":"DXCPs are more than a data aggregator"},{"id":"dxcp-protects-domain-data","depth":3,"text":"DXCP protects domain data"},{"id":"uniform-dxcp-readily-facilitates-transitioning-from-the-old","depth":3,"text":"Uniform DXCP readily facilitates transitioning from the old"}]}},"_type":"markdown","_id":"content:4.writing:digital-experience-platforms-the-old-versus-the-new.md","_source":"content","_file":"4.writing/digital-experience-platforms-the-old-versus-the-new.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/gD4KFSYYuI.1718484357766.json b/api/_content/query/gD4KFSYYuI.1718484357766.json deleted file mode 100644 index ac6f4ef7..00000000 --- a/api/_content/query/gD4KFSYYuI.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/writing/how-to-dynamically-stream-video","_dir":"writing","_draft":false,"_partial":false,"_locale":"","title":"How to dynamically stream video","description":"Build it yourself or use Cloudinary Dynamic video streaming is a video delivery technique...","id":1406138,"slug":"how-to-dynamically-stream-video","date":"2023-03-18T21:56:45Z","image":"https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wx2ix9t60eajoccgjh7.png","canonical_url":"https://dev.to/timbenniks/how-to-dynamically-stream-video-135f","tags":["video","cloudinary","streaming"],"collection_id":22300,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"build-it-yourself-or-use-cloudinary"},"children":[{"type":"text","value":"Build it yourself or use Cloudinary"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Dynamic video streaming is a video delivery technique that adjusts the quality of a video stream in real time. It does this according to detected bandwidth and CPU capacity of a user. In this article we will explore the two techniques which allow you to dynamically stream video."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"HLS and MPEG-DASH are the two most popular formats out there. Dynamic or adaptive video delivery requires outputting a video in different quality settings along with some additional files. Both HLS and MPEG-DASH have different approaches to the problem."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The process of making adaptive streaming work is complex. Most services out there do not provide an end-to-end solution for this and the ones that do a are quite costly. The adaptive video streaming paradigm is not one that many companies have conquered as it requires specific knowledge and access to hardware. There is a reason we don't have many competitors for Netflix and YouTube. Adaptive streaming of video is hard."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"First we’ll go into how adaptive streaming works and then I’ll explain exactly how to do this yourself. It’s much easier than you think once you have the knowledge and the right third party tool to do the heavy lifting."}]},{"type":"element","tag":"h3","props":{"id":"how-adaptive-video-delivery-works"},"children":[{"type":"text","value":"How adaptive video delivery works"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The video stream adapts itself based on a set of rules. The user’s bandwidth, CPU load and video player resolution on the page. To be able to stream adaptively you need to be able to stream different versions of a video. Each variant is of different quality, has a different bitrate and potentially has a different codec or resolution. Think of it as progressive enhancement in web development. The simplest stream always works and based on the features you have (in this case, CPU power, bandwidth, resolution), you get a nicer looking video stream."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Each adaptive video is also joined by an index file that specifies predefined segments of the video. In the HLS standard these segments are usually 10 seconds long where in MPEG-DASH we use 1 second. There is also a master playlist that points to the available video variations with additional information about each one."}]},{"type":"element","tag":"h4","props":{"id":"an-audio-playlist-adaptation"},"children":[{"type":"text","value":"An audio playlist adaptation"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"It’s pretty cool that dynamic video streaming is based on the spec from the M3U8 audio playlist. M3U8 was originally designed for audio files, such as MP3, but nowadays it is commonly used to point media players to audio and video sources."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"An adaptive streaming video player uses the playlist information to decide which of the available video variations fits the user’s network conditions, CPU load or resolution best. It can switch to another source at each 10 second segment (these segments can also be shorter, see examples below) if the network conditions change."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This approach works well to minimise bandwidth use and optimise it for a smooth playback for everybody who watches the video stream. It can also be used the other way around, if the streaming service is completely overloaded it can send a video stream with a smaller bitrate or resolution to the viewer."}]},{"type":"element","tag":"h3","props":{"id":"about-hls-and-mpeg-dash"},"children":[{"type":"text","value":"About HLS and MPEG-DASH"}]},{"type":"element","tag":"h4","props":{"id":"hls"},"children":[{"type":"text","value":"HLS"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"HLS was originally created by Apple to provide video for the iPhone, but now it’s a common format used across HTML5 web applications. You’ll need to encode your video with H.264 or HEVC/H.265 codecs, which can be decoded by all major browsers. With HLS, the video is chopped up into 10 second intervals and sent to the user."}]},{"type":"element","tag":"h4","props":{"id":"mpeg-dash"},"children":[{"type":"text","value":"MPEG-DASH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MPEG-DASH is the latest HLS competitor. It was originally created to be an alternative to HLS. It has a few advantages over HLS, mainly because it is open-source. This means the media content publisher community as a whole can contribute to its changes and updates. MPEG-DASH is globally supported and codec agnostic, which means that you can encode video without worrying about codec support. It has lower latency than HLS. It's playlist file is an "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".MPD"}]},{"type":"text","value":", which is an "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"XML"}]},{"type":"text","value":" format."}]},{"type":"element","tag":"h3","props":{"id":"doing-it-yourself"},"children":[{"type":"text","value":"Doing it yourself"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deliver videos using adaptive streaming you must generate multiple video versions, add an index file per variant and add a master playlist. The formats and encoding for HLS and MPEG-DASH are different for each of these files. If you want to stream using both HLS and MPEG-DASH formats you need to double the effort for every video you want to deliver. Additionally, for MPEG-DASH, the best practice is to deliver the audio and video separately. This stuff is complex and time consuming."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you are a developer who likes to get into the nitty gritty of "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"ffmpeg"}]},{"type":"text","value":" you can deep dive and create all sources for HLS and MPEG-DASH yourself."}]},{"type":"element","tag":"h4","props":{"id":"diy-steps-for-mpeg-dash"},"children":[{"type":"text","value":"DIY steps for MPEG-DASH"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"MPEG-DASH is simplest to do yourself. Let's give it a go!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Imagine we have a video file called "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"video.mp4"}]},{"type":"text","value":". To make sure we can adaptively stream the video we need to create video files with different bitrates and an audio file. "},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"Beware that this is a simplified version for illustration purposes. In real life "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"ffmpeg"}]},{"type":"text","value":" has many quirks based what video you give it."}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 1: extract the audio"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Extract the audio track:"}]},{"type":"element","tag":"pre","props":{"code":"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 2: extract and re-encode the video track"}]}]},{"type":"element","tag":"pre","props":{"code":"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The video is encoded using H.264 codec. This forces to have a key frame every 24 frames, in this case, every second. This allows the video to be segmented in chunks of 1 second. The bitrate is evaluated according to the buffer size, so in order to be sure the encoding is close to the requested rate, the buffer size should be lower than the bitrate."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 3: generate the MPD file"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We now have one audio file and five video files. A Media Presentation Description (MPD) file has to be created. An MPD file functions as an index referencing the different video and audio tracks with their bitrate, size and how the segments are ordered."}]},{"type":"element","tag":"pre","props":{"code":"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The -dash option sets the duration of each segment to one second."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to preparing adaptive streaming content MP4Box can do a lot more. So much more in fact that it's best to just read more "},{"type":"element","tag":"a","props":{"href":"https://github.com/gpac/gpac/wiki/MP4Box","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 4: configure your webserver"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Make sure your webserver understands "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":".mpd"}]},{"type":"text","value":" files by adding the following mime type: "},{"type":"element","tag":"code","props":{"className":[]},"children":[{"type":"text","value":"application/dash+xml"}]},{"type":"text","value":" to its config."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Step 5: make sure your video player understands adaptive streaming"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Implement "},{"type":"element","tag":"a","props":{"href":"https://github.com/Dash-Industry-Forum/dash.js","rel":["nofollow"]},"children":[{"type":"text","value":"dash.js"}]},{"type":"text","value":" into your video player or build a custom video player around dash.js."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Concluding"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Obviously, doing this at scale or as a slightly less technical user this process is not realistic. You'll want to automate this completely."}]},{"type":"element","tag":"h4","props":{"id":"enter-cloudinary"},"children":[{"type":"text","value":"Enter: Cloudinary"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Next to being market leader in image delivery Cloudinary also provides features for video: from dynamic streaming profiles to cropping the subject perfectly on different video ratios. They even use AI to generate captions for muted videos or meaningful previews."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Today we are discussing the dynamic streaming service they offer. Cloudinary has created "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/video_manipulation_and_delivery#adaptive_bitrate_streaming_hls_and_mpeg_dash","rel":["nofollow"]},"children":[{"type":"text","value":"smart pre-defined"}]},{"type":"text","value":" streaming profiles to help you out. A streaming profile holds a set of video variation definitions with different qualities, bitrates, and codecs. For example, the one profile specifies 10 different variations ranging from extremely high quality to audio-only. You can also create "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/admin_api#adaptive_streaming_profiles","rel":["nofollow"]},"children":[{"type":"text","value":"custom profiles"}]},{"type":"text","value":" through their admin API."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Once you have selected a profile, you upload your video file with an eager transformation that instructs the system to generate all the required files for the requested profile in either HLS or MPEG-DASH format. If you want to deliver both formats, add two "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/transformations_on_upload#eager_transformations","rel":["nofollow"]},"children":[{"type":"text","value":"eager transformations"}]},{"type":"text","value":" within your upload command."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This upload code is for the Node.js SDK."}]},{"type":"element","tag":"pre","props":{"code":"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '',\n public_id: '', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '',\n public_id: '', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that the file has been uploaded, it generates a bunch of different video and audio streams. These streams are represented in the playlist files below."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For the HLS version of the video this is what comes out as the m3u8 playlist file:"}]},{"type":"element","tag":"pre","props":{"code":"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For the MPEG-DASH version of the video this is what comes out as the MPD playlist file (I have shortened the file for readability):"}]},{"type":"element","tag":"pre","props":{"code":"\n \n \n \n /dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n /dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\n \n \n \n /dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n /dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now that we have the playlist files and all the video streams we can either build our own fancy video player that understands dynamic streaming or we go for the "},{"type":"element","tag":"a","props":{"href":"https://cloudinary.com/documentation/cloudinary_video_player","rel":["nofollow"]},"children":[{"type":"text","value":"Cloudinary player"}]},{"type":"text","value":". In this case I suggest we use the Cloudinary player as it works out of the box. Check out the code sandbox for a very simple vanilla JavaScript example of loading the player for both HLS and MPEG-DASH."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Try throttling your connection and see the differences in quality. To do this, open your web developer tools (assuming you use chrome), open the network tab and select a different connection type in the dropdown next to the \"preserve log\" and \"Disable cache\" checkboxes."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The Cloudinary video player is based on "},{"type":"element","tag":"a","props":{"href":"https://videojs.com/","rel":["nofollow"]},"children":[{"type":"text","value":"videojs"}]},{"type":"text","value":" and has both the HLS and MPEG-DASH plugins installed by default. In the code sandbox below you'll see both the HLS and the MPEG-DASH version. Beware that the HLS version has better support for showing different statistics than the MPEG-DASH version."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"See the code here: "},{"type":"element","tag":"a","props":{"href":"https://codesandbox.io/s/white-cherry-g4ixt","rel":["nofollow"]},"children":[{"type":"text","value":"https://codesandbox.io/s/white-cherry-g4ixt"}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"build-it-yourself-or-use-cloudinary","depth":2,"text":"Build it yourself or use Cloudinary","children":[{"id":"how-adaptive-video-delivery-works","depth":3,"text":"How adaptive video delivery works"},{"id":"about-hls-and-mpeg-dash","depth":3,"text":"About HLS and MPEG-DASH"},{"id":"doing-it-yourself","depth":3,"text":"Doing it yourself"}]}]}},"_type":"markdown","_id":"content:4.writing:how-to-dynamically-stream-video.md","_source":"content","_file":"4.writing/how-to-dynamically-stream-video.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/iq1hGCNrnP.1718484357766.json b/api/_content/query/iq1hGCNrnP.1718484357766.json deleted file mode 100644 index 5c55e6aa..00000000 --- a/api/_content/query/iq1hGCNrnP.1718484357766.json +++ /dev/null @@ -1 +0,0 @@ -{"_path":"/livestreams","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"live streams","description":"live streams desc","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Live streams"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Live streams are the cornerstone of learning in public, gaining social trust and engaging with the community."}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"live-hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph Streams"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"misc-streams"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Personal Streams"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"live-uniform"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform Streams"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:6.livestreams.md","_source":"content","_file":"6.livestreams.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/iq1hGCNrnP.1718484799542.json b/api/_content/query/iq1hGCNrnP.1718484799542.json new file mode 100644 index 00000000..36f57ab4 --- /dev/null +++ b/api/_content/query/iq1hGCNrnP.1718484799542.json @@ -0,0 +1 @@ +{"_path":"/livestreams","_dir":"","_draft":false,"_partial":false,"_locale":"","title":"live streams","description":"An overview of Tim's live streams","draft":false,"navigation":true,"image":{"src":"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","alt":"Tim Benniks","width":1280,"height":800},"head":{"meta":[{"name":"keywords","content":"Tim Benniks"}]},"body":{"type":"root","children":[{"type":"element","tag":"title-block","props":{"tag":"h1","title":"Live streams"},"children":[]},{"type":"element","tag":"richtext","props":{},"children":[{"type":"element","tag":"template","props":{"v-slot:body":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Live streams are the cornerstone of learning in public, gaining social trust and engaging with the community."}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"live-hygraph"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Hygraph Streams"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"misc-streams"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Personal Streams"}]}]}]},{"type":"element","tag":"videos","props":{":extras":"true",":limit":"3",":small":"false","folder":"live-uniform"},"children":[{"type":"element","tag":"template","props":{"v-slot:title":""},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Uniform Streams"}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:6.livestreams.md","_source":"content","_file":"6.livestreams.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/lG4IgikChv.1718484357766.json b/api/_content/query/lG4IgikChv.1718484799542.json similarity index 100% rename from api/_content/query/lG4IgikChv.1718484357766.json rename to api/_content/query/lG4IgikChv.1718484799542.json diff --git a/api/_content/query/lNwGlC2zdn.1718484357766.json b/api/_content/query/lNwGlC2zdn.1718484799542.json similarity index 100% rename from api/_content/query/lNwGlC2zdn.1718484357766.json rename to api/_content/query/lNwGlC2zdn.1718484799542.json diff --git a/api/_content/query/nSjIE5SGz2.1718484357766.json b/api/_content/query/nSjIE5SGz2.1718484799542.json similarity index 100% rename from api/_content/query/nSjIE5SGz2.1718484357766.json rename to api/_content/query/nSjIE5SGz2.1718484799542.json diff --git a/api/_content/query/povPLSuhlI.1718484357766.json b/api/_content/query/povPLSuhlI.1718484799542.json similarity index 100% rename from api/_content/query/povPLSuhlI.1718484357766.json rename to api/_content/query/povPLSuhlI.1718484799542.json diff --git a/api/_content/query/qw9Mt4HaWR.1718484357766.json b/api/_content/query/qw9Mt4HaWR.1718484799542.json similarity index 100% rename from api/_content/query/qw9Mt4HaWR.1718484357766.json rename to api/_content/query/qw9Mt4HaWR.1718484799542.json diff --git a/api/_content/query/sPS4ZzpQ0b.1718484357766.json b/api/_content/query/sPS4ZzpQ0b.1718484799542.json similarity index 100% rename from api/_content/query/sPS4ZzpQ0b.1718484357766.json rename to api/_content/query/sPS4ZzpQ0b.1718484799542.json diff --git a/api/_content/query/v7DcwZR2W7.1718484357766.json b/api/_content/query/v7DcwZR2W7.1718484799542.json similarity index 100% rename from api/_content/query/v7DcwZR2W7.1718484357766.json rename to api/_content/query/v7DcwZR2W7.1718484799542.json diff --git a/api/_content/query/weAihGbBwh.1718484357766.json b/api/_content/query/weAihGbBwh.1718484799542.json similarity index 100% rename from api/_content/query/weAihGbBwh.1718484357766.json rename to api/_content/query/weAihGbBwh.1718484799542.json diff --git a/index.html b/index.html index 6284dd08..0d012119 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ - + - - - - - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - -
Tim Benniks

Tim Benniks

DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR

Tim Benniks is Developer Relations Lead for outreach and awareness at Hygraph. MACH Alliance Tech Council member, NuxtJS ambassador, Cloudinary Ambassador, Supabase Ambassador, Algolia Ambassador, and content creator.

Tim Benniks

Alive and Kicking

Vuejs Amsterdam 2024

Videos

+ \ No newline at end of file diff --git a/livestreams/_payload.json b/livestreams/_payload.json index cbd98737..ae915662 100644 --- a/livestreams/_payload.json +++ b/livestreams/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1312},["Reactive",2],{"content-query-gi1E9y1Wdd":3,"content-navigation-8C37fagqQL":92,"content-query-YTtdNpr2lF":1207,"content-query-S3bPa2HwJg":1244,"content-query-A3v1ev7aLV":1278},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":87,"_id":88,"_source":89,"_file":90,"_extension":91},"/livestreams","",false,"live streams","live streams desc",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":84},"root",[22,29,44,60,72],{"type":23,"tag":24,"props":25,"children":28},"element","title-block",{"tag":26,"title":27},"h1","Live streams",[],{"type":23,"tag":30,"props":31,"children":32},"richtext",{},[33],{"type":23,"tag":34,"props":35,"children":36},"template",{"v-slot:body":5},[37],{"type":23,"tag":38,"props":39,"children":40},"p",{},[41],{"type":42,"value":43},"text","Live streams are the cornerstone of learning in public, gaining social trust and engaging with the community.",{"type":23,"tag":45,"props":46,"children":51},"videos",{":extras":47,":limit":48,":small":49,"folder":50},"true","3","false","live-hygraph",[52],{"type":23,"tag":34,"props":53,"children":54},{"v-slot:title":5},[55],{"type":23,"tag":38,"props":56,"children":57},{},[58],{"type":42,"value":59},"Hygraph Streams",{"type":23,"tag":45,"props":61,"children":63},{":extras":47,":limit":48,":small":49,"folder":62},"misc-streams",[64],{"type":23,"tag":34,"props":65,"children":66},{"v-slot:title":5},[67],{"type":23,"tag":38,"props":68,"children":69},{},[70],{"type":42,"value":71},"Personal Streams",{"type":23,"tag":45,"props":73,"children":75},{":extras":47,":limit":48,":small":49,"folder":74},"live-uniform",[76],{"type":23,"tag":34,"props":77,"children":78},{"v-slot:title":5},[79],{"type":23,"tag":38,"props":80,"children":81},{},[82],{"type":42,"value":83},"Uniform Streams",{"title":5,"searchDepth":85,"depth":85,"links":86},2,[],"markdown","content:6.livestreams.md","content","6.livestreams.md","md",[93,96,887,964,1200,1201,1204],{"title":94,"_path":95},"About","/about",{"title":45,"_path":97,"children":98},"/videos",[99,118,137,183,184,236,339,362,384,712],{"title":100,"_path":101,"children":102},"Alive And Kicking","/videos/alive-and-kicking",[103,106,109,112,115],{"title":104,"_path":105},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":107,"_path":108},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":110,"_path":111},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":113,"_path":114},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":116,"_path":117},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":119,"_path":120,"children":121},"Headless Creator","/videos/headless-creator",[122,125,128,131,134],{"title":123,"_path":124},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":126,"_path":127},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":129,"_path":130},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":132,"_path":133},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":135,"_path":136},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":138,"_path":139,"children":140},"Hygraph","/videos/hygraph",[141,144,147,150,153,156,159,162,165,168,171,174,177,180],{"title":142,"_path":143},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":145,"_path":146},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":148,"_path":149},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":151,"_path":152},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":154,"_path":155},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":157,"_path":158},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":160,"_path":161},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":163,"_path":164},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":166,"_path":167},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":169,"_path":170},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":172,"_path":173},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":175,"_path":176},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":178,"_path":179},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":181,"_path":182},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":45,"_path":97},{"title":185,"_path":186,"children":187},"Live Hygraph","/videos/live-hygraph",[188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233],{"title":189,"_path":190},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":192,"_path":193},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":195,"_path":196},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":198,"_path":199},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":201,"_path":202},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":204,"_path":205},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":207,"_path":208},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":210,"_path":211},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":213,"_path":214},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":216,"_path":217},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":219,"_path":220},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":222,"_path":223},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":225,"_path":226},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":228,"_path":229},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":231,"_path":232},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":234,"_path":235},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":237,"_path":238,"children":239},"Live Uniform","/videos/live-uniform",[240,243,246,249,252,255,258,261,264,267,270,273,276,279,282,285,288,291,294,297,300,303,306,309,312,315,318,321,324,327,330,333,336],{"title":241,"_path":242},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":244,"_path":245},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":247,"_path":248},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":250,"_path":251},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":253,"_path":254},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":256,"_path":257},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":259,"_path":260},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":262,"_path":263},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":265,"_path":266},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":268,"_path":269},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":271,"_path":272},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":274,"_path":275},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":277,"_path":278},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":280,"_path":281},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":283,"_path":284},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":286,"_path":287},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":289,"_path":290},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":292,"_path":293},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":295,"_path":296},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":298,"_path":299},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":301,"_path":302},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":304,"_path":305},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":307,"_path":308},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":310,"_path":311},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":313,"_path":314},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":316,"_path":317},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":319,"_path":320},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":322,"_path":323},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":325,"_path":326},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":328,"_path":329},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":331,"_path":332},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":334,"_path":335},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":337,"_path":338},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":340,"_path":341,"children":342},"Misc Streams","/videos/misc-streams",[343,346,349,352,354,356,359],{"title":344,"_path":345},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":347,"_path":348},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":350,"_path":351},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":334,"_path":353},"/videos/misc-streams/003-jvgiaotcerq",{"title":325,"_path":355},"/videos/misc-streams/004-ekut1koa2n8",{"title":357,"_path":358},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":360,"_path":361},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":363,"_path":364,"children":365},"Mp","/videos/mp",[366,369,372,375,378,381],{"title":367,"_path":368},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":370,"_path":371},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":373,"_path":374},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":376,"_path":377},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":379,"_path":380},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":382,"_path":383},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":385,"_path":386,"children":387},"Tim","/videos/tim",[388,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,440,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709],{"title":107,"_path":389},"/videos/tim/000-mvq-_s20ndk",{"title":391,"_path":392},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":394,"_path":395},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":397,"_path":398},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":400,"_path":401},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":403,"_path":404},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":406,"_path":407},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":409,"_path":410},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":412,"_path":413},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":415,"_path":416},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":418,"_path":419},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":421,"_path":422},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":424,"_path":425},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":427,"_path":428},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":430,"_path":431},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":433,"_path":434},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":436,"_path":437},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":110,"_path":439},"/videos/tim/017-m0mrligs6i0",{"title":104,"_path":441},"/videos/tim/018-hhpitreyobi",{"title":443,"_path":444},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":446,"_path":447},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":449,"_path":450},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":452,"_path":453},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":455,"_path":456},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":458,"_path":459},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":461,"_path":462},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":464,"_path":465},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":467,"_path":468},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":470,"_path":471},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":473,"_path":474},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":476,"_path":477},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":479,"_path":480},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":482,"_path":483},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":485,"_path":486},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":488,"_path":489},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":491,"_path":492},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":494,"_path":495},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":497,"_path":498},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":500,"_path":501},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":503,"_path":504},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":506,"_path":507},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":509,"_path":510},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":512,"_path":513},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":515,"_path":516},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":518,"_path":519},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":521,"_path":522},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":524,"_path":525},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":527,"_path":528},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":530,"_path":531},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":533,"_path":534},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":536,"_path":537},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":539,"_path":540},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":542,"_path":543},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":545,"_path":546},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":548,"_path":549},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":551,"_path":552},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":554,"_path":555},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":557,"_path":558},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":560,"_path":561},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":563,"_path":564},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":566,"_path":567},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":569,"_path":570},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":572,"_path":573},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":575,"_path":576},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":578,"_path":579},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":581,"_path":582},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":584,"_path":585},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":587,"_path":588},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":590,"_path":591},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":593,"_path":594},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":596,"_path":597},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":599,"_path":600},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":602,"_path":603},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":605,"_path":606},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":608,"_path":609},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":611,"_path":612},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":614,"_path":615},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":617,"_path":618},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":620,"_path":621},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":623,"_path":624},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":626,"_path":627},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":629,"_path":630},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":632,"_path":633},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":635,"_path":636},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":638,"_path":639},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":641,"_path":642},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":644,"_path":645},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":647,"_path":648},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":650,"_path":651},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":653,"_path":654},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":656,"_path":657},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":659,"_path":660},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":662,"_path":663},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":665,"_path":666},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":668,"_path":669},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":671,"_path":672},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":674,"_path":675},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":677,"_path":678},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":680,"_path":681},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":683,"_path":684},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":686,"_path":687},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":689,"_path":690},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":692,"_path":693},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":695,"_path":696},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":698,"_path":699},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":701,"_path":702},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":704,"_path":705},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":707,"_path":708},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":710,"_path":711},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":713,"_path":714,"children":715},"Uniform","/videos/uniform",[716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884],{"title":717,"_path":718},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":720,"_path":721},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":723,"_path":724},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":726,"_path":727},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":729,"_path":730},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":732,"_path":733},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":735,"_path":736},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":738,"_path":739},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":741,"_path":742},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":744,"_path":745},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":747,"_path":748},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":750,"_path":751},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":753,"_path":754},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":756,"_path":757},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":759,"_path":760},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":762,"_path":763},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":765,"_path":766},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":768,"_path":769},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":771,"_path":772},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":774,"_path":775},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":777,"_path":778},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":780,"_path":781},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":783,"_path":784},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":786,"_path":787},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":789,"_path":790},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":792,"_path":793},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":795,"_path":796},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":798,"_path":799},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":801,"_path":802},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":804,"_path":805},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":807,"_path":808},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":810,"_path":811},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":813,"_path":814},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":816,"_path":817},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":819,"_path":820},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":822,"_path":823},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":825,"_path":826},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":828,"_path":829},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":831,"_path":832},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":834,"_path":835},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":837,"_path":838},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":840,"_path":841},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":843,"_path":844},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":846,"_path":847},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":849,"_path":850},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":852,"_path":853},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":855,"_path":856},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":858,"_path":859},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":861,"_path":862},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":864,"_path":865},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":867,"_path":868},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":870,"_path":871},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":873,"_path":874},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":876,"_path":877},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":879,"_path":880},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":882,"_path":883},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":885,"_path":886},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":888,"_path":889,"children":890},"Writing","/writing",[891,894,897,900,903,906,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961],{"title":892,"_path":893},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":895,"_path":896},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":898,"_path":899},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":901,"_path":902},"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":904,"_path":905},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":888,"_path":889},{"title":908,"_path":909},"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":911,"_path":912},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":914,"_path":915},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":917,"_path":918},"My Fitness Story","/writing/my-fitness-story",{"title":920,"_path":921},"New job alert!","/writing/new-job-alert",{"title":923,"_path":924},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":926,"_path":927},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":929,"_path":930},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":932,"_path":933},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":935,"_path":936},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":938,"_path":939},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":941,"_path":942},"The MACH monolith","/writing/the-mach-monolith",{"title":944,"_path":945},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":947,"_path":948},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":950,"_path":951},"This is headless 2.0","/writing/this-is-headless-20",{"title":953,"_path":954},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":956,"_path":957},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":959,"_path":960},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":962,"_path":963},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":965,"_path":966,"children":967},"Speaking","/speaking",[968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199],{"title":969,"_path":970},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":972,"_path":973},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":975,"_path":976},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":978,"_path":979},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":981,"_path":982},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":984,"_path":985},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":987,"_path":988},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":990,"_path":991},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":993,"_path":994},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":996,"_path":997},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":999,"_path":1000},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1002,"_path":1003},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1005,"_path":1006},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1008,"_path":1009},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1011,"_path":1012},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1014,"_path":1015},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1017,"_path":1018},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1020,"_path":1021},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1023,"_path":1024},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1026,"_path":1027},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1029,"_path":1030},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1032,"_path":1033},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1035,"_path":1036},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1038,"_path":1039},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1041,"_path":1042},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1044,"_path":1045},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1047,"_path":1048},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1050,"_path":1051},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1053,"_path":1054},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1056,"_path":1057},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1059,"_path":1060},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1062,"_path":1063},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1065,"_path":1066},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1068,"_path":1069},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1071,"_path":1072},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1074,"_path":1075},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1077,"_path":1078},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1080,"_path":1081},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1083,"_path":1084},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1086,"_path":1087},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1089,"_path":1090},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1092,"_path":1093},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1095,"_path":1096},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1098,"_path":1099},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1101,"_path":1102},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1104,"_path":1105},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1107,"_path":1108},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1110,"_path":1111},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1113,"_path":1114},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1116,"_path":1117},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1119,"_path":1120},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1122,"_path":1123},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1125,"_path":1126},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1128,"_path":1129},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1131,"_path":1132},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1134,"_path":1135},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1137,"_path":1138},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1140,"_path":1141},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1143,"_path":1144},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1146,"_path":1147},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1149,"_path":1150},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1152,"_path":1153},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1155,"_path":1156},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1158,"_path":1159},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1161,"_path":1162},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1164,"_path":1165},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1167,"_path":1168},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1170,"_path":1171},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1173,"_path":1174},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1176,"_path":1177},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1179,"_path":1180},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1182,"_path":1183},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1185,"_path":1186},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1188,"_path":1189},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1191,"_path":1192},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1194,"_path":1195},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1197,"_path":1198},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":965,"_path":966},{"title":7,"_path":4},{"title":1202,"_path":1203},"press kit","/presskit",{"title":1205,"_path":1206},"alive and kicking","/alive-and-kicking",[1208,1220,1232],{"_path":345,"_dir":62,"_draft":6,"_partial":6,"_locale":5,"title":344,"description":1209,"date":1210,"position":1211,"image":1212,"videoId":1213,"body":1214,"_type":87,"_id":1218,"_source":89,"_file":1219,"_extension":91},"Tim Benniks and Sonja Keerl will dive into the findings of the latest Forrester Wave™ for B2C Commerce, unveiling something noteworthy: the leader quadrant remained empty.","2024-06-15T10:46:55Z","000","https://i.ytimg.com/vi/1TJMq5b0fMc/maxresdefault.jpg","1TJMq5b0fMc",{"type":20,"children":1215,"toc":1216},[],{"title":5,"searchDepth":85,"depth":85,"links":1217},[],"content:3.videos:misc-streams:000-1TJMq5b0fMc.md","3.videos/misc-streams/000-1TJMq5b0fMc.md",{"_path":348,"_dir":62,"_draft":6,"_partial":6,"_locale":5,"title":347,"description":1221,"date":1222,"position":1223,"image":1224,"videoId":1225,"body":1226,"_type":87,"_id":1230,"_source":89,"_file":1231,"_extension":91},"Have you ever been to the summit of Mount Stupid? No need to answer: you likely climbed it a few times! Today we discuss the Dunning-Kruger Effect and our personal experiences with it.","2024-06-15T10:46:51Z","001","https://i.ytimg.com/vi/TvPdZPL2pvM/maxresdefault.jpg","TvPdZPL2pvM",{"type":20,"children":1227,"toc":1228},[],{"title":5,"searchDepth":85,"depth":85,"links":1229},[],"content:3.videos:misc-streams:001-TvPdZPL2pvM.md","3.videos/misc-streams/001-TvPdZPL2pvM.md",{"_path":351,"_dir":62,"_draft":6,"_partial":6,"_locale":5,"title":350,"description":1233,"date":1234,"position":1235,"image":1236,"videoId":1237,"body":1238,"_type":87,"_id":1242,"_source":89,"_file":1243,"_extension":91},"Videos are a highly engaging and dynamic medium that can effectively capture and retain the attention of B2B audiences—allowing businesses to convey complex information visually appealing and concisely, making it easier for customers to understand their products or services. They also help build trust, as B2B purchases often involve significant investments and long-term commitments. Video marketing enables companies to showcase their expertise, demonstrate their products in action, and provide customer testimonials, which help build trust and credibility with potential buyers.\nHeyGen is a b2b solution that allows customers to create AI videos at scale. Fast and affordable, saving your team time and money. No camera, no crew, no problem.\n\nThe webinar will be a live interview where our CEO and Co-Founder, Josh Xu, will discuss a customer success story with Tim Benniks, who created an Avatar Lite using HeyGen AI technology, became a brand ambassador, and developed a b2b marketing strategy for his company. \n\nTake advantage of this exciting and informative live and interactive webinar. We will also be giving a five-minute credit to attendees to start creating AI videos at scale. Join us and discover the power of HeyGen AI.\n\nWhen: Thursday, July 27, 11:00 am PST/ 2:00 pm EST","2023-07-27T18:45:56Z","002","https://i.ytimg.com/vi/rjjyHwSO1gg/maxresdefault.jpg","rjjyHwSO1gg",{"type":20,"children":1239,"toc":1240},[],{"title":5,"searchDepth":85,"depth":85,"links":1241},[],"content:3.videos:misc-streams:002-rjjyHwSO1gg.md","3.videos/misc-streams/002-rjjyHwSO1gg.md",[1245,1256,1267],{"_path":190,"_dir":50,"_draft":6,"_partial":6,"_locale":5,"title":189,"description":1246,"date":1247,"position":1211,"image":1248,"videoId":1249,"body":1250,"_type":87,"_id":1254,"_source":89,"_file":1255,"_extension":91},"Svelte is hot right now and we have invited Scott Spence to join Tim Benniks and show us how to use it with Headless CMS!\r\n\r\nTune in on Wednesday, at 4 PM CEST. \r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:23Z","https://i.ytimg.com/vi/eyDsTeDp-v4/maxresdefault.jpg","eyDsTeDp-v4",{"type":20,"children":1251,"toc":1252},[],{"title":5,"searchDepth":85,"depth":85,"links":1253},[],"content:3.videos:live-hygraph:000-eyDsTeDp-v4.md","3.videos/live-hygraph/000-eyDsTeDp-v4.md",{"_path":193,"_dir":50,"_draft":6,"_partial":6,"_locale":5,"title":192,"description":1257,"date":1258,"position":1223,"image":1259,"videoId":1260,"body":1261,"_type":87,"_id":1265,"_source":89,"_file":1266,"_extension":91},"This Thursday we'll have Colby Fayock from Cloudinary join Tim Benniks for an exclusive livestream to talk about integrating Cloudinary with Hygraph as a headless CMS.\n\nMost people think media on the web is not at all a concern, an image is an image right?\nWell, nope! It's actually incredibly hard to serve images in the right context:\n- Is a user on mobile?\n- How fast is their internet?\n- Do we lazy load?\n- Do we need different image formats for different screen sizes?\n- We do we have art direction for the images?\n- Where do we store the default source and where do we serve the derived images with transformations from?\n- Do we use a CDN?\n- What if an image has to be offline after a certain date due to contracts?\n- What about image quality?\n\nNeed I go on? I can, I have about 10 more problems to throw at you and we haven't even discussed videos yet... \n\nWant to know more? Join ColbyFayock and Tim Benniks on our livestream TODAY where we demo industry leader Cloudinary and how they work together with Hygraph.\r\n\r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:16Z","https://i.ytimg.com/vi/_Iah2t5g02o/maxresdefault.jpg","_Iah2t5g02o",{"type":20,"children":1262,"toc":1263},[],{"title":5,"searchDepth":85,"depth":85,"links":1264},[],"content:3.videos:live-hygraph:001-_Iah2t5g02o.md","3.videos/live-hygraph/001-_Iah2t5g02o.md",{"_path":196,"_dir":50,"_draft":6,"_partial":6,"_locale":5,"title":195,"description":1268,"date":1269,"position":1235,"image":1270,"videoId":1271,"body":1272,"_type":87,"_id":1276,"_source":89,"_file":1277,"_extension":91},"Want to see the magic of combining WordPress with Hygraph for ultimate power? \r\nWordPress expert Maciek joins Tim on the stream where they explore how to combine forces between WordPress and Hygraph.\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","2024-05-31T18:29:09Z","https://i.ytimg.com/vi/fy_w2youSBo/maxresdefault.jpg","fy_w2youSBo",{"type":20,"children":1273,"toc":1274},[],{"title":5,"searchDepth":85,"depth":85,"links":1275},[],"content:3.videos:live-hygraph:002-fy_w2youSBo.md","3.videos/live-hygraph/002-fy_w2youSBo.md",[1279,1290,1301],{"_path":242,"_dir":74,"_draft":6,"_partial":6,"_locale":5,"title":241,"description":1280,"date":1281,"position":1211,"image":1282,"videoId":1283,"body":1284,"_type":87,"_id":1288,"_source":89,"_file":1289,"_extension":91},"Personalization Basics: Intents and signals","2024-05-31T18:33:26Z","https://i.ytimg.com/vi/5qX4fmKKh_M/maxresdefault.jpg","5qX4fmKKh_M",{"type":20,"children":1285,"toc":1286},[],{"title":5,"searchDepth":85,"depth":85,"links":1287},[],"content:3.videos:live-uniform:000-5qX4fmKKh_M.md","3.videos/live-uniform/000-5qX4fmKKh_M.md",{"_path":245,"_dir":74,"_draft":6,"_partial":6,"_locale":5,"title":244,"description":1291,"date":1292,"position":1223,"image":1293,"videoId":1294,"body":1295,"_type":87,"_id":1299,"_source":89,"_file":1300,"_extension":91},"Tony & Tim have invited Alex Shyba to talk about the Jamstack and beyond!\n\nFollow us here:\nhttps://twitter.com/uniformdev\nhttps://twitter.com/timbenniks\nhttps://twitter.com/tmamedbekov","2024-05-31T18:33:33Z","https://i.ytimg.com/vi/ZdQk9zql3zA/maxresdefault.jpg","ZdQk9zql3zA",{"type":20,"children":1296,"toc":1297},[],{"title":5,"searchDepth":85,"depth":85,"links":1298},[],"content:3.videos:live-uniform:001-ZdQk9zql3zA.md","3.videos/live-uniform/001-ZdQk9zql3zA.md",{"_path":248,"_dir":74,"_draft":6,"_partial":6,"_locale":5,"title":247,"description":1302,"date":1303,"position":1235,"image":1304,"videoId":1305,"body":1306,"_type":87,"_id":1310,"_source":89,"_file":1311,"_extension":91},"In this instalment we look into more complex use cases for personalisation. Search results and indexation can generate amazing results when personalised properly. Adam Lamarre shows how to integrate Uniform with Algolia for great results on Jamstack websites!","2024-05-31T18:33:37Z","https://i.ytimg.com/vi/Tngn1E4HEFI/maxresdefault.jpg","Tngn1E4HEFI",{"type":20,"children":1307,"toc":1308},[],{"title":5,"searchDepth":85,"depth":85,"links":1309},[],"content:3.videos:live-uniform:002-Tngn1E4HEFI.md","3.videos/live-uniform/002-Tngn1E4HEFI.md",1718484379151] \ No newline at end of file +[{"data":1,"prerenderedAt":1313},["Reactive",2],{"content-query-gi1E9y1Wdd":3,"content-navigation-8C37fagqQL":92,"content-query-YTtdNpr2lF":1208,"content-query-S3bPa2HwJg":1245,"content-query-A3v1ev7aLV":1279},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":87,"_id":88,"_source":89,"_file":90,"_extension":91},"/livestreams","",false,"live streams","An overview of Tim's live streams",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":84},"root",[22,29,44,60,72],{"type":23,"tag":24,"props":25,"children":28},"element","title-block",{"tag":26,"title":27},"h1","Live streams",[],{"type":23,"tag":30,"props":31,"children":32},"richtext",{},[33],{"type":23,"tag":34,"props":35,"children":36},"template",{"v-slot:body":5},[37],{"type":23,"tag":38,"props":39,"children":40},"p",{},[41],{"type":42,"value":43},"text","Live streams are the cornerstone of learning in public, gaining social trust and engaging with the community.",{"type":23,"tag":45,"props":46,"children":51},"videos",{":extras":47,":limit":48,":small":49,"folder":50},"true","3","false","live-hygraph",[52],{"type":23,"tag":34,"props":53,"children":54},{"v-slot:title":5},[55],{"type":23,"tag":38,"props":56,"children":57},{},[58],{"type":42,"value":59},"Hygraph Streams",{"type":23,"tag":45,"props":61,"children":63},{":extras":47,":limit":48,":small":49,"folder":62},"misc-streams",[64],{"type":23,"tag":34,"props":65,"children":66},{"v-slot:title":5},[67],{"type":23,"tag":38,"props":68,"children":69},{},[70],{"type":42,"value":71},"Personal Streams",{"type":23,"tag":45,"props":73,"children":75},{":extras":47,":limit":48,":small":49,"folder":74},"live-uniform",[76],{"type":23,"tag":34,"props":77,"children":78},{"v-slot:title":5},[79],{"type":23,"tag":38,"props":80,"children":81},{},[82],{"type":42,"value":83},"Uniform Streams",{"title":5,"searchDepth":85,"depth":85,"links":86},2,[],"markdown","content:6.livestreams.md","content","6.livestreams.md","md",[93,96,888,965,1201,1202,1205],{"title":94,"_path":95},"About Tim","/about",{"title":97,"_path":98,"children":99},"Videos","/videos",[100,119,138,184,185,237,340,363,385,713],{"title":101,"_path":102,"children":103},"Alive And Kicking","/videos/alive-and-kicking",[104,107,110,113,116],{"title":105,"_path":106},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":108,"_path":109},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":111,"_path":112},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":114,"_path":115},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":117,"_path":118},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":120,"_path":121,"children":122},"Headless Creator","/videos/headless-creator",[123,126,129,132,135],{"title":124,"_path":125},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":127,"_path":128},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":130,"_path":131},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":133,"_path":134},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":136,"_path":137},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":139,"_path":140,"children":141},"Hygraph","/videos/hygraph",[142,145,148,151,154,157,160,163,166,169,172,175,178,181],{"title":143,"_path":144},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":146,"_path":147},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":149,"_path":150},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":152,"_path":153},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":155,"_path":156},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":158,"_path":159},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":161,"_path":162},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":164,"_path":165},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":167,"_path":168},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":170,"_path":171},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":173,"_path":174},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":176,"_path":177},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":179,"_path":180},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":182,"_path":183},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":97,"_path":98},{"title":186,"_path":187,"children":188},"Live Hygraph","/videos/live-hygraph",[189,192,195,198,201,204,207,210,213,216,219,222,225,228,231,234],{"title":190,"_path":191},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":193,"_path":194},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":196,"_path":197},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":199,"_path":200},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":202,"_path":203},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":205,"_path":206},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":208,"_path":209},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":211,"_path":212},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":214,"_path":215},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":217,"_path":218},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":220,"_path":221},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":223,"_path":224},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":226,"_path":227},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":229,"_path":230},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":232,"_path":233},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":235,"_path":236},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":238,"_path":239,"children":240},"Live Uniform","/videos/live-uniform",[241,244,247,250,253,256,259,262,265,268,271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337],{"title":242,"_path":243},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":245,"_path":246},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":248,"_path":249},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":251,"_path":252},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":254,"_path":255},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":257,"_path":258},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":260,"_path":261},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":263,"_path":264},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":266,"_path":267},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":269,"_path":270},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":272,"_path":273},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":275,"_path":276},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":278,"_path":279},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":281,"_path":282},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":284,"_path":285},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":287,"_path":288},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":290,"_path":291},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":293,"_path":294},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":296,"_path":297},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":299,"_path":300},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":302,"_path":303},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":305,"_path":306},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":308,"_path":309},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":311,"_path":312},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":314,"_path":315},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":317,"_path":318},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":320,"_path":321},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":323,"_path":324},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":326,"_path":327},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":329,"_path":330},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":332,"_path":333},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":335,"_path":336},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":338,"_path":339},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":341,"_path":342,"children":343},"Misc Streams","/videos/misc-streams",[344,347,350,353,355,357,360],{"title":345,"_path":346},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":348,"_path":349},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":351,"_path":352},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":335,"_path":354},"/videos/misc-streams/003-jvgiaotcerq",{"title":326,"_path":356},"/videos/misc-streams/004-ekut1koa2n8",{"title":358,"_path":359},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":361,"_path":362},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":364,"_path":365,"children":366},"Mp","/videos/mp",[367,370,373,376,379,382],{"title":368,"_path":369},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":371,"_path":372},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":374,"_path":375},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":377,"_path":378},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":380,"_path":381},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":383,"_path":384},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":386,"_path":387,"children":388},"Tim","/videos/tim",[389,391,394,397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,441,443,446,449,452,455,458,461,464,467,470,473,476,479,482,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710],{"title":108,"_path":390},"/videos/tim/000-mvq-_s20ndk",{"title":392,"_path":393},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":395,"_path":396},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":398,"_path":399},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":401,"_path":402},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":404,"_path":405},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":407,"_path":408},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":410,"_path":411},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":413,"_path":414},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":416,"_path":417},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":419,"_path":420},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":422,"_path":423},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":425,"_path":426},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":428,"_path":429},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":431,"_path":432},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":434,"_path":435},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":437,"_path":438},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":111,"_path":440},"/videos/tim/017-m0mrligs6i0",{"title":105,"_path":442},"/videos/tim/018-hhpitreyobi",{"title":444,"_path":445},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":447,"_path":448},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":450,"_path":451},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":453,"_path":454},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":456,"_path":457},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":459,"_path":460},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":462,"_path":463},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":465,"_path":466},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":468,"_path":469},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":471,"_path":472},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":474,"_path":475},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":477,"_path":478},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":480,"_path":481},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":483,"_path":484},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":486,"_path":487},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":489,"_path":490},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":492,"_path":493},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":495,"_path":496},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":498,"_path":499},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":501,"_path":502},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":504,"_path":505},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":507,"_path":508},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":510,"_path":511},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":513,"_path":514},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":516,"_path":517},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":519,"_path":520},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":522,"_path":523},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":525,"_path":526},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":528,"_path":529},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":531,"_path":532},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":534,"_path":535},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":537,"_path":538},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":540,"_path":541},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":543,"_path":544},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":546,"_path":547},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":549,"_path":550},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":552,"_path":553},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":555,"_path":556},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":558,"_path":559},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":561,"_path":562},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":564,"_path":565},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":567,"_path":568},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":570,"_path":571},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":573,"_path":574},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":576,"_path":577},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":579,"_path":580},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":582,"_path":583},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":585,"_path":586},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":588,"_path":589},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":591,"_path":592},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":594,"_path":595},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":597,"_path":598},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":600,"_path":601},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":603,"_path":604},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":606,"_path":607},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":609,"_path":610},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":612,"_path":613},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":615,"_path":616},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":618,"_path":619},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":621,"_path":622},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":624,"_path":625},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":627,"_path":628},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":630,"_path":631},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":633,"_path":634},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":636,"_path":637},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":639,"_path":640},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":642,"_path":643},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":645,"_path":646},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":648,"_path":649},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":651,"_path":652},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":654,"_path":655},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":657,"_path":658},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":660,"_path":661},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":663,"_path":664},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":666,"_path":667},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":669,"_path":670},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":672,"_path":673},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":675,"_path":676},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":678,"_path":679},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":681,"_path":682},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":684,"_path":685},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":687,"_path":688},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":690,"_path":691},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":693,"_path":694},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":696,"_path":697},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":699,"_path":700},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":702,"_path":703},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":705,"_path":706},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":708,"_path":709},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":711,"_path":712},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":714,"_path":715,"children":716},"Uniform","/videos/uniform",[717,720,723,726,729,732,735,738,741,744,747,750,753,756,759,762,765,768,771,774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885],{"title":718,"_path":719},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":721,"_path":722},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":724,"_path":725},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":727,"_path":728},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":730,"_path":731},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":733,"_path":734},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":736,"_path":737},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":739,"_path":740},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":742,"_path":743},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":745,"_path":746},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":748,"_path":749},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":751,"_path":752},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":754,"_path":755},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":757,"_path":758},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":760,"_path":761},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":763,"_path":764},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":766,"_path":767},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":769,"_path":770},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":772,"_path":773},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":775,"_path":776},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":778,"_path":779},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":781,"_path":782},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":784,"_path":785},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":787,"_path":788},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":790,"_path":791},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":793,"_path":794},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":796,"_path":797},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":799,"_path":800},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":802,"_path":803},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":805,"_path":806},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":808,"_path":809},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":811,"_path":812},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":814,"_path":815},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":817,"_path":818},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":820,"_path":821},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":823,"_path":824},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":826,"_path":827},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":829,"_path":830},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":832,"_path":833},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":835,"_path":836},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":838,"_path":839},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":841,"_path":842},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":844,"_path":845},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":847,"_path":848},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":850,"_path":851},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":853,"_path":854},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":856,"_path":857},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":859,"_path":860},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":862,"_path":863},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":865,"_path":866},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":868,"_path":869},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":871,"_path":872},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":874,"_path":875},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":877,"_path":878},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":880,"_path":881},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":883,"_path":884},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":886,"_path":887},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":889,"_path":890,"children":891},"Writing","/writing",[892,895,898,901,904,907,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962],{"title":893,"_path":894},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":896,"_path":897},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":899,"_path":900},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":902,"_path":903},"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":905,"_path":906},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":889,"_path":890},{"title":909,"_path":910},"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":912,"_path":913},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":915,"_path":916},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":918,"_path":919},"My Fitness Story","/writing/my-fitness-story",{"title":921,"_path":922},"New job alert!","/writing/new-job-alert",{"title":924,"_path":925},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":927,"_path":928},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":930,"_path":931},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":933,"_path":934},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":936,"_path":937},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":939,"_path":940},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":942,"_path":943},"The MACH monolith","/writing/the-mach-monolith",{"title":945,"_path":946},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":948,"_path":949},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":951,"_path":952},"This is headless 2.0","/writing/this-is-headless-20",{"title":954,"_path":955},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":957,"_path":958},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":960,"_path":961},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":963,"_path":964},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":966,"_path":967,"children":968},"Speaking","/speaking",[969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200],{"title":970,"_path":971},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":973,"_path":974},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":976,"_path":977},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":979,"_path":980},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":982,"_path":983},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":985,"_path":986},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":988,"_path":989},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":991,"_path":992},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":994,"_path":995},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":997,"_path":998},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1000,"_path":1001},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1003,"_path":1004},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1006,"_path":1007},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1009,"_path":1010},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1012,"_path":1013},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1015,"_path":1016},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1018,"_path":1019},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1021,"_path":1022},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1024,"_path":1025},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1027,"_path":1028},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1030,"_path":1031},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1033,"_path":1034},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1036,"_path":1037},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1039,"_path":1040},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1042,"_path":1043},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1045,"_path":1046},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1048,"_path":1049},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1051,"_path":1052},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1054,"_path":1055},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1057,"_path":1058},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1060,"_path":1061},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1063,"_path":1064},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1066,"_path":1067},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1069,"_path":1070},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1072,"_path":1073},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1075,"_path":1076},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1078,"_path":1079},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1081,"_path":1082},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1084,"_path":1085},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1087,"_path":1088},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1090,"_path":1091},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1093,"_path":1094},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1096,"_path":1097},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1099,"_path":1100},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1102,"_path":1103},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1105,"_path":1106},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1108,"_path":1109},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1111,"_path":1112},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1114,"_path":1115},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1117,"_path":1118},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1120,"_path":1121},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1123,"_path":1124},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1126,"_path":1127},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1129,"_path":1130},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1132,"_path":1133},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1135,"_path":1136},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1138,"_path":1139},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1141,"_path":1142},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1144,"_path":1145},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1147,"_path":1148},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1150,"_path":1151},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1153,"_path":1154},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1156,"_path":1157},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1159,"_path":1160},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1162,"_path":1163},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1165,"_path":1166},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1168,"_path":1169},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1171,"_path":1172},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1174,"_path":1175},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1177,"_path":1178},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1180,"_path":1181},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1183,"_path":1184},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1186,"_path":1187},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1189,"_path":1190},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1192,"_path":1193},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1195,"_path":1196},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1198,"_path":1199},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":966,"_path":967},{"title":7,"_path":4},{"title":1203,"_path":1204},"Press kit","/presskit",{"title":1206,"_path":1207},"Alive and kicking","/alive-and-kicking",[1209,1221,1233],{"_path":346,"_dir":62,"_draft":6,"_partial":6,"_locale":5,"title":345,"description":1210,"date":1211,"position":1212,"image":1213,"videoId":1214,"body":1215,"_type":87,"_id":1219,"_source":89,"_file":1220,"_extension":91},"Tim Benniks and Sonja Keerl will dive into the findings of the latest Forrester Wave™ for B2C Commerce, unveiling something noteworthy: the leader quadrant remained empty.","2024-06-15T10:46:55Z","000","https://i.ytimg.com/vi/1TJMq5b0fMc/maxresdefault.jpg","1TJMq5b0fMc",{"type":20,"children":1216,"toc":1217},[],{"title":5,"searchDepth":85,"depth":85,"links":1218},[],"content:3.videos:misc-streams:000-1TJMq5b0fMc.md","3.videos/misc-streams/000-1TJMq5b0fMc.md",{"_path":349,"_dir":62,"_draft":6,"_partial":6,"_locale":5,"title":348,"description":1222,"date":1223,"position":1224,"image":1225,"videoId":1226,"body":1227,"_type":87,"_id":1231,"_source":89,"_file":1232,"_extension":91},"Have you ever been to the summit of Mount Stupid? No need to answer: you likely climbed it a few times! Today we discuss the Dunning-Kruger Effect and our personal experiences with it.","2024-06-15T10:46:51Z","001","https://i.ytimg.com/vi/TvPdZPL2pvM/maxresdefault.jpg","TvPdZPL2pvM",{"type":20,"children":1228,"toc":1229},[],{"title":5,"searchDepth":85,"depth":85,"links":1230},[],"content:3.videos:misc-streams:001-TvPdZPL2pvM.md","3.videos/misc-streams/001-TvPdZPL2pvM.md",{"_path":352,"_dir":62,"_draft":6,"_partial":6,"_locale":5,"title":351,"description":1234,"date":1235,"position":1236,"image":1237,"videoId":1238,"body":1239,"_type":87,"_id":1243,"_source":89,"_file":1244,"_extension":91},"Videos are a highly engaging and dynamic medium that can effectively capture and retain the attention of B2B audiences—allowing businesses to convey complex information visually appealing and concisely, making it easier for customers to understand their products or services. They also help build trust, as B2B purchases often involve significant investments and long-term commitments. Video marketing enables companies to showcase their expertise, demonstrate their products in action, and provide customer testimonials, which help build trust and credibility with potential buyers.\nHeyGen is a b2b solution that allows customers to create AI videos at scale. Fast and affordable, saving your team time and money. No camera, no crew, no problem.\n\nThe webinar will be a live interview where our CEO and Co-Founder, Josh Xu, will discuss a customer success story with Tim Benniks, who created an Avatar Lite using HeyGen AI technology, became a brand ambassador, and developed a b2b marketing strategy for his company. \n\nTake advantage of this exciting and informative live and interactive webinar. We will also be giving a five-minute credit to attendees to start creating AI videos at scale. Join us and discover the power of HeyGen AI.\n\nWhen: Thursday, July 27, 11:00 am PST/ 2:00 pm EST","2023-07-27T18:45:56Z","002","https://i.ytimg.com/vi/rjjyHwSO1gg/maxresdefault.jpg","rjjyHwSO1gg",{"type":20,"children":1240,"toc":1241},[],{"title":5,"searchDepth":85,"depth":85,"links":1242},[],"content:3.videos:misc-streams:002-rjjyHwSO1gg.md","3.videos/misc-streams/002-rjjyHwSO1gg.md",[1246,1257,1268],{"_path":191,"_dir":50,"_draft":6,"_partial":6,"_locale":5,"title":190,"description":1247,"date":1248,"position":1212,"image":1249,"videoId":1250,"body":1251,"_type":87,"_id":1255,"_source":89,"_file":1256,"_extension":91},"Svelte is hot right now and we have invited Scott Spence to join Tim Benniks and show us how to use it with Headless CMS!\r\n\r\nTune in on Wednesday, at 4 PM CEST. \r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:23Z","https://i.ytimg.com/vi/eyDsTeDp-v4/maxresdefault.jpg","eyDsTeDp-v4",{"type":20,"children":1252,"toc":1253},[],{"title":5,"searchDepth":85,"depth":85,"links":1254},[],"content:3.videos:live-hygraph:000-eyDsTeDp-v4.md","3.videos/live-hygraph/000-eyDsTeDp-v4.md",{"_path":194,"_dir":50,"_draft":6,"_partial":6,"_locale":5,"title":193,"description":1258,"date":1259,"position":1224,"image":1260,"videoId":1261,"body":1262,"_type":87,"_id":1266,"_source":89,"_file":1267,"_extension":91},"This Thursday we'll have Colby Fayock from Cloudinary join Tim Benniks for an exclusive livestream to talk about integrating Cloudinary with Hygraph as a headless CMS.\n\nMost people think media on the web is not at all a concern, an image is an image right?\nWell, nope! It's actually incredibly hard to serve images in the right context:\n- Is a user on mobile?\n- How fast is their internet?\n- Do we lazy load?\n- Do we need different image formats for different screen sizes?\n- We do we have art direction for the images?\n- Where do we store the default source and where do we serve the derived images with transformations from?\n- Do we use a CDN?\n- What if an image has to be offline after a certain date due to contracts?\n- What about image quality?\n\nNeed I go on? I can, I have about 10 more problems to throw at you and we haven't even discussed videos yet... \n\nWant to know more? Join ColbyFayock and Tim Benniks on our livestream TODAY where we demo industry leader Cloudinary and how they work together with Hygraph.\r\n\r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:16Z","https://i.ytimg.com/vi/_Iah2t5g02o/maxresdefault.jpg","_Iah2t5g02o",{"type":20,"children":1263,"toc":1264},[],{"title":5,"searchDepth":85,"depth":85,"links":1265},[],"content:3.videos:live-hygraph:001-_Iah2t5g02o.md","3.videos/live-hygraph/001-_Iah2t5g02o.md",{"_path":197,"_dir":50,"_draft":6,"_partial":6,"_locale":5,"title":196,"description":1269,"date":1270,"position":1236,"image":1271,"videoId":1272,"body":1273,"_type":87,"_id":1277,"_source":89,"_file":1278,"_extension":91},"Want to see the magic of combining WordPress with Hygraph for ultimate power? \r\nWordPress expert Maciek joins Tim on the stream where they explore how to combine forces between WordPress and Hygraph.\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","2024-05-31T18:29:09Z","https://i.ytimg.com/vi/fy_w2youSBo/maxresdefault.jpg","fy_w2youSBo",{"type":20,"children":1274,"toc":1275},[],{"title":5,"searchDepth":85,"depth":85,"links":1276},[],"content:3.videos:live-hygraph:002-fy_w2youSBo.md","3.videos/live-hygraph/002-fy_w2youSBo.md",[1280,1291,1302],{"_path":243,"_dir":74,"_draft":6,"_partial":6,"_locale":5,"title":242,"description":1281,"date":1282,"position":1212,"image":1283,"videoId":1284,"body":1285,"_type":87,"_id":1289,"_source":89,"_file":1290,"_extension":91},"Personalization Basics: Intents and signals","2024-05-31T18:33:26Z","https://i.ytimg.com/vi/5qX4fmKKh_M/maxresdefault.jpg","5qX4fmKKh_M",{"type":20,"children":1286,"toc":1287},[],{"title":5,"searchDepth":85,"depth":85,"links":1288},[],"content:3.videos:live-uniform:000-5qX4fmKKh_M.md","3.videos/live-uniform/000-5qX4fmKKh_M.md",{"_path":246,"_dir":74,"_draft":6,"_partial":6,"_locale":5,"title":245,"description":1292,"date":1293,"position":1224,"image":1294,"videoId":1295,"body":1296,"_type":87,"_id":1300,"_source":89,"_file":1301,"_extension":91},"Tony & Tim have invited Alex Shyba to talk about the Jamstack and beyond!\n\nFollow us here:\nhttps://twitter.com/uniformdev\nhttps://twitter.com/timbenniks\nhttps://twitter.com/tmamedbekov","2024-05-31T18:33:33Z","https://i.ytimg.com/vi/ZdQk9zql3zA/maxresdefault.jpg","ZdQk9zql3zA",{"type":20,"children":1297,"toc":1298},[],{"title":5,"searchDepth":85,"depth":85,"links":1299},[],"content:3.videos:live-uniform:001-ZdQk9zql3zA.md","3.videos/live-uniform/001-ZdQk9zql3zA.md",{"_path":249,"_dir":74,"_draft":6,"_partial":6,"_locale":5,"title":248,"description":1303,"date":1304,"position":1236,"image":1305,"videoId":1306,"body":1307,"_type":87,"_id":1311,"_source":89,"_file":1312,"_extension":91},"In this instalment we look into more complex use cases for personalisation. Search results and indexation can generate amazing results when personalised properly. Adam Lamarre shows how to integrate Uniform with Algolia for great results on Jamstack websites!","2024-05-31T18:33:37Z","https://i.ytimg.com/vi/Tngn1E4HEFI/maxresdefault.jpg","Tngn1E4HEFI",{"type":20,"children":1308,"toc":1309},[],{"title":5,"searchDepth":85,"depth":85,"links":1310},[],"content:3.videos:live-uniform:002-Tngn1E4HEFI.md","3.videos/live-uniform/002-Tngn1E4HEFI.md",1718484820668] \ No newline at end of file diff --git a/livestreams/index.html b/livestreams/index.html index 246f03df..ff3b0f9c 100644 --- a/livestreams/index.html +++ b/livestreams/index.html @@ -5,13 +5,13 @@ - - + + - + - - - - - + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - -
- \ No newline at end of file + + + + +
+ \ No newline at end of file diff --git a/presskit/_payload.json b/presskit/_payload.json index 4dfc5147..53e7100f 100644 --- a/presskit/_payload.json +++ b/presskit/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":2368},["Reactive",2],{"content-query-SwRxMvvOw7":3,"content-navigation-8C37fagqQL":331,"content-query-S9CxJCxdR1":1446},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":326,"_id":327,"_source":328,"_file":329,"_extension":330},"/presskit","",false,"press kit","presskit desc",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":323},"root",[22,64,70,146,211,215,228,297,310],{"type":23,"tag":24,"props":25,"children":26},"element","hero",{},[27,38,46],{"type":23,"tag":28,"props":29,"children":30},"template",{"v-slot:title":5},[31],{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":36,"value":37},"text","Press Kit",{"type":23,"tag":28,"props":39,"children":40},{"v-slot:description":5},[41],{"type":23,"tag":32,"props":42,"children":43},{},[44],{"type":36,"value":45},"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR",{"type":23,"tag":28,"props":47,"children":48},{"v-slot:image":5},[49],{"type":23,"tag":32,"props":50,"children":51},{},[52],{"type":23,"tag":53,"props":54,"children":63},"img",{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":59,"width":60,"fit":61,"quality":62},618,"lazy","cloudinary","sm:100vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1659294037/Presskit/FDLC2019_462.jpg",1440,"thumbnail","100",[],{"type":23,"tag":65,"props":66,"children":69},"title-block",{"tag":67,"title":68},"h3","What do I do",[],{"type":23,"tag":71,"props":72,"children":73},"richtext",{},[74],{"type":23,"tag":28,"props":75,"children":76},{"v-slot:body":5},[77],{"type":23,"tag":32,"props":78,"children":79},{},[80,82,91,93,100,102,109,111,118,120,127,128,135,137,144],{"type":36,"value":81},"Tim Benniks is Developer Relations Lead for outreach and awareness at ",{"type":23,"tag":83,"props":84,"children":88},"a",{"href":85,"rel":86,"title":85},"https://hygraph.com",[87],"nofollow",[89],{"type":36,"value":90},"Hygraph",{"type":36,"value":92},". ",{"type":23,"tag":83,"props":94,"children":97},{"href":95,"rel":96,"title":95},"https://machalliance.com",[87],[98],{"type":36,"value":99},"MACH Alliance",{"type":36,"value":101}," Tech Council member, ",{"type":23,"tag":83,"props":103,"children":106},{"href":104,"rel":105,"title":104},"https://nuxt.com",[87],[107],{"type":36,"value":108},"NuxtJS",{"type":36,"value":110}," ambassador, ",{"type":23,"tag":83,"props":112,"children":115},{"href":113,"rel":114,"title":113},"https://cloudinary.com",[87],[116],{"type":36,"value":117},"Cloudinary",{"type":36,"value":119}," Ambassador, ",{"type":23,"tag":83,"props":121,"children":124},{"href":122,"rel":123,"title":122},"https://supabase.com",[87],[125],{"type":36,"value":126},"Supabase",{"type":36,"value":119},{"type":23,"tag":83,"props":129,"children":132},{"href":130,"rel":131,"title":130},"https://algolia.com",[87],[133],{"type":36,"value":134},"Algolia",{"type":36,"value":136}," Ambassador, and ",{"type":23,"tag":83,"props":138,"children":141},{"href":139,"rel":140,"title":139},"https://youtube.com/timbenniks",[87],[142],{"type":36,"value":143},"content creator",{"type":36,"value":145},".",{"type":23,"tag":147,"props":148,"children":149},"two-column",{},[150,186],{"type":23,"tag":28,"props":151,"children":152},{"v-slot:sidea":5},[153,157],{"type":23,"tag":65,"props":154,"children":156},{"tag":67,"title":155},"Mini bio",[],{"type":23,"tag":71,"props":158,"children":159},{},[160],{"type":23,"tag":28,"props":161,"children":162},{"v-slot:body":5},[163,168,181],{"type":23,"tag":32,"props":164,"children":165},{},[166],{"type":36,"value":167},"Over the past 15 years, Tim has worked at various agencies in Amsterdam and Paris with global clients like Nike, Heineken, Google, Tommy Hilfiger, EA Games, CHANEL, L'Oréal, Procter & Gamble, Louis Vuitton, and Hermès.",{"type":23,"tag":32,"props":169,"children":170},{},[171,173,179],{"type":36,"value":172},"Currently, Tim is Developer Relations Lead for Outreach and Awareness at ",{"type":23,"tag":83,"props":174,"children":177},{"href":175,"rel":176,"title":175},"https://hygraph.com/",[87],[178],{"type":36,"value":90},{"type":36,"value":180}," with a focus on content creation, speaking, and community building. In particular, he plays an active role in the developer community as a frequent speaker at conferences and creator of YouTube videos on modern technologies. He also collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS while serving on the MACH Alliance Tech Council. It's all about quality, community, and development of fancy websites.",{"type":23,"tag":32,"props":182,"children":183},{},[184],{"type":36,"value":185},"A demanding job like that needs balancing. Tim plays guitar and revels in family time with his wife, cats, and two little Corgis called Princess Nugget and Scarlet.",{"type":23,"tag":28,"props":187,"children":188},{"v-slot:sideb":5},[189,193],{"type":23,"tag":65,"props":190,"children":192},{"tag":67,"title":191},"Shorter mini bio",[],{"type":23,"tag":71,"props":194,"children":195},{},[196],{"type":23,"tag":28,"props":197,"children":198},{"v-slot:body":5},[199],{"type":23,"tag":32,"props":200,"children":201},{},[202,204,209],{"type":36,"value":203},"Tim is Developer Relations Lead for outreach and awareness at ",{"type":23,"tag":83,"props":205,"children":207},{"href":85,"rel":206,"title":85},[87],[208],{"type":36,"value":90},{"type":36,"value":210}," with a focus on developer relations, community building, and content creation. He’s active in the developer community through speaking engagements at conferences and creation of YouTube videos on modern technologies. Tim collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS, and is a member of the MACH Alliance Tech Council. It's all about quality, community, and development of great websites.",{"type":23,"tag":212,"props":213,"children":214},"speaker-details",{},[],{"type":23,"tag":24,"props":216,"children":217},{},[218],{"type":23,"tag":28,"props":219,"children":220},{"v-slot:image":5},[221],{"type":23,"tag":32,"props":222,"children":223},{},[224],{"type":23,"tag":53,"props":225,"children":227},{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":226,"width":60,"fit":61,"quality":62},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741257/Tim/IMG_1020.jpg",[],{"type":23,"tag":229,"props":230,"children":231},"speaker-media",{},[232,240,261,279],{"type":23,"tag":28,"props":233,"children":234},{"v-slot:descripiton":5},[235],{"type":23,"tag":32,"props":236,"children":237},{},[238],{"type":36,"value":239},"Click on the images for their full resolution versions.",{"type":23,"tag":28,"props":241,"children":242},{"v-slot:image1":5},[243],{"type":23,"tag":32,"props":244,"children":245},{},[246],{"type":23,"tag":83,"props":247,"children":251},{"href":248,"rel":249,"target":250},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg",[87],"_blank",[252],{"type":23,"tag":53,"props":253,"children":260},{"alt":254,"height":255,"loading":56,"provider":57,"sizes":256,"src":248,"width":257,"className":258},"Tim Benniks in Berlin",6960,"sm:50vw",4640,[259],"fancy-image",[],{"type":23,"tag":28,"props":262,"children":263},{"v-slot:image2":5},[264],{"type":23,"tag":32,"props":265,"children":266},{},[267],{"type":23,"tag":83,"props":268,"children":271},{"href":269,"rel":270,"target":250},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg",[87],[272],{"type":23,"tag":53,"props":273,"children":278},{"alt":274,"height":275,"loading":56,"provider":57,"sizes":256,"src":269,"width":276,"className":277},"Tim Benniks in Paris",3080,5472,[259],[],{"type":23,"tag":28,"props":280,"children":281},{"v-slot:image3":5},[282],{"type":23,"tag":32,"props":283,"children":284},{},[285],{"type":23,"tag":83,"props":286,"children":289},{"href":287,"rel":288,"target":250},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png",[87],[290],{"type":23,"tag":53,"props":291,"children":296},{"alt":292,"height":293,"loading":56,"provider":57,"sizes":256,"src":287,"width":294,"className":295},"Tim Benniks in his studio",2880,5120,[259],[],{"type":23,"tag":298,"props":299,"children":301},"talks",{":small":300},"false",[302],{"type":23,"tag":28,"props":303,"children":304},{"v-slot:title":5},[305],{"type":23,"tag":32,"props":306,"children":307},{},[308],{"type":36,"value":309},"Talks",{"type":23,"tag":24,"props":311,"children":312},{},[313],{"type":23,"tag":28,"props":314,"children":315},{"v-slot:image":5},[316],{"type":23,"tag":32,"props":317,"children":318},{},[319],{"type":23,"tag":53,"props":320,"children":322},{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":321,"width":60,"fit":61,"quality":62},"https://res.cloudinary.com/dwfcofnrd/image/upload/347230970_264022386183185_8706521077970757537_n_vpj6co",[],{"title":5,"searchDepth":324,"depth":324,"links":325},2,[],"markdown","content:7.presskit.md","content","7.presskit.md","md",[332,335,1126,1203,1439,1442,1443],{"title":333,"_path":334},"About","/about",{"title":336,"_path":337,"children":338},"videos","/videos",[339,358,377,422,423,475,578,601,623,951],{"title":340,"_path":341,"children":342},"Alive And Kicking","/videos/alive-and-kicking",[343,346,349,352,355],{"title":344,"_path":345},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":347,"_path":348},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":350,"_path":351},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":353,"_path":354},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":356,"_path":357},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":359,"_path":360,"children":361},"Headless Creator","/videos/headless-creator",[362,365,368,371,374],{"title":363,"_path":364},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":366,"_path":367},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":369,"_path":370},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":372,"_path":373},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":375,"_path":376},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":90,"_path":378,"children":379},"/videos/hygraph",[380,383,386,389,392,395,398,401,404,407,410,413,416,419],{"title":381,"_path":382},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":384,"_path":385},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":387,"_path":388},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":390,"_path":391},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":393,"_path":394},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":396,"_path":397},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":399,"_path":400},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":402,"_path":403},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":405,"_path":406},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":408,"_path":409},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":411,"_path":412},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":414,"_path":415},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":417,"_path":418},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":420,"_path":421},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":336,"_path":337},{"title":424,"_path":425,"children":426},"Live Hygraph","/videos/live-hygraph",[427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472],{"title":428,"_path":429},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":431,"_path":432},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":434,"_path":435},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":437,"_path":438},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":440,"_path":441},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":443,"_path":444},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":446,"_path":447},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":449,"_path":450},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":452,"_path":453},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":455,"_path":456},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":458,"_path":459},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":461,"_path":462},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":464,"_path":465},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":467,"_path":468},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":470,"_path":471},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":473,"_path":474},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":476,"_path":477,"children":478},"Live Uniform","/videos/live-uniform",[479,482,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575],{"title":480,"_path":481},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":483,"_path":484},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":486,"_path":487},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":489,"_path":490},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":492,"_path":493},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":495,"_path":496},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":498,"_path":499},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":501,"_path":502},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":504,"_path":505},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":507,"_path":508},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":510,"_path":511},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":513,"_path":514},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":516,"_path":517},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":519,"_path":520},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":522,"_path":523},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":525,"_path":526},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":528,"_path":529},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":531,"_path":532},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":534,"_path":535},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":537,"_path":538},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":540,"_path":541},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":543,"_path":544},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":546,"_path":547},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":549,"_path":550},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":552,"_path":553},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":555,"_path":556},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":558,"_path":559},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":561,"_path":562},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":564,"_path":565},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":567,"_path":568},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":570,"_path":571},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":573,"_path":574},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":576,"_path":577},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":579,"_path":580,"children":581},"Misc Streams","/videos/misc-streams",[582,585,588,591,593,595,598],{"title":583,"_path":584},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":586,"_path":587},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":589,"_path":590},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":573,"_path":592},"/videos/misc-streams/003-jvgiaotcerq",{"title":564,"_path":594},"/videos/misc-streams/004-ekut1koa2n8",{"title":596,"_path":597},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":599,"_path":600},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":602,"_path":603,"children":604},"Mp","/videos/mp",[605,608,611,614,617,620],{"title":606,"_path":607},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":609,"_path":610},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":612,"_path":613},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":615,"_path":616},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":618,"_path":619},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":621,"_path":622},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":624,"_path":625,"children":626},"Tim","/videos/tim",[627,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,679,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,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948],{"title":347,"_path":628},"/videos/tim/000-mvq-_s20ndk",{"title":630,"_path":631},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":633,"_path":634},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":636,"_path":637},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":639,"_path":640},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":642,"_path":643},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":645,"_path":646},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":648,"_path":649},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":651,"_path":652},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":654,"_path":655},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":657,"_path":658},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":660,"_path":661},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":663,"_path":664},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":666,"_path":667},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":669,"_path":670},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":672,"_path":673},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":675,"_path":676},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":350,"_path":678},"/videos/tim/017-m0mrligs6i0",{"title":344,"_path":680},"/videos/tim/018-hhpitreyobi",{"title":682,"_path":683},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":685,"_path":686},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":688,"_path":689},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":691,"_path":692},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":694,"_path":695},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":697,"_path":698},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":700,"_path":701},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":703,"_path":704},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":706,"_path":707},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":709,"_path":710},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":712,"_path":713},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":715,"_path":716},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":718,"_path":719},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":721,"_path":722},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":724,"_path":725},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":727,"_path":728},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":730,"_path":731},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":733,"_path":734},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":736,"_path":737},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":739,"_path":740},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":742,"_path":743},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":745,"_path":746},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":748,"_path":749},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":751,"_path":752},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":754,"_path":755},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":757,"_path":758},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":760,"_path":761},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":763,"_path":764},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":766,"_path":767},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":769,"_path":770},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":772,"_path":773},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":775,"_path":776},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":778,"_path":779},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":781,"_path":782},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":784,"_path":785},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":787,"_path":788},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":790,"_path":791},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":793,"_path":794},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":796,"_path":797},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":799,"_path":800},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":802,"_path":803},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":805,"_path":806},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":808,"_path":809},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":811,"_path":812},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":814,"_path":815},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":817,"_path":818},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":820,"_path":821},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":823,"_path":824},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":826,"_path":827},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":829,"_path":830},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":832,"_path":833},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":835,"_path":836},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":838,"_path":839},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":841,"_path":842},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":844,"_path":845},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":847,"_path":848},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":850,"_path":851},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":853,"_path":854},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":856,"_path":857},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":859,"_path":860},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":862,"_path":863},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":865,"_path":866},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":868,"_path":869},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":871,"_path":872},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":874,"_path":875},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":877,"_path":878},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":880,"_path":881},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":883,"_path":884},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":886,"_path":887},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":889,"_path":890},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":892,"_path":893},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":895,"_path":896},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":898,"_path":899},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":901,"_path":902},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":904,"_path":905},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":907,"_path":908},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":910,"_path":911},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":913,"_path":914},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":916,"_path":917},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":919,"_path":920},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":922,"_path":923},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":925,"_path":926},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":928,"_path":929},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":931,"_path":932},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":934,"_path":935},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":937,"_path":938},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":940,"_path":941},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":943,"_path":944},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":946,"_path":947},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":949,"_path":950},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":952,"_path":953,"children":954},"Uniform","/videos/uniform",[955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123],{"title":956,"_path":957},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":959,"_path":960},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":962,"_path":963},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":965,"_path":966},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":968,"_path":969},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":971,"_path":972},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":974,"_path":975},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":977,"_path":978},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":980,"_path":981},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":983,"_path":984},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":986,"_path":987},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":989,"_path":990},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":992,"_path":993},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":995,"_path":996},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":998,"_path":999},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1001,"_path":1002},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1004,"_path":1005},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1007,"_path":1008},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1010,"_path":1011},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1013,"_path":1014},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1016,"_path":1017},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1019,"_path":1020},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1022,"_path":1023},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1025,"_path":1026},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1028,"_path":1029},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1031,"_path":1032},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1034,"_path":1035},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1037,"_path":1038},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1040,"_path":1041},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1043,"_path":1044},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1046,"_path":1047},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1049,"_path":1050},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1052,"_path":1053},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1055,"_path":1056},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1058,"_path":1059},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1061,"_path":1062},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1064,"_path":1065},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1067,"_path":1068},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1070,"_path":1071},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1073,"_path":1074},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1076,"_path":1077},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1079,"_path":1080},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1082,"_path":1083},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1085,"_path":1086},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1088,"_path":1089},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1091,"_path":1092},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1094,"_path":1095},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1097,"_path":1098},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1100,"_path":1101},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1103,"_path":1104},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1106,"_path":1107},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1109,"_path":1110},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1112,"_path":1113},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1115,"_path":1116},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1118,"_path":1119},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1121,"_path":1122},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1124,"_path":1125},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1127,"_path":1128,"children":1129},"Writing","/writing",[1130,1133,1136,1139,1142,1145,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200],{"title":1131,"_path":1132},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1134,"_path":1135},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1137,"_path":1138},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1140,"_path":1141},"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":1143,"_path":1144},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1127,"_path":1128},{"title":1147,"_path":1148},"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":1150,"_path":1151},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1153,"_path":1154},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1156,"_path":1157},"My Fitness Story","/writing/my-fitness-story",{"title":1159,"_path":1160},"New job alert!","/writing/new-job-alert",{"title":1162,"_path":1163},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1165,"_path":1166},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1168,"_path":1169},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1171,"_path":1172},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1174,"_path":1175},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1177,"_path":1178},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1180,"_path":1181},"The MACH monolith","/writing/the-mach-monolith",{"title":1183,"_path":1184},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1186,"_path":1187},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1189,"_path":1190},"This is headless 2.0","/writing/this-is-headless-20",{"title":1192,"_path":1193},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1195,"_path":1196},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1198,"_path":1199},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1201,"_path":1202},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1204,"_path":1205,"children":1206},"Speaking","/speaking",[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],{"title":1208,"_path":1209},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1211,"_path":1212},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1214,"_path":1215},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1217,"_path":1218},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1220,"_path":1221},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1223,"_path":1224},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1226,"_path":1227},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1229,"_path":1230},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1232,"_path":1233},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1235,"_path":1236},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1238,"_path":1239},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1241,"_path":1242},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1244,"_path":1245},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1247,"_path":1248},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1250,"_path":1251},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1253,"_path":1254},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1256,"_path":1257},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1259,"_path":1260},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1262,"_path":1263},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1265,"_path":1266},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1268,"_path":1269},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1271,"_path":1272},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1274,"_path":1275},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1277,"_path":1278},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1280,"_path":1281},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1283,"_path":1284},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1286,"_path":1287},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1289,"_path":1290},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1292,"_path":1293},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1295,"_path":1296},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1298,"_path":1299},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1301,"_path":1302},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1304,"_path":1305},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1307,"_path":1308},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1310,"_path":1311},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1313,"_path":1314},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1316,"_path":1317},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1319,"_path":1320},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1322,"_path":1323},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1325,"_path":1326},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1328,"_path":1329},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1331,"_path":1332},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1334,"_path":1335},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1337,"_path":1338},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1340,"_path":1341},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1343,"_path":1344},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1346,"_path":1347},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1349,"_path":1350},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1352,"_path":1353},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1355,"_path":1356},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1358,"_path":1359},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1361,"_path":1362},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1364,"_path":1365},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1367,"_path":1368},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1370,"_path":1371},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1373,"_path":1374},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1376,"_path":1377},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1379,"_path":1380},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1382,"_path":1383},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1385,"_path":1386},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1388,"_path":1389},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1391,"_path":1392},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1394,"_path":1395},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1397,"_path":1398},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1400,"_path":1401},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1403,"_path":1404},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1406,"_path":1407},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1409,"_path":1410},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1412,"_path":1413},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1415,"_path":1416},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1418,"_path":1419},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1421,"_path":1422},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1424,"_path":1425},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1427,"_path":1428},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1430,"_path":1431},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1433,"_path":1434},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1436,"_path":1437},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1204,"_path":1205},{"title":1440,"_path":1441},"live streams","/livestreams",{"title":7,"_path":4},{"title":1444,"_path":1445},"alive and kicking","/alive-and-kicking",[1447,1461,1473,1486,1499,1512,1525,1537,1548,1560,1572,1585,1597,1609,1622,1634,1646,1658,1670,1681,1694,1707,1718,1730,1741,1753,1765,1777,1789,1801,1813,1824,1835,1847,1858,1871,1882,1894,1906,1918,1929,1941,1953,1965,1978,1990,2002,2015,2028,2039,2051,2064,2076,2088,2099,2111,2123,2135,2147,2159,2171,2183,2195,2206,2217,2228,2239,2251,2263,2274,2286,2298,2310,2322,2333,2346,2357],{"_path":1437,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1436,"description":5,"conference":1449,"talk":1450,"location":1451,"date":1452,"id":1453,"link":1454,"body":1455,"_type":326,"_id":1459,"_source":328,"_file":1460,"_extension":330},"speaking","CMSCamp Mallorca","Alive and Kicking","Catalonia Majorica Palma Mallorca","2024-09-27","clqdq87gltsup0bvztwqw2f1v","https://mallorca.cmscamp.eu/",{"type":20,"children":1456,"toc":1457},[],{"title":5,"searchDepth":324,"depth":324,"links":1458},[],"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md",{"_path":1434,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1433,"description":5,"conference":1462,"talk":1450,"location":1463,"date":1464,"id":1465,"link":1466,"body":1467,"_type":326,"_id":1471,"_source":328,"_file":1472,"_extension":330},"ContentCon 2024","Austin, Texas","2024-06-05","clqdq6ui7ts730bvzmk1xw47t","https://www.contentstack.com/contentcon",{"type":20,"children":1468,"toc":1469},[],{"title":5,"searchDepth":324,"depth":324,"links":1470},[],"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md",{"_path":1431,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1430,"description":5,"conference":1474,"talk":1475,"location":1476,"date":1477,"id":1478,"link":1479,"body":1480,"_type":326,"_id":1484,"_source":328,"_file":1485,"_extension":330},"DEVworld Conference 2024","Alive and Kicking - a vue into rock & roll","Amsterdam","2024-02-29","clkzot86xire30aujuy08465e","https://devworldconference.com/",{"type":20,"children":1481,"toc":1482},[],{"title":5,"searchDepth":324,"depth":324,"links":1483},[],"content:5.speaking:2024-02-29-clkzot86xire30aujuy08465e.md","5.speaking/2024-02-29-clkzot86xire30aujuy08465e.md",{"_path":1428,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1427,"description":5,"conference":1487,"talk":1488,"location":1489,"date":1490,"id":1491,"link":1492,"body":1493,"_type":326,"_id":1497,"_source":328,"_file":1498,"_extension":330},"WeAreDevelopers World Congress","Alive and Kicking, a Vue into Rock & Roll","Berlin","2023-07-27","clifq4sto3xph0aw4letve613","https://www.wearedevelopers.com/world-congress",{"type":20,"children":1494,"toc":1495},[],{"title":5,"searchDepth":324,"depth":324,"links":1496},[],"content:5.speaking:2023-07-27-clifq4sto3xph0aw4letve613.md","5.speaking/2023-07-27-clifq4sto3xph0aw4letve613.md",{"_path":1425,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1424,"description":5,"conference":1500,"talk":1501,"location":1502,"date":1503,"id":1504,"link":1505,"body":1506,"_type":326,"_id":1510,"_source":328,"_file":1511,"_extension":330},"Vue.js Global Summit '23","The modern front end is composable","Virtual","2023-06-06","clifq4t4w40dr0bw98f7p9zrq","https://events.geekle.us/vuejs23/",{"type":20,"children":1507,"toc":1508},[],{"title":5,"searchDepth":324,"depth":324,"links":1509},[],"content:5.speaking:2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md","5.speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md",{"_path":1422,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1421,"description":5,"conference":1513,"talk":1514,"location":1515,"date":1516,"id":1517,"link":1518,"body":1519,"_type":326,"_id":1523,"_source":328,"_file":1524,"_extension":330},"CityJS Athens","Alive and Kicking, a Vue into Rock & Roll as MC","Athens","2023-05-29","clifq4thm3xel0buvdpqx8bdm","https://greece.cityjsconf.org/",{"type":20,"children":1520,"toc":1521},[],{"title":5,"searchDepth":324,"depth":324,"links":1522},[],"content:5.speaking:2023-05-29-clifq4thm3xel0buvdpqx8bdm.md","5.speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm.md",{"_path":1419,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1418,"description":5,"conference":1526,"talk":1488,"location":1527,"date":1528,"id":1529,"link":1530,"body":1531,"_type":326,"_id":1535,"_source":328,"_file":1536,"_extension":330},"Vue.js London Life Conference","London","2023-05-12","clifq4tw33we40bw8jxhaaroo","https://vuejslive.com/",{"type":20,"children":1532,"toc":1533},[],{"title":5,"searchDepth":324,"depth":324,"links":1534},[],"content:5.speaking:2023-05-12-clifq4tw33we40bw8jxhaaroo.md","5.speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo.md",{"_path":1416,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1415,"description":5,"conference":1538,"talk":1488,"location":1527,"date":1539,"id":1540,"link":1541,"body":1542,"_type":326,"_id":1546,"_source":328,"_file":1547,"_extension":330},"Cloudinary User Summit London","2023-04-20","clifq4u9b3xpm0aw45vj51alh","https://events.cloudinary.com/cloudinaryusersummitlondon",{"type":20,"children":1543,"toc":1544},[],{"title":5,"searchDepth":324,"depth":324,"links":1545},[],"content:5.speaking:2023-04-20-clifq4u9b3xpm0aw45vj51alh.md","5.speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh.md",{"_path":1413,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1412,"description":5,"conference":1549,"talk":1550,"location":1527,"date":1551,"id":1552,"link":1553,"body":1554,"_type":326,"_id":1558,"_source":328,"_file":1559,"_extension":330},"CityJS Conf London","The modern tech stack is composable","2023-03-29","clifq4ul43we80bw8ihhkw7qr","https://cityjsconf.org/speakers",{"type":20,"children":1555,"toc":1556},[],{"title":5,"searchDepth":324,"depth":324,"links":1557},[],"content:5.speaking:2023-03-29-clifq4ul43we80bw8ihhkw7qr.md","5.speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr.md",{"_path":1410,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1409,"description":5,"conference":1561,"talk":1562,"location":1476,"date":1563,"id":1564,"link":1565,"body":1566,"_type":326,"_id":1570,"_source":328,"_file":1571,"_extension":330},"Vuejs Amsterdam","Alive and Kicking - a Vue into Rock & Roll","2023-02-08","clifq4uz43xpt0aw4mw4awvuj","https://vuejs.amsterdam/",{"type":20,"children":1567,"toc":1568},[],{"title":5,"searchDepth":324,"depth":324,"links":1569},[],"content:5.speaking:2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md","5.speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md",{"_path":1407,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1406,"description":5,"conference":1573,"talk":1574,"location":1575,"date":1576,"id":1577,"link":1578,"body":1579,"_type":326,"_id":1583,"_source":328,"_file":1584,"_extension":330},"JamstackConf 2022","The modern digital pipeline, the future of the jamstack is composable","San Fransisco, United States","2022-11-08","clifq4vdb40el0bw9il2y3pb4","https://jamstack.org/conf/",{"type":20,"children":1580,"toc":1581},[],{"title":5,"searchDepth":324,"depth":324,"links":1582},[],"content:5.speaking:2022-11-08-clifq4vdb40el0bw9il2y3pb4.md","5.speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4.md",{"_path":1404,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1403,"description":5,"conference":1586,"talk":1574,"location":1587,"date":1588,"id":1589,"link":1590,"body":1591,"_type":326,"_id":1595,"_source":328,"_file":1596,"_extension":330},"VueConf Toronto 2022","Metro Toronto Convention Centre","2022-11-02","clifq4vps3xep0buvimxfntyq","https://www.vuetoronto.com/",{"type":20,"children":1592,"toc":1593},[],{"title":5,"searchDepth":324,"depth":324,"links":1594},[],"content:5.speaking:2022-11-02-clifq4vps3xep0buvimxfntyq.md","5.speaking/2022-11-02-clifq4vps3xep0buvimxfntyq.md",{"_path":1401,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1400,"description":5,"conference":1598,"talk":1599,"location":1502,"date":1600,"id":1601,"link":1602,"body":1603,"_type":326,"_id":1607,"_source":328,"_file":1608,"_extension":330},"Strapi live stream","Composability with Strapi and Uniform","2022-10-14","clifq4w263xet0buv0mzqzfre","https://lu.ma/strapi-uniform-magic",{"type":20,"children":1604,"toc":1605},[],{"title":5,"searchDepth":324,"depth":324,"links":1606},[],"content:5.speaking:2022-10-14-clifq4w263xet0buv0mzqzfre.md","5.speaking/2022-10-14-clifq4w263xet0buv0mzqzfre.md",{"_path":1398,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1397,"description":5,"conference":1610,"talk":1611,"location":1612,"date":1613,"id":1614,"link":1615,"body":1616,"_type":326,"_id":1620,"_source":328,"_file":1621,"_extension":330},"Javascript Global Summit'22","The modern digital pipeline, the future is composable","virtual","2022-09-27","clifq4wef3xpx0aw4l7ueiqwb","https://events.geekle.us/js/",{"type":20,"children":1617,"toc":1618},[],{"title":5,"searchDepth":324,"depth":324,"links":1619},[],"content:5.speaking:2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md","5.speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md",{"_path":1395,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1394,"description":5,"conference":1623,"talk":1624,"location":1502,"date":1625,"id":1626,"link":1627,"body":1628,"_type":326,"_id":1632,"_source":328,"_file":1633,"_extension":330},"Cloudinary Podcast","Benefits and Factors to Consider with MACH Architecture","2022-09-14","clifq4wqo40fh0bw9sifjtw70","https://www.youtube.com/watch?v=uC1iD_Sq_Bo",{"type":20,"children":1629,"toc":1630},[],{"title":5,"searchDepth":324,"depth":324,"links":1631},[],"content:5.speaking:2022-09-14-clifq4wqo40fh0bw9sifjtw70.md","5.speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70.md",{"_path":1392,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1391,"description":5,"conference":1635,"talk":1636,"location":1502,"date":1637,"id":1638,"link":1639,"body":1640,"_type":326,"_id":1644,"_source":328,"_file":1645,"_extension":330},"Swipe Con 2022","The power of personalization in composable architectures","2022-08-25","clifq4x0z3xq20aw48a1n9hxy","https://uandi.com/swipe-con",{"type":20,"children":1641,"toc":1642},[],{"title":5,"searchDepth":324,"depth":324,"links":1643},[],"content:5.speaking:2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md","5.speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md",{"_path":1389,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1388,"description":5,"conference":1647,"talk":1648,"location":1502,"date":1649,"id":1650,"link":1651,"body":1652,"_type":326,"_id":1656,"_source":328,"_file":1657,"_extension":330},"Agility CMS Webinar","How can enterprises move from monolithic solutions to composability","2022-08-11","clifq4xdz3wek0bw862z7knrr","https://agilitycms.com/resources/events/how-can-enterprises-move-from-monolithic-solutions-to-composability",{"type":20,"children":1653,"toc":1654},[],{"title":5,"searchDepth":324,"depth":324,"links":1655},[],"content:5.speaking:2022-08-11-clifq4xdz3wek0bw862z7knrr.md","5.speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr.md",{"_path":1386,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1385,"description":5,"conference":1659,"talk":1660,"location":1502,"date":1661,"id":1662,"link":1663,"body":1664,"_type":326,"_id":1668,"_source":328,"_file":1669,"_extension":330},"Netlify Live Stream","Live: Creating a Composable Site with Personalization on the Edge","2022-08-10","clifq4xw640fr0bw9po5n2nug","https://www.youtube.com/watch?v=mntPUZRy3wA",{"type":20,"children":1665,"toc":1666},[],{"title":5,"searchDepth":324,"depth":324,"links":1667},[],"content:5.speaking:2022-08-10-clifq4xw640fr0bw9po5n2nug.md","5.speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug.md",{"_path":1383,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1382,"description":5,"conference":1671,"talk":1611,"location":1502,"date":1672,"id":1673,"link":1674,"body":1675,"_type":326,"_id":1679,"_source":328,"_file":1680,"_extension":330},"Composability Summit 2022","2022-07-27","clifq4yep3xf20buv5vorwrl5","https://composability.dev/",{"type":20,"children":1676,"toc":1677},[],{"title":5,"searchDepth":324,"depth":324,"links":1678},[],"content:5.speaking:2022-07-27-clifq4yep3xf20buv5vorwrl5.md","5.speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5.md",{"_path":1380,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1379,"description":5,"conference":1682,"talk":1683,"location":1684,"date":1685,"id":1686,"link":1687,"body":1688,"_type":326,"_id":1692,"_source":328,"_file":1693,"_extension":330},"Vue.js Roadtrip Barcelona","The future of Jamstack is composable","Barcalonam Glovo HQ, Barcelona, Spain","2022-07-01","clifq4ywg3xq60aw48tkujxyl","https://www.eventbrite.co.uk/e/vuejs-roadtrip-barcelona-tickets-339022735127",{"type":20,"children":1689,"toc":1690},[],{"title":5,"searchDepth":324,"depth":324,"links":1691},[],"content:5.speaking:2022-07-01-clifq4ywg3xq60aw48tkujxyl.md","5.speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl.md",{"_path":1374,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1373,"description":5,"conference":1695,"talk":1696,"location":1697,"date":1698,"id":1699,"link":1700,"body":1701,"_type":326,"_id":1705,"_source":328,"_file":1706,"_extension":330},"MACHathon LinkedIn Live","Presenting MACHathon Uniform Entry","Linkedin","2022-06-13","clifq4z8o3xqf0aw49q8f55f9","https://www.linkedin.com/video/event/urn:li:ugcPost:6940601525266206720/",{"type":20,"children":1702,"toc":1703},[],{"title":5,"searchDepth":324,"depth":324,"links":1704},[],"content:5.speaking:2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md","5.speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md",{"_path":1377,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1376,"description":5,"conference":1708,"talk":1709,"location":1502,"date":1698,"id":1710,"link":1711,"body":1712,"_type":326,"_id":1716,"_source":328,"_file":1717,"_extension":330},"The state of Jamstack by Kentico","Discussion on state of Jamstack 2022","clifq4zjc40fv0bw95ufcly4y","https://kontent.ai/webinars/state-of-jamstack-2022-report-emea/",{"type":20,"children":1713,"toc":1714},[],{"title":5,"searchDepth":324,"depth":324,"links":1715},[],"content:5.speaking:2022-06-13-clifq4zjc40fv0bw95ufcly4y.md","5.speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y.md",{"_path":1371,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1370,"description":5,"conference":1719,"talk":1720,"location":1721,"date":1722,"id":1723,"link":1565,"body":1724,"_type":326,"_id":1728,"_source":328,"_file":1729,"_extension":330},"Vue.js Global 2022","Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again","Theater Amsterdam, The Netherlands","2022-06-02","clifq4zvh40fz0bw986sdpv5u",{"type":20,"children":1725,"toc":1726},[],{"title":5,"searchDepth":324,"depth":324,"links":1727},[],"content:5.speaking:2022-06-02-clifq4zvh40fz0bw986sdpv5u.md","5.speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u.md",{"_path":1368,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1367,"description":5,"conference":1731,"talk":1683,"location":1612,"date":1732,"id":1733,"link":1734,"body":1735,"_type":326,"_id":1739,"_source":328,"_file":1740,"_extension":330},"Vue.js Global Summit'22","2022-05-26","clifq506e3wev0bw88q2lf63q","https://events.geekle.us/vuejs/",{"type":20,"children":1736,"toc":1737},[],{"title":5,"searchDepth":324,"depth":324,"links":1738},[],"content:5.speaking:2022-05-26-clifq506e3wev0bw88q2lf63q.md","5.speaking/2022-05-26-clifq506e3wev0bw88q2lf63q.md",{"_path":1365,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1364,"description":5,"conference":1742,"talk":1743,"location":1502,"date":1744,"id":1745,"link":1746,"body":1747,"_type":326,"_id":1751,"_source":328,"_file":1752,"_extension":330},"GatsbyConf 2022","The Modern DXP: How Jamstack will change the world","2022-03-02","clifq50g53xfr0buv56km2voa","https://www.gatsbyconf.com/",{"type":20,"children":1748,"toc":1749},[],{"title":5,"searchDepth":324,"depth":324,"links":1750},[],"content:5.speaking:2022-03-02-clifq50g53xfr0buv56km2voa.md","5.speaking/2022-03-02-clifq50g53xfr0buv56km2voa.md",{"_path":1362,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1361,"description":5,"conference":1754,"talk":1755,"location":1502,"date":1756,"id":1757,"link":1758,"body":1759,"_type":326,"_id":1763,"_source":328,"_file":1764,"_extension":330},"Vue Storefront Hackathon - Flash Talk","Modern Commerce - How Jamstack will change the world","2022-03-01","clifq50sj40g30bw9rqy825mb","https://www.youtube.com/watch?v=1lhZqBvgoxU",{"type":20,"children":1760,"toc":1761},[],{"title":5,"searchDepth":324,"depth":324,"links":1762},[],"content:5.speaking:2022-03-01-clifq50sj40g30bw9rqy825mb.md","5.speaking/2022-03-01-clifq50sj40g30bw9rqy825mb.md",{"_path":1359,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1358,"description":5,"conference":1766,"talk":1767,"location":1612,"date":1768,"id":1769,"link":1770,"body":1771,"_type":326,"_id":1775,"_source":328,"_file":1776,"_extension":330},"LAB Group Round Table","Stick or Twist: Monolith v.s Microservices","2022-02-10","clifq515940g70bw9yu0ltedp","https://lab.co.uk/",{"type":20,"children":1772,"toc":1773},[],{"title":5,"searchDepth":324,"depth":324,"links":1774},[],"content:5.speaking:2022-02-10-clifq515940g70bw9yu0ltedp.md","5.speaking/2022-02-10-clifq515940g70bw9yu0ltedp.md",{"_path":1356,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1355,"description":5,"conference":1778,"talk":1779,"location":1612,"date":1780,"id":1781,"link":1782,"body":1783,"_type":326,"_id":1787,"_source":328,"_file":1788,"_extension":330},"Kontent Rocks podcast","Personalisation in the Jamstack with Kentico Kontent","2022-02-08","clifq51j53wez0bw8cd1znjmi","https://podcasts.apple.com/us/podcast/kontent-rocks-podcast/id754786884",{"type":20,"children":1784,"toc":1785},[],{"title":5,"searchDepth":324,"depth":324,"links":1786},[],"content:5.speaking:2022-02-08-clifq51j53wez0bw8cd1znjmi.md","5.speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi.md",{"_path":1353,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1352,"description":5,"conference":1790,"talk":1791,"location":1502,"date":1792,"id":1793,"link":1794,"body":1795,"_type":326,"_id":1799,"_source":328,"_file":1800,"_extension":330},"The Jam.dev 2022","Cable Managing the Jamstack","2022-01-27","clifq51vy3wf30bw8qsv8nsv9","https://cfe.dev/events/the-jam-2022/",{"type":20,"children":1796,"toc":1797},[],{"title":5,"searchDepth":324,"depth":324,"links":1798},[],"content:5.speaking:2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md","5.speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md",{"_path":1350,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1349,"description":5,"conference":1802,"talk":1803,"location":1502,"date":1804,"id":1805,"link":1806,"body":1807,"_type":326,"_id":1811,"_source":328,"_file":1812,"_extension":330},"Vue.js Berlin","Vue js round-table discussion","2021-12-14","clifq528940gb0bw9bok0o68k","https://www.meetup.com/Vue-js-Berlin/",{"type":20,"children":1808,"toc":1809},[],{"title":5,"searchDepth":324,"depth":324,"links":1810},[],"content:5.speaking:2021-12-14-clifq528940gb0bw9bok0o68k.md","5.speaking/2021-12-14-clifq528940gb0bw9bok0o68k.md",{"_path":1347,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1346,"description":5,"conference":1814,"talk":1755,"location":1502,"date":1815,"id":1816,"link":1817,"body":1818,"_type":326,"_id":1822,"_source":328,"_file":1823,"_extension":330},"E-Commerce tech summit 21 by Geekle","2021-12-01","clifq52jm3xqj0aw4mxuyuaey","https://geekle.us/e-commerce",{"type":20,"children":1819,"toc":1820},[],{"title":5,"searchDepth":324,"depth":324,"links":1821},[],"content:5.speaking:2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md","5.speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md",{"_path":1344,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1343,"description":5,"conference":1825,"talk":1826,"location":1502,"date":1827,"id":1828,"link":1590,"body":1829,"_type":326,"_id":1833,"_source":328,"_file":1834,"_extension":330},"VueConf Toronto 2021","Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again...","2021-11-22","clifq52wr3wfm0bw83eawjx9x",{"type":20,"children":1830,"toc":1831},[],{"title":5,"searchDepth":324,"depth":324,"links":1832},[],"content:5.speaking:2021-11-22-clifq52wr3wfm0bw83eawjx9x.md","5.speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x.md",{"_path":1341,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1340,"description":5,"conference":1836,"talk":1837,"location":1502,"date":1838,"id":1839,"link":1840,"body":1841,"_type":326,"_id":1845,"_source":328,"_file":1846,"_extension":330},"Kontent Horizons","This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","2021-11-10","clifq536v3xg20buvlz1n7ddw","https://horizons.kontent.ai/",{"type":20,"children":1842,"toc":1843},[],{"title":5,"searchDepth":324,"depth":324,"links":1844},[],"content:5.speaking:2021-11-10-clifq536v3xg20buvlz1n7ddw.md","5.speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw.md",{"_path":1338,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1337,"description":5,"conference":1848,"talk":1837,"location":1502,"date":1849,"id":1850,"link":1851,"body":1852,"_type":326,"_id":1856,"_source":328,"_file":1857,"_extension":330},"Fast Forward 2021","2021-11-04","clifq53ib40gf0bw9c3mxprzu","https://www.contentful.com/fast-forward/",{"type":20,"children":1853,"toc":1854},[],{"title":5,"searchDepth":324,"depth":324,"links":1855},[],"content:5.speaking:2021-11-04-clifq53ib40gf0bw9c3mxprzu.md","5.speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu.md",{"_path":1335,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1334,"description":5,"conference":1859,"talk":1860,"location":1861,"date":1862,"id":1863,"link":1864,"body":1865,"_type":326,"_id":1869,"_source":328,"_file":1870,"_extension":330},"DevBreak - The ultimate tech festival","JAMstack is the future. I think. Maybe.","Bouville, France","2021-09-07","clifq53so3wfq0bw81xni3t7x","https://www.devbreak.io/",{"type":20,"children":1866,"toc":1867},[],{"title":5,"searchDepth":324,"depth":324,"links":1868},[],"content:5.speaking:2021-09-07-clifq53so3wfq0bw81xni3t7x.md","5.speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x.md",{"_path":1332,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1331,"description":5,"conference":1872,"talk":1837,"location":1502,"date":1873,"id":1874,"link":1875,"body":1876,"_type":326,"_id":1880,"_source":328,"_file":1881,"_extension":330},"Programmed in Pencil Meetup","2021-07-27","clifq542s3xg60buvdk199xtq","https://www.programmedinpencil.com/",{"type":20,"children":1877,"toc":1878},[],{"title":5,"searchDepth":324,"depth":324,"links":1879},[],"content:5.speaking:2021-07-27-clifq542s3xg60buvdk199xtq.md","5.speaking/2021-07-27-clifq542s3xg60buvdk199xtq.md",{"_path":1329,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1328,"description":5,"conference":1883,"talk":1884,"location":1502,"date":1885,"id":1886,"link":1887,"body":1888,"_type":326,"_id":1892,"_source":328,"_file":1893,"_extension":330},"2021 VueDay Italy","MC & talk: Magical combination to build a modern website","2021-04-29","clifq54ct3wfu0bw8zsr9mejw","https://2021.vueday.it/",{"type":20,"children":1889,"toc":1890},[],{"title":5,"searchDepth":324,"depth":324,"links":1891},[],"content:5.speaking:2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md","5.speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md",{"_path":1326,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1325,"description":5,"conference":1895,"talk":1896,"location":1502,"date":1897,"id":1898,"link":1899,"body":1900,"_type":326,"_id":1904,"_source":328,"_file":1905,"_extension":330},"Vue Storefront Summit 2021","Hyper fast personalization for modern e-commerce","2021-04-20","clifq54na3xgb0buvrvmbamxf","https://hopin.com/events/vue-storefront-summit-2021",{"type":20,"children":1901,"toc":1902},[],{"title":5,"searchDepth":324,"depth":324,"links":1903},[],"content:5.speaking:2021-04-20-clifq54na3xgb0buvrvmbamxf.md","5.speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf.md",{"_path":1323,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1322,"description":5,"conference":1907,"talk":1908,"location":1502,"date":1909,"id":1910,"link":1911,"body":1912,"_type":326,"_id":1916,"_source":328,"_file":1917,"_extension":330},"Before Devbreak","Dynamic personalization on JAMstack websites","2021-04-07","clifq54zf3wfz0bw80v5gzndk","https://www.devbreak.io/before-devbreak",{"type":20,"children":1913,"toc":1914},[],{"title":5,"searchDepth":324,"depth":324,"links":1915},[],"content:5.speaking:2021-04-07-clifq54zf3wfz0bw80v5gzndk.md","5.speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk.md",{"_path":1320,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1319,"description":5,"conference":1919,"talk":832,"location":1502,"date":1920,"id":1921,"link":1922,"body":1923,"_type":326,"_id":1927,"_source":328,"_file":1928,"_extension":330},"City JS Conf 2021","2021-03-24","clifq559p3xgf0buvzch9im3l","https://cityjsconf.org/",{"type":20,"children":1924,"toc":1925},[],{"title":5,"searchDepth":324,"depth":324,"links":1926},[],"content:5.speaking:2021-03-24-clifq559p3xgf0buvzch9im3l.md","5.speaking/2021-03-24-clifq559p3xgf0buvzch9im3l.md",{"_path":1317,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1316,"description":5,"conference":1930,"talk":1931,"location":1502,"date":1932,"id":1933,"link":1934,"body":1935,"_type":326,"_id":1939,"_source":328,"_file":1940,"_extension":330},"GatsbyConf 2021","A workshop on connecting ContentStack, Gatsby and Uniform","2021-03-03","clifq55jz3xqp0aw4je7y5sw1","https://gatsbyconf.com/event/easily-build-a-dynamic-and-personalized-website-with-contentstack-gatsby-and-uniform/",{"type":20,"children":1936,"toc":1937},[],{"title":5,"searchDepth":324,"depth":324,"links":1938},[],"content:5.speaking:2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md","5.speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md",{"_path":1314,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1313,"description":5,"conference":1942,"talk":1943,"location":1502,"date":1944,"id":1945,"link":1946,"body":1947,"_type":326,"_id":1951,"_source":328,"_file":1952,"_extension":330},"JS World Conference","The Modern DXP. How JAMstack will change the world.","2021-02-22","clifq55tf40gk0bw9vofea3yp","https://frontenddeveloperlove.com/",{"type":20,"children":1948,"toc":1949},[],{"title":5,"searchDepth":324,"depth":324,"links":1950},[],"content:5.speaking:2021-02-22-clifq55tf40gk0bw9vofea3yp.md","5.speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp.md",{"_path":1311,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1310,"description":5,"conference":1954,"talk":1955,"location":1502,"date":1956,"id":1957,"link":1958,"body":1959,"_type":326,"_id":1963,"_source":328,"_file":1964,"_extension":330},"The Power of Cross-Technology Innovation","#21 with Peggy, Tim, and Idoia","2021-02-02","clifq56623xqt0aw44sbds5cn","https://www.linkedin.com/video/live/urn:li:ugcPost:6762404029302640640/",{"type":20,"children":1960,"toc":1961},[],{"title":5,"searchDepth":324,"depth":324,"links":1962},[],"content:5.speaking:2021-02-02-clifq56623xqt0aw44sbds5cn.md","5.speaking/2021-02-02-clifq56623xqt0aw44sbds5cn.md",{"_path":1308,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1307,"description":5,"conference":1966,"talk":1967,"location":1968,"date":1969,"id":1970,"link":1971,"body":1972,"_type":326,"_id":1976,"_source":328,"_file":1977,"_extension":330},"Web Dev x Sustainability ","BOECKBX - Let's Talk About Eco-Friendliness in Web Development","YouTube","2021-02-01","clifq56gq3xqx0aw47qor4w9s","https://www.youtube.com/watch?v=LcUaUC6BxUk",{"type":20,"children":1973,"toc":1974},[],{"title":5,"searchDepth":324,"depth":324,"links":1975},[],"content:5.speaking:2021-02-01-clifq56gq3xqx0aw47qor4w9s.md","5.speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s.md",{"_path":1305,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1304,"description":5,"conference":1979,"talk":1980,"location":1502,"date":1981,"id":1982,"link":1983,"body":1984,"_type":326,"_id":1988,"_source":328,"_file":1989,"_extension":330},"Vue.js // Berlin","The magical combination for creating a modern website.","2021-01-12","clifq56q43xgk0buv4hu04quz","https://www.meetup.com/Vue-js-Berlin/events/wwtgqrycccbqb/",{"type":20,"children":1985,"toc":1986},[],{"title":5,"searchDepth":324,"depth":324,"links":1987},[],"content:5.speaking:2021-01-12-clifq56q43xgk0buv4hu04quz.md","5.speaking/2021-01-12-clifq56q43xgk0buv4hu04quz.md",{"_path":1302,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1301,"description":5,"conference":1991,"talk":1992,"location":1502,"date":1993,"id":1994,"link":1995,"body":1996,"_type":326,"_id":2000,"_source":328,"_file":2001,"_extension":330},"Environmentally Sustainable Websites","Digital's Carbon Footprint, Green Development Choices and Options, Sustainable Shortcuts, Optimised User Experiences, MACH/Composable Architecture","2020-12-18","clifq571z40gq0bw9b62wbowr","https://www.valtech.com/podcasts/digital-transformation-podcast-environmentally-sustainable-websites",{"type":20,"children":1997,"toc":1998},[],{"title":5,"searchDepth":324,"depth":324,"links":1999},[],"content:5.speaking:2020-12-18-clifq571z40gq0bw9b62wbowr.md","5.speaking/2020-12-18-clifq571z40gq0bw9b62wbowr.md",{"_path":1299,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1298,"description":5,"conference":2003,"talk":2004,"location":2005,"date":2006,"id":2007,"link":2008,"body":2009,"_type":326,"_id":2013,"_source":328,"_file":2014,"_extension":330},"Zeplin ZAM JAM","In this first ever Zam Jam session, we’re talking to 3 digital leaders about how Zeplin helps their agency foster deep customer engagement and multi-disciplined team collaboration to build beautiful products and deliver on the promise of design.","Virtual (YouTube Livestream)","2020-12-16","clifq57c43wg40bw81h7fr291","https://www.youtube.com/watch?v=tUc9CKiC0Go",{"type":20,"children":2010,"toc":2011},[],{"title":5,"searchDepth":324,"depth":324,"links":2012},[],"content:5.speaking:2020-12-16-clifq57c43wg40bw81h7fr291.md","5.speaking/2020-12-16-clifq57c43wg40bw81h7fr291.md",{"_path":1296,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1295,"description":5,"conference":2016,"talk":2017,"location":2018,"date":2019,"id":2020,"link":2021,"body":2022,"_type":326,"_id":2026,"_source":328,"_file":2027,"_extension":330},"Tech Talks with Santosh ","Santosh: In this talk show, we will have some awesome developers, sharing content from the programming language they work on.","Virtual (Youtube Livestream)","2020-12-11","clifq57o03xgp0buvlvdxm5l9","https://www.youtube.com/c/TechTalksWithSantosh",{"type":20,"children":2023,"toc":2024},[],{"title":5,"searchDepth":324,"depth":324,"links":2025},[],"content:5.speaking:2020-12-11-clifq57o03xgp0buvlvdxm5l9.md","5.speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9.md",{"_path":1293,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1292,"description":5,"conference":2029,"talk":2030,"location":1502,"date":2031,"id":2032,"link":113,"body":2033,"_type":326,"_id":2037,"_source":328,"_file":2038,"_extension":330},"Cloudinary Webinar: Road to headless","Join us to learn how a headless architecture can help you streamline content delivery through an integration of composed components with best-of-breed vendors.","2020-12-02","clifq582i3wg80bw8rszss5am",{"type":20,"children":2034,"toc":2035},[],{"title":5,"searchDepth":324,"depth":324,"links":2036},[],"content:5.speaking:2020-12-02-clifq582i3wg80bw8rszss5am.md","5.speaking/2020-12-02-clifq582i3wg80bw8rszss5am.md",{"_path":1290,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1289,"description":5,"conference":2040,"talk":2041,"location":1502,"date":2042,"id":2043,"link":2044,"body":2045,"_type":326,"_id":2049,"_source":328,"_file":2050,"_extension":330},"Zeplin ZAM JAM round table discussion","In this discussion between multiple agencies we try to provide real world insight into how teams are using Zeplin.","2020-12-01","clifq58cz3xr10aw4n6qndf3s","https://www.youtube.com/channel/UCM2z6CHM4wvmlB9qo_dq0dg",{"type":20,"children":2046,"toc":2047},[],{"title":5,"searchDepth":324,"depth":324,"links":2048},[],"content:5.speaking:2020-12-01-clifq58cz3xr10aw4n6qndf3s.md","5.speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s.md",{"_path":1287,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1286,"description":5,"conference":2052,"talk":2053,"location":2054,"date":2055,"id":2056,"link":2057,"body":2058,"_type":326,"_id":2062,"_source":328,"_file":2063,"_extension":330},"Podcast: RETHINK Luxury - Ep 2: Sustainability","We’ll be diving into ethical sourcing in luxury, the challenges of implementing sustainable businesses practices, and envisioning a better world forward","Podcast","2020-11-11","clifq58oo40gu0bw9iffiakmh","https://www.rethink.industries/podcast/rethink-luxury-sustainability/",{"type":20,"children":2059,"toc":2060},[],{"title":5,"searchDepth":324,"depth":324,"links":2061},[],"content:5.speaking:2020-11-11-clifq58oo40gu0bw9iffiakmh.md","5.speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh.md",{"_path":1284,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1283,"description":5,"conference":2065,"talk":2066,"location":1502,"date":2067,"id":2068,"link":2069,"body":2070,"_type":326,"_id":2074,"_source":328,"_file":2075,"_extension":330},"Live coding for the Prismic Slice Contest","Lucie and Tim will connect to build a simple Slice Library for 1 hour.\nThey will be using the New Slice Builder for that, which also generates Storybook stories for each of their components.","2020-11-10","clifq590340gy0bw9onnmgr7y","https://www.youtube.com/watch?v=p3Wih8zOfI8",{"type":20,"children":2071,"toc":2072},[],{"title":5,"searchDepth":324,"depth":324,"links":2073},[],"content:5.speaking:2020-11-10-clifq590340gy0bw9onnmgr7y.md","5.speaking/2020-11-10-clifq590340gy0bw9onnmgr7y.md",{"_path":1281,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1280,"description":5,"conference":2077,"talk":2078,"location":1502,"date":2079,"id":2080,"link":2081,"body":2082,"_type":326,"_id":2086,"_source":328,"_file":2087,"_extension":330},"JS Monthly Online #07, Oct Meetup","I will take you through the new features of Webpack 5 and also provide some examples where we could benefit in your day to day development live","2020-10-29","clifq59b83xr60aw45w2sqa1g","https://www.meetup.com/js-monthly/events/273843246/",{"type":20,"children":2083,"toc":2084},[],{"title":5,"searchDepth":324,"depth":324,"links":2085},[],"content:5.speaking:2020-10-29-clifq59b83xr60aw45w2sqa1g.md","5.speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g.md",{"_path":1278,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1277,"description":5,"conference":2089,"talk":1980,"location":1502,"date":2090,"id":2091,"link":2092,"body":2093,"_type":326,"_id":2097,"_source":328,"_file":2098,"_extension":330},"Vue.js Antwerp - October 2020","2020-10-14","clifq59mp3wgc0bw82qykah6x","https://www.meetup.com/vue-antwerp/events/273585859/",{"type":20,"children":2094,"toc":2095},[],{"title":5,"searchDepth":324,"depth":324,"links":2096},[],"content:5.speaking:2020-10-14-clifq59mp3wgc0bw82qykah6x.md","5.speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x.md",{"_path":1275,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1274,"description":5,"conference":2100,"talk":2101,"location":1502,"date":2102,"id":2103,"link":2104,"body":2105,"_type":326,"_id":2109,"_source":328,"_file":2110,"_extension":330},"Vue.js Global Conference 2020","An introduction to Vite and VitePress","2020-09-17","clifq59zj3wgg0bw8xmh09vvm","https://vuejs.amsterdam",{"type":20,"children":2106,"toc":2107},[],{"title":5,"searchDepth":324,"depth":324,"links":2108},[],"content:5.speaking:2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md","5.speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md",{"_path":1272,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1271,"description":5,"conference":2112,"talk":2113,"location":1502,"date":2114,"id":2115,"link":2116,"body":2117,"_type":326,"_id":2121,"_source":328,"_file":2122,"_extension":330},"JS Monthly Online","A Developers Guide To Low Carbon Websites","2020-08-26","clifq5a9x3wgk0bw8x8qfl5rk","https://www.meetup.com/js-monthly/events/272459669/",{"type":20,"children":2118,"toc":2119},[],{"title":5,"searchDepth":324,"depth":324,"links":2120},[],"content:5.speaking:2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md","5.speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md",{"_path":1269,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1268,"description":5,"conference":2124,"talk":2125,"location":1502,"date":2126,"id":2127,"link":2128,"body":2129,"_type":326,"_id":2133,"_source":328,"_file":2134,"_extension":330},"Views on Vue Podcast Interview","My views on Vue at scale and on enterprise level","2020-08-05","clifq5anp3xrb0aw4jxeipa7e","https://devchat.tv/views-on-vue/vov-116-using-vue-at-scale-at-loreal-with-tim-benniks/",{"type":20,"children":2130,"toc":2131},[],{"title":5,"searchDepth":324,"depth":324,"links":2132},[],"content:5.speaking:2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md","5.speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md",{"_path":1266,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1265,"description":5,"conference":2136,"talk":2137,"location":1502,"date":2138,"id":2139,"link":2140,"body":2141,"_type":326,"_id":2145,"_source":328,"_file":2146,"_extension":330},"ImageCon 2020","A Developers Guide To Lowe Carbon Websites","2020-07-27","clifq5axb3xgw0buvy6hrvpv2","https://www.imagecon.com/",{"type":20,"children":2142,"toc":2143},[],{"title":5,"searchDepth":324,"depth":324,"links":2144},[],"content:5.speaking:2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md","5.speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md",{"_path":1263,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1262,"description":5,"conference":2148,"talk":2149,"location":1502,"date":2150,"id":2151,"link":2152,"body":2153,"_type":326,"_id":2157,"_source":328,"_file":2158,"_extension":330},"Prismic webinar","Why go headless? Steps to go from a monolithic CMS to a decoupled one.","2020-07-21","clifq5b6s3xrf0aw4s8ml5qjb","https://www.youtube.com/watch?v=wVyMYGrI0hM",{"type":20,"children":2154,"toc":2155},[],{"title":5,"searchDepth":324,"depth":324,"links":2156},[],"content:5.speaking:2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md","5.speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md",{"_path":1260,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1259,"description":5,"conference":2160,"talk":2161,"location":1502,"date":2162,"id":2163,"link":2164,"body":2165,"_type":326,"_id":2169,"_source":328,"_file":2170,"_extension":330},"ReactiveConf","Team First - Corona edition","2020-06-09","clifq5bj73xrj0aw42st3pna4","https://www.meetup.com/ReactiveMeetupsPrague/events/270869144/",{"type":20,"children":2166,"toc":2167},[],{"title":5,"searchDepth":324,"depth":324,"links":2168},[],"content:5.speaking:2020-06-09-clifq5bj73xrj0aw42st3pna4.md","5.speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4.md",{"_path":1257,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1256,"description":5,"conference":2172,"talk":2173,"location":1502,"date":2174,"id":2175,"link":2176,"body":2177,"_type":326,"_id":2181,"_source":328,"_file":2182,"_extension":330},"That's my JAMstack podcast interview","JAMstack is my JAM. I guess...","2020-05-28","clifq5bvw40h20bw92kt7pmp1","https://thatsmyjamstack.com/posts/tim-benniks/",{"type":20,"children":2178,"toc":2179},[],{"title":5,"searchDepth":324,"depth":324,"links":2180},[],"content:5.speaking:2020-05-28-clifq5bvw40h20bw92kt7pmp1.md","5.speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1.md",{"_path":1254,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1253,"description":5,"conference":2184,"talk":2185,"location":1502,"date":2186,"id":2187,"link":2188,"body":2189,"_type":326,"_id":2193,"_source":328,"_file":2194,"_extension":330},"We Belong Here Podcast Interview","How I moved into tech from being a Nurse and Musician","2020-05-25","clifq5c5u3wgo0bw8g8yudazp","https://webelongpodcast.com/",{"type":20,"children":2190,"toc":2191},[],{"title":5,"searchDepth":324,"depth":324,"links":2192},[],"content:5.speaking:2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md","5.speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md",{"_path":1251,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1250,"description":5,"conference":2196,"talk":2161,"location":1502,"date":2197,"id":2198,"link":2199,"body":2200,"_type":326,"_id":2204,"_source":328,"_file":2205,"_extension":330},"Talent.io talks Online","2020-05-13","clifq5cfw3xh00buvhyslf4s3","https://www.eventbrite.com/o/talentio-16600656820",{"type":20,"children":2201,"toc":2202},[],{"title":5,"searchDepth":324,"depth":324,"links":2203},[],"content:5.speaking:2020-05-13-clifq5cfw3xh00buvhyslf4s3.md","5.speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3.md",{"_path":1248,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1247,"description":5,"conference":2207,"talk":1860,"location":1502,"date":2208,"id":2209,"link":2210,"body":2211,"_type":326,"_id":2215,"_source":328,"_file":2216,"_extension":330},"VueJS Olso Virtual Meetup","2020-05-06","clifq5cpx40hk0bw9odxcxt0q","https://www.meetup.com/VueJS-Oslo/events/270218508/",{"type":20,"children":2212,"toc":2213},[],{"title":5,"searchDepth":324,"depth":324,"links":2214},[],"content:5.speaking:2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md","5.speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md",{"_path":1245,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1244,"description":5,"conference":2218,"talk":2161,"location":1502,"date":2219,"id":2220,"link":2221,"body":2222,"_type":326,"_id":2226,"_source":328,"_file":2227,"_extension":330},"MallorcaJS meetup","2020-04-22","clifq5czw3wgs0bw8srwiffx1","https://www.meetup.com/MallorcaJS/events/270156286",{"type":20,"children":2223,"toc":2224},[],{"title":5,"searchDepth":324,"depth":324,"links":2225},[],"content:5.speaking:2020-04-22-clifq5czw3wgs0bw8srwiffx1.md","5.speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1.md",{"_path":1242,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1241,"description":5,"conference":2229,"talk":1860,"location":1502,"date":2230,"id":2231,"link":2232,"body":2233,"_type":326,"_id":2237,"_source":328,"_file":2238,"_extension":330},"Front-end Love virtual Meetup","2020-03-19","clifq5dal3xsn0aw49a9wad1n","https://youtu.be/Wq2AqONg7rs?t=5307",{"type":20,"children":2234,"toc":2235},[],{"title":5,"searchDepth":324,"depth":324,"links":2236},[],"content:5.speaking:2020-03-19-clifq5dal3xsn0aw49a9wad1n.md","5.speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n.md",{"_path":1239,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1238,"description":5,"conference":2240,"talk":2241,"location":2242,"date":2243,"id":2244,"link":1565,"body":2245,"_type":326,"_id":2249,"_source":328,"_file":2250,"_extension":330},"Vue.js Amsterdam 2020","Team First. A framework to lead a team of developers to success in a high-pressure environment","Amsterdam, The Netherlands","2020-02-18","clifq5dk940if0bw9ok9achtj",{"type":20,"children":2246,"toc":2247},[],{"title":5,"searchDepth":324,"depth":324,"links":2248},[],"content:5.speaking:2020-02-18-clifq5dk940if0bw9ok9achtj.md","5.speaking/2020-02-18-clifq5dk940if0bw9ok9achtj.md",{"_path":1236,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1235,"description":5,"conference":2252,"talk":1860,"location":2253,"date":2254,"id":2255,"link":2256,"body":2257,"_type":326,"_id":2261,"_source":328,"_file":2262,"_extension":330},"Vue.js Paris Meetup","Paris, France","2019-12-17","clifq5dyh40ij0bw9oquw072b","https://www.meetup.com/Vuejs-Paris/events/266953797/",{"type":20,"children":2258,"toc":2259},[],{"title":5,"searchDepth":324,"depth":324,"links":2260},[],"content:5.speaking:2019-12-17-clifq5dyh40ij0bw9oquw072b.md","5.speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b.md",{"_path":1233,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1232,"description":5,"conference":2264,"talk":1860,"location":2253,"date":2265,"id":2266,"link":2267,"body":2268,"_type":326,"_id":2272,"_source":328,"_file":2273,"_extension":330},"The evolution of modern web development on monolithic platforms","2019-11-28","clifq5ebo3wgx0bw8vno5ce0d","https://www.meetup.com/Meet-up-at-Valtech-Front-Platform/events/265587330/",{"type":20,"children":2269,"toc":2270},[],{"title":5,"searchDepth":324,"depth":324,"links":2271},[],"content:5.speaking:2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md","5.speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md",{"_path":1230,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1229,"description":5,"conference":2275,"talk":2241,"location":2276,"date":2277,"id":2278,"link":2279,"body":2280,"_type":326,"_id":2284,"_source":328,"_file":2285,"_extension":330},"Budapest VUE.JS meetup VueAnd.Me edition","Budapest, Hungary","2019-09-27","clifq5eos3xhh0buvewly5gxs","https://www.meetup.com/Vue-js-Budapest/events/263805562/",{"type":20,"children":2281,"toc":2282},[],{"title":5,"searchDepth":324,"depth":324,"links":2283},[],"content:5.speaking:2019-09-27-clifq5eos3xhh0buvewly5gxs.md","5.speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs.md",{"_path":1227,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1226,"description":5,"conference":2287,"talk":2288,"location":2242,"date":2289,"id":2290,"link":2291,"body":2292,"_type":326,"_id":2296,"_source":328,"_file":2297,"_extension":330},"EXDS#19","Delivery guidelines for creative assets","2019-09-09","clifq5f1b3wh10bw8ftmppjkc","https://www.valtech.com/",{"type":20,"children":2293,"toc":2294},[],{"title":5,"searchDepth":324,"depth":324,"links":2295},[],"content:5.speaking:2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md","5.speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md",{"_path":1224,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1223,"description":5,"conference":2299,"talk":2300,"location":2253,"date":2301,"id":2302,"link":2303,"body":2304,"_type":326,"_id":2308,"_source":328,"_file":2309,"_extension":330},"Vue.js Paris meetup","Vue.js for L'Oreal. A case study","2019-09-04","clifq5fer3xhl0buvzzgwqg1k","https://www.meetup.com/fr-FR/Vuejs-Paris/events/263934300/",{"type":20,"children":2305,"toc":2306},[],{"title":5,"searchDepth":324,"depth":324,"links":2307},[],"content:5.speaking:2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md","5.speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md",{"_path":1221,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1220,"description":5,"conference":2311,"talk":2241,"location":2312,"date":2313,"id":2314,"link":2315,"body":2316,"_type":326,"_id":2320,"_source":328,"_file":2321,"_extension":330},"Vue.js roadtrip 2019 - Barcelona","Barcelona, Spain","2019-05-25","clifq5fpd3xt00aw4grnzft29","https://discover.events.com/es/catalunya/ciutat-vella/e/business/vuejs-frontend-roadtrip-barcelona-holaluz-office-294857096",{"type":20,"children":2317,"toc":2318},[],{"title":5,"searchDepth":324,"depth":324,"links":2319},[],"content:5.speaking:2019-05-25-clifq5fpd3xt00aw4grnzft29.md","5.speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29.md",{"_path":1218,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1217,"description":5,"conference":2323,"talk":2241,"location":2253,"date":2324,"id":2325,"link":2326,"body":2327,"_type":326,"_id":2331,"_source":328,"_file":2332,"_extension":330},"Vue.js roadtrip 2019 - Paris","2019-05-17","clifq5g1f3wh90bw81u5sa0ai","https://eventil.com/events/frontend-vuejs-roadtrip-paris",{"type":20,"children":2328,"toc":2329},[],{"title":5,"searchDepth":324,"depth":324,"links":2330},[],"content:5.speaking:2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md","5.speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md",{"_path":1215,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1214,"description":5,"conference":2334,"talk":2335,"location":2336,"date":2337,"id":2338,"link":2339,"body":2340,"_type":326,"_id":2344,"_source":328,"_file":2345,"_extension":330},"VueDay 2019","Vue.js for L'Oreal. A case study.","Verona, Italy","2019-04-19","clifq5gd63xhq0buvufv6nagk","https://2019.vueday.it/",{"type":20,"children":2341,"toc":2342},[],{"title":5,"searchDepth":324,"depth":324,"links":2343},[],"content:5.speaking:2019-04-19-clifq5gd63xhq0buvufv6nagk.md","5.speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk.md",{"_path":1212,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1211,"description":5,"conference":2347,"talk":2335,"location":2348,"date":2349,"id":2350,"link":2104,"body":2351,"_type":326,"_id":2355,"_source":328,"_file":2356,"_extension":330},"vuejs.amsterdam 2019","Amsterdam, the Netherlands","2019-02-26","clifq5gns3xhu0buv6a8th0jk",{"type":20,"children":2352,"toc":2353},[],{"title":5,"searchDepth":324,"depth":324,"links":2354},[],"content:5.speaking:2019-02-26-clifq5gns3xhu0buv6a8th0jk.md","5.speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk.md",{"_path":1209,"_dir":1448,"_draft":6,"_partial":6,"_locale":5,"title":1208,"description":5,"conference":2358,"talk":2335,"location":2359,"date":2360,"id":2361,"link":2104,"body":2362,"_type":326,"_id":2366,"_source":328,"_file":2367,"_extension":330},"vuejs.amsterdam 2019","Amsterdam, The netherlands","2019-02-14","clifq5gzg40j20bw9ne2mh9n6",{"type":20,"children":2363,"toc":2364},[],{"title":5,"searchDepth":324,"depth":324,"links":2365},[],"content:5.speaking:2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md","5.speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md",1718484379162] \ No newline at end of file +[{"data":1,"prerenderedAt":2367},["Reactive",2],{"content-query-SwRxMvvOw7":3,"content-navigation-8C37fagqQL":330,"content-query-S9CxJCxdR1":1445},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":325,"_id":326,"_source":327,"_file":328,"_extension":329},"/presskit","",false,"Press kit","Tim Benniks Press kit for conferences, webinars, and interviews.",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":322},"root",[22,64,70,146,211,215,228,296,309],{"type":23,"tag":24,"props":25,"children":26},"element","hero",{},[27,38,46],{"type":23,"tag":28,"props":29,"children":30},"template",{"v-slot:title":5},[31],{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":36,"value":37},"text","Press Kit",{"type":23,"tag":28,"props":39,"children":40},{"v-slot:description":5},[41],{"type":23,"tag":32,"props":42,"children":43},{},[44],{"type":36,"value":45},"DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR",{"type":23,"tag":28,"props":47,"children":48},{"v-slot:image":5},[49],{"type":23,"tag":32,"props":50,"children":51},{},[52],{"type":23,"tag":53,"props":54,"children":63},"img",{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":59,"width":60,"fit":61,"quality":62},618,"lazy","cloudinary","sm:100vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1659294037/Presskit/FDLC2019_462.jpg",1440,"thumbnail","100",[],{"type":23,"tag":65,"props":66,"children":69},"title-block",{"tag":67,"title":68},"h3","What do I do",[],{"type":23,"tag":71,"props":72,"children":73},"richtext",{},[74],{"type":23,"tag":28,"props":75,"children":76},{"v-slot:body":5},[77],{"type":23,"tag":32,"props":78,"children":79},{},[80,82,91,93,100,102,109,111,118,120,127,128,135,137,144],{"type":36,"value":81},"Tim Benniks is Developer Relations Lead for outreach and awareness at ",{"type":23,"tag":83,"props":84,"children":88},"a",{"href":85,"rel":86,"title":85},"https://hygraph.com",[87],"nofollow",[89],{"type":36,"value":90},"Hygraph",{"type":36,"value":92},". ",{"type":23,"tag":83,"props":94,"children":97},{"href":95,"rel":96,"title":95},"https://machalliance.com",[87],[98],{"type":36,"value":99},"MACH Alliance",{"type":36,"value":101}," Tech Council member, ",{"type":23,"tag":83,"props":103,"children":106},{"href":104,"rel":105,"title":104},"https://nuxt.com",[87],[107],{"type":36,"value":108},"NuxtJS",{"type":36,"value":110}," ambassador, ",{"type":23,"tag":83,"props":112,"children":115},{"href":113,"rel":114,"title":113},"https://cloudinary.com",[87],[116],{"type":36,"value":117},"Cloudinary",{"type":36,"value":119}," Ambassador, ",{"type":23,"tag":83,"props":121,"children":124},{"href":122,"rel":123,"title":122},"https://supabase.com",[87],[125],{"type":36,"value":126},"Supabase",{"type":36,"value":119},{"type":23,"tag":83,"props":129,"children":132},{"href":130,"rel":131,"title":130},"https://algolia.com",[87],[133],{"type":36,"value":134},"Algolia",{"type":36,"value":136}," Ambassador, and ",{"type":23,"tag":83,"props":138,"children":141},{"href":139,"rel":140,"title":139},"https://youtube.com/timbenniks",[87],[142],{"type":36,"value":143},"content creator",{"type":36,"value":145},".",{"type":23,"tag":147,"props":148,"children":149},"two-column",{},[150,186],{"type":23,"tag":28,"props":151,"children":152},{"v-slot:sidea":5},[153,157],{"type":23,"tag":65,"props":154,"children":156},{"tag":67,"title":155},"Mini bio",[],{"type":23,"tag":71,"props":158,"children":159},{},[160],{"type":23,"tag":28,"props":161,"children":162},{"v-slot:body":5},[163,168,181],{"type":23,"tag":32,"props":164,"children":165},{},[166],{"type":36,"value":167},"Over the past 15 years, Tim has worked at various agencies in Amsterdam and Paris with global clients like Nike, Heineken, Google, Tommy Hilfiger, EA Games, CHANEL, L'Oréal, Procter & Gamble, Louis Vuitton, and Hermès.",{"type":23,"tag":32,"props":169,"children":170},{},[171,173,179],{"type":36,"value":172},"Currently, Tim is Developer Relations Lead for Outreach and Awareness at ",{"type":23,"tag":83,"props":174,"children":177},{"href":175,"rel":176,"title":175},"https://hygraph.com/",[87],[178],{"type":36,"value":90},{"type":36,"value":180}," with a focus on content creation, speaking, and community building. In particular, he plays an active role in the developer community as a frequent speaker at conferences and creator of YouTube videos on modern technologies. He also collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS while serving on the MACH Alliance Tech Council. It's all about quality, community, and development of fancy websites.",{"type":23,"tag":32,"props":182,"children":183},{},[184],{"type":36,"value":185},"A demanding job like that needs balancing. Tim plays guitar and revels in family time with his wife, cats, and two little Corgis called Princess Nugget and Scarlet.",{"type":23,"tag":28,"props":187,"children":188},{"v-slot:sideb":5},[189,193],{"type":23,"tag":65,"props":190,"children":192},{"tag":67,"title":191},"Shorter mini bio",[],{"type":23,"tag":71,"props":194,"children":195},{},[196],{"type":23,"tag":28,"props":197,"children":198},{"v-slot:body":5},[199],{"type":23,"tag":32,"props":200,"children":201},{},[202,204,209],{"type":36,"value":203},"Tim is Developer Relations Lead for outreach and awareness at ",{"type":23,"tag":83,"props":205,"children":207},{"href":85,"rel":206,"title":85},[87],[208],{"type":36,"value":90},{"type":36,"value":210}," with a focus on developer relations, community building, and content creation. He’s active in the developer community through speaking engagements at conferences and creation of YouTube videos on modern technologies. Tim collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS, and is a member of the MACH Alliance Tech Council. It's all about quality, community, and development of great websites.",{"type":23,"tag":212,"props":213,"children":214},"speaker-details",{},[],{"type":23,"tag":24,"props":216,"children":217},{},[218],{"type":23,"tag":28,"props":219,"children":220},{"v-slot:image":5},[221],{"type":23,"tag":32,"props":222,"children":223},{},[224],{"type":23,"tag":53,"props":225,"children":227},{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":226,"width":60,"fit":61,"quality":62},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741257/Tim/IMG_1020.jpg",[],{"type":23,"tag":229,"props":230,"children":231},"speaker-media",{},[232,240,260,278],{"type":23,"tag":28,"props":233,"children":234},{"v-slot:descripiton":5},[235],{"type":23,"tag":32,"props":236,"children":237},{},[238],{"type":36,"value":239},"Click on the images for their full resolution versions.",{"type":23,"tag":28,"props":241,"children":242},{"v-slot:image1":5},[243],{"type":23,"tag":32,"props":244,"children":245},{},[246],{"type":23,"tag":83,"props":247,"children":250},{"href":248,"rel":249},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515228/Presskit/IMG_0144.jpg",[87],[251],{"type":23,"tag":53,"props":252,"children":259},{"alt":253,"height":254,"loading":56,"provider":57,"sizes":255,"src":248,"width":256,"className":257},"Tim Benniks in Berlin",6960,"sm:50vw",4640,[258],"fancy-image",[],{"type":23,"tag":28,"props":261,"children":262},{"v-slot:image2":5},[263],{"type":23,"tag":32,"props":264,"children":265},{},[266],{"type":23,"tag":83,"props":267,"children":270},{"href":268,"rel":269},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1659515192/Presskit/Tim-oct-2020.jpg",[87],[271],{"type":23,"tag":53,"props":272,"children":277},{"alt":273,"height":274,"loading":56,"provider":57,"sizes":255,"src":268,"width":275,"className":276},"Tim Benniks in Paris",3080,5472,[258],[],{"type":23,"tag":28,"props":279,"children":280},{"v-slot:image3":5},[281],{"type":23,"tag":32,"props":282,"children":283},{},[284],{"type":23,"tag":83,"props":285,"children":288},{"href":286,"rel":287},"https://res.cloudinary.com/dwfcofnrd/image/upload/v1682493958/Tim/1_april_2023.png",[87],[289],{"type":23,"tag":53,"props":290,"children":295},{"alt":291,"height":292,"loading":56,"provider":57,"sizes":255,"src":286,"width":293,"className":294},"Tim Benniks in his studio",2880,5120,[258],[],{"type":23,"tag":297,"props":298,"children":300},"talks",{":small":299},"false",[301],{"type":23,"tag":28,"props":302,"children":303},{"v-slot:title":5},[304],{"type":23,"tag":32,"props":305,"children":306},{},[307],{"type":36,"value":308},"Talks",{"type":23,"tag":24,"props":310,"children":311},{},[312],{"type":23,"tag":28,"props":313,"children":314},{"v-slot:image":5},[315],{"type":23,"tag":32,"props":316,"children":317},{},[318],{"type":23,"tag":53,"props":319,"children":321},{"alt":12,"height":55,"loading":56,"provider":57,"sizes":58,"src":320,"width":60,"fit":61,"quality":62},"https://res.cloudinary.com/dwfcofnrd/image/upload/347230970_264022386183185_8706521077970757537_n_vpj6co",[],{"title":5,"searchDepth":323,"depth":323,"links":324},2,[],"markdown","content:7.presskit.md","content","7.presskit.md","md",[331,334,1125,1202,1438,1441,1442],{"title":332,"_path":333},"About Tim","/about",{"title":335,"_path":336,"children":337},"Videos","/videos",[338,357,376,421,422,474,577,600,622,950],{"title":339,"_path":340,"children":341},"Alive And Kicking","/videos/alive-and-kicking",[342,345,348,351,354],{"title":343,"_path":344},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":346,"_path":347},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":349,"_path":350},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":352,"_path":353},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":355,"_path":356},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":358,"_path":359,"children":360},"Headless Creator","/videos/headless-creator",[361,364,367,370,373],{"title":362,"_path":363},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":365,"_path":366},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":368,"_path":369},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":371,"_path":372},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":374,"_path":375},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":90,"_path":377,"children":378},"/videos/hygraph",[379,382,385,388,391,394,397,400,403,406,409,412,415,418],{"title":380,"_path":381},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":383,"_path":384},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":386,"_path":387},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":389,"_path":390},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":392,"_path":393},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":395,"_path":396},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":398,"_path":399},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":401,"_path":402},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":404,"_path":405},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":407,"_path":408},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":410,"_path":411},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":413,"_path":414},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":416,"_path":417},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":419,"_path":420},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":335,"_path":336},{"title":423,"_path":424,"children":425},"Live Hygraph","/videos/live-hygraph",[426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471],{"title":427,"_path":428},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":430,"_path":431},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":433,"_path":434},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":436,"_path":437},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":439,"_path":440},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":442,"_path":443},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":445,"_path":446},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":448,"_path":449},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":451,"_path":452},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":454,"_path":455},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":457,"_path":458},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":460,"_path":461},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":463,"_path":464},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":466,"_path":467},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":469,"_path":470},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":472,"_path":473},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":475,"_path":476,"children":477},"Live Uniform","/videos/live-uniform",[478,481,484,487,490,493,496,499,502,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,556,559,562,565,568,571,574],{"title":479,"_path":480},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":482,"_path":483},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":485,"_path":486},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":488,"_path":489},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":491,"_path":492},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":494,"_path":495},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":497,"_path":498},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":500,"_path":501},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":503,"_path":504},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":506,"_path":507},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":509,"_path":510},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":512,"_path":513},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":515,"_path":516},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":518,"_path":519},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":521,"_path":522},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":524,"_path":525},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":527,"_path":528},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":530,"_path":531},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":533,"_path":534},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":536,"_path":537},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":539,"_path":540},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":542,"_path":543},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":545,"_path":546},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":548,"_path":549},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":551,"_path":552},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":554,"_path":555},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":557,"_path":558},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":560,"_path":561},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":563,"_path":564},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":566,"_path":567},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":569,"_path":570},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":572,"_path":573},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":575,"_path":576},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":578,"_path":579,"children":580},"Misc Streams","/videos/misc-streams",[581,584,587,590,592,594,597],{"title":582,"_path":583},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":585,"_path":586},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":588,"_path":589},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":572,"_path":591},"/videos/misc-streams/003-jvgiaotcerq",{"title":563,"_path":593},"/videos/misc-streams/004-ekut1koa2n8",{"title":595,"_path":596},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":598,"_path":599},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":601,"_path":602,"children":603},"Mp","/videos/mp",[604,607,610,613,616,619],{"title":605,"_path":606},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":608,"_path":609},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":611,"_path":612},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":614,"_path":615},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":617,"_path":618},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":620,"_path":621},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":623,"_path":624,"children":625},"Tim","/videos/tim",[626,628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,678,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947],{"title":346,"_path":627},"/videos/tim/000-mvq-_s20ndk",{"title":629,"_path":630},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":632,"_path":633},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":635,"_path":636},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":638,"_path":639},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":641,"_path":642},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":644,"_path":645},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":647,"_path":648},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":650,"_path":651},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":653,"_path":654},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":656,"_path":657},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":659,"_path":660},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":662,"_path":663},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":665,"_path":666},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":668,"_path":669},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":671,"_path":672},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":674,"_path":675},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":349,"_path":677},"/videos/tim/017-m0mrligs6i0",{"title":343,"_path":679},"/videos/tim/018-hhpitreyobi",{"title":681,"_path":682},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":684,"_path":685},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":687,"_path":688},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":690,"_path":691},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":693,"_path":694},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":696,"_path":697},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":699,"_path":700},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":702,"_path":703},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":705,"_path":706},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":708,"_path":709},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":711,"_path":712},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":714,"_path":715},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":717,"_path":718},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":720,"_path":721},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":723,"_path":724},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":726,"_path":727},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":729,"_path":730},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":732,"_path":733},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":735,"_path":736},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":738,"_path":739},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":741,"_path":742},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":744,"_path":745},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":747,"_path":748},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":750,"_path":751},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":753,"_path":754},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":756,"_path":757},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":759,"_path":760},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":762,"_path":763},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":765,"_path":766},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":768,"_path":769},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":771,"_path":772},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":774,"_path":775},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":777,"_path":778},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":780,"_path":781},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":783,"_path":784},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":786,"_path":787},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":789,"_path":790},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":792,"_path":793},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":795,"_path":796},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":798,"_path":799},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":801,"_path":802},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":804,"_path":805},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":807,"_path":808},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":810,"_path":811},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":813,"_path":814},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":816,"_path":817},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":819,"_path":820},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":822,"_path":823},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":825,"_path":826},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":828,"_path":829},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":831,"_path":832},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":834,"_path":835},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":837,"_path":838},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":840,"_path":841},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":843,"_path":844},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":846,"_path":847},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":849,"_path":850},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":852,"_path":853},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":855,"_path":856},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":858,"_path":859},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":861,"_path":862},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":864,"_path":865},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":867,"_path":868},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":870,"_path":871},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":873,"_path":874},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":876,"_path":877},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":879,"_path":880},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":882,"_path":883},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":885,"_path":886},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":888,"_path":889},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":891,"_path":892},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":894,"_path":895},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":897,"_path":898},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":900,"_path":901},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":903,"_path":904},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":906,"_path":907},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":909,"_path":910},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":912,"_path":913},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":915,"_path":916},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":918,"_path":919},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":921,"_path":922},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":924,"_path":925},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":927,"_path":928},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":930,"_path":931},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":933,"_path":934},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":936,"_path":937},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":939,"_path":940},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":942,"_path":943},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":945,"_path":946},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":948,"_path":949},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":951,"_path":952,"children":953},"Uniform","/videos/uniform",[954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122],{"title":955,"_path":956},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":958,"_path":959},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":961,"_path":962},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":964,"_path":965},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":967,"_path":968},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":970,"_path":971},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":973,"_path":974},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":976,"_path":977},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":979,"_path":980},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":982,"_path":983},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":985,"_path":986},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":988,"_path":989},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":991,"_path":992},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":994,"_path":995},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":997,"_path":998},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1000,"_path":1001},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1003,"_path":1004},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1006,"_path":1007},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1009,"_path":1010},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1012,"_path":1013},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1015,"_path":1016},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1018,"_path":1019},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1021,"_path":1022},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1024,"_path":1025},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1027,"_path":1028},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1030,"_path":1031},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1033,"_path":1034},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1036,"_path":1037},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1039,"_path":1040},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1042,"_path":1043},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1045,"_path":1046},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1048,"_path":1049},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1051,"_path":1052},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1054,"_path":1055},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1057,"_path":1058},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1060,"_path":1061},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1063,"_path":1064},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1066,"_path":1067},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1069,"_path":1070},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1072,"_path":1073},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1075,"_path":1076},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1078,"_path":1079},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1081,"_path":1082},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1084,"_path":1085},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1087,"_path":1088},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1090,"_path":1091},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1093,"_path":1094},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1096,"_path":1097},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1099,"_path":1100},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1102,"_path":1103},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1105,"_path":1106},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1108,"_path":1109},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1111,"_path":1112},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1114,"_path":1115},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1117,"_path":1118},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1120,"_path":1121},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1123,"_path":1124},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1126,"_path":1127,"children":1128},"Writing","/writing",[1129,1132,1135,1138,1141,1144,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199],{"title":1130,"_path":1131},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1133,"_path":1134},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1136,"_path":1137},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1139,"_path":1140},"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":1142,"_path":1143},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1126,"_path":1127},{"title":1146,"_path":1147},"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":1149,"_path":1150},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1152,"_path":1153},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1155,"_path":1156},"My Fitness Story","/writing/my-fitness-story",{"title":1158,"_path":1159},"New job alert!","/writing/new-job-alert",{"title":1161,"_path":1162},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1164,"_path":1165},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1167,"_path":1168},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1170,"_path":1171},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1173,"_path":1174},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1176,"_path":1177},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1179,"_path":1180},"The MACH monolith","/writing/the-mach-monolith",{"title":1182,"_path":1183},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1185,"_path":1186},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1188,"_path":1189},"This is headless 2.0","/writing/this-is-headless-20",{"title":1191,"_path":1192},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1194,"_path":1195},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1197,"_path":1198},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1200,"_path":1201},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1203,"_path":1204,"children":1205},"Speaking","/speaking",[1206,1209,1212,1215,1218,1221,1224,1227,1230,1233,1236,1239,1242,1245,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1284,1287,1290,1293,1296,1299,1302,1305,1308,1311,1314,1317,1320,1323,1326,1329,1332,1335,1338,1341,1344,1347,1350,1353,1356,1359,1362,1365,1368,1371,1374,1377,1380,1383,1386,1389,1392,1395,1398,1401,1404,1407,1410,1413,1416,1419,1422,1425,1428,1431,1434,1437],{"title":1207,"_path":1208},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1210,"_path":1211},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1213,"_path":1214},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1216,"_path":1217},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1219,"_path":1220},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1222,"_path":1223},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1225,"_path":1226},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1228,"_path":1229},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1231,"_path":1232},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1234,"_path":1235},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1237,"_path":1238},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1240,"_path":1241},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1243,"_path":1244},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1246,"_path":1247},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1249,"_path":1250},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1252,"_path":1253},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1255,"_path":1256},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1258,"_path":1259},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1261,"_path":1262},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1264,"_path":1265},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1267,"_path":1268},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1270,"_path":1271},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1273,"_path":1274},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1276,"_path":1277},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1279,"_path":1280},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1282,"_path":1283},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1285,"_path":1286},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1288,"_path":1289},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1291,"_path":1292},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1294,"_path":1295},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1297,"_path":1298},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1300,"_path":1301},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1303,"_path":1304},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1306,"_path":1307},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1309,"_path":1310},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1312,"_path":1313},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1315,"_path":1316},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1318,"_path":1319},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1321,"_path":1322},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1324,"_path":1325},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1327,"_path":1328},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1330,"_path":1331},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1333,"_path":1334},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1336,"_path":1337},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1339,"_path":1340},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1342,"_path":1343},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1345,"_path":1346},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1348,"_path":1349},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1351,"_path":1352},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1354,"_path":1355},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1357,"_path":1358},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1360,"_path":1361},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1363,"_path":1364},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1366,"_path":1367},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1369,"_path":1370},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1372,"_path":1373},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1375,"_path":1376},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1378,"_path":1379},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1381,"_path":1382},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1384,"_path":1385},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1387,"_path":1388},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1390,"_path":1391},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1393,"_path":1394},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1396,"_path":1397},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1399,"_path":1400},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1402,"_path":1403},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1405,"_path":1406},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1408,"_path":1409},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1411,"_path":1412},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1414,"_path":1415},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1417,"_path":1418},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1420,"_path":1421},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1423,"_path":1424},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1426,"_path":1427},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1429,"_path":1430},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1432,"_path":1433},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1435,"_path":1436},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1203,"_path":1204},{"title":1439,"_path":1440},"live streams","/livestreams",{"title":7,"_path":4},{"title":1443,"_path":1444},"Alive and kicking","/alive-and-kicking",[1446,1460,1472,1485,1498,1511,1524,1536,1547,1559,1571,1584,1596,1608,1621,1633,1645,1657,1669,1680,1693,1706,1717,1729,1740,1752,1764,1776,1788,1800,1812,1823,1834,1846,1857,1870,1881,1893,1905,1917,1928,1940,1952,1964,1977,1989,2001,2014,2027,2038,2050,2063,2075,2087,2098,2110,2122,2134,2146,2158,2170,2182,2194,2205,2216,2227,2238,2250,2262,2273,2285,2297,2309,2321,2332,2345,2356],{"_path":1436,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1435,"description":5,"conference":1448,"talk":1449,"location":1450,"date":1451,"id":1452,"link":1453,"body":1454,"_type":325,"_id":1458,"_source":327,"_file":1459,"_extension":329},"speaking","CMSCamp Mallorca","Alive and Kicking","Catalonia Majorica Palma Mallorca","2024-09-27","clqdq87gltsup0bvztwqw2f1v","https://mallorca.cmscamp.eu/",{"type":20,"children":1455,"toc":1456},[],{"title":5,"searchDepth":323,"depth":323,"links":1457},[],"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md",{"_path":1433,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1432,"description":5,"conference":1461,"talk":1449,"location":1462,"date":1463,"id":1464,"link":1465,"body":1466,"_type":325,"_id":1470,"_source":327,"_file":1471,"_extension":329},"ContentCon 2024","Austin, Texas","2024-06-05","clqdq6ui7ts730bvzmk1xw47t","https://www.contentstack.com/contentcon",{"type":20,"children":1467,"toc":1468},[],{"title":5,"searchDepth":323,"depth":323,"links":1469},[],"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md",{"_path":1430,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1429,"description":5,"conference":1473,"talk":1474,"location":1475,"date":1476,"id":1477,"link":1478,"body":1479,"_type":325,"_id":1483,"_source":327,"_file":1484,"_extension":329},"DEVworld Conference 2024","Alive and Kicking - a vue into rock & roll","Amsterdam","2024-02-29","clkzot86xire30aujuy08465e","https://devworldconference.com/",{"type":20,"children":1480,"toc":1481},[],{"title":5,"searchDepth":323,"depth":323,"links":1482},[],"content:5.speaking:2024-02-29-clkzot86xire30aujuy08465e.md","5.speaking/2024-02-29-clkzot86xire30aujuy08465e.md",{"_path":1427,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1426,"description":5,"conference":1486,"talk":1487,"location":1488,"date":1489,"id":1490,"link":1491,"body":1492,"_type":325,"_id":1496,"_source":327,"_file":1497,"_extension":329},"WeAreDevelopers World Congress","Alive and Kicking, a Vue into Rock & Roll","Berlin","2023-07-27","clifq4sto3xph0aw4letve613","https://www.wearedevelopers.com/world-congress",{"type":20,"children":1493,"toc":1494},[],{"title":5,"searchDepth":323,"depth":323,"links":1495},[],"content:5.speaking:2023-07-27-clifq4sto3xph0aw4letve613.md","5.speaking/2023-07-27-clifq4sto3xph0aw4letve613.md",{"_path":1424,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1423,"description":5,"conference":1499,"talk":1500,"location":1501,"date":1502,"id":1503,"link":1504,"body":1505,"_type":325,"_id":1509,"_source":327,"_file":1510,"_extension":329},"Vue.js Global Summit '23","The modern front end is composable","Virtual","2023-06-06","clifq4t4w40dr0bw98f7p9zrq","https://events.geekle.us/vuejs23/",{"type":20,"children":1506,"toc":1507},[],{"title":5,"searchDepth":323,"depth":323,"links":1508},[],"content:5.speaking:2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md","5.speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md",{"_path":1421,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1420,"description":5,"conference":1512,"talk":1513,"location":1514,"date":1515,"id":1516,"link":1517,"body":1518,"_type":325,"_id":1522,"_source":327,"_file":1523,"_extension":329},"CityJS Athens","Alive and Kicking, a Vue into Rock & Roll as MC","Athens","2023-05-29","clifq4thm3xel0buvdpqx8bdm","https://greece.cityjsconf.org/",{"type":20,"children":1519,"toc":1520},[],{"title":5,"searchDepth":323,"depth":323,"links":1521},[],"content:5.speaking:2023-05-29-clifq4thm3xel0buvdpqx8bdm.md","5.speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm.md",{"_path":1418,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1417,"description":5,"conference":1525,"talk":1487,"location":1526,"date":1527,"id":1528,"link":1529,"body":1530,"_type":325,"_id":1534,"_source":327,"_file":1535,"_extension":329},"Vue.js London Life Conference","London","2023-05-12","clifq4tw33we40bw8jxhaaroo","https://vuejslive.com/",{"type":20,"children":1531,"toc":1532},[],{"title":5,"searchDepth":323,"depth":323,"links":1533},[],"content:5.speaking:2023-05-12-clifq4tw33we40bw8jxhaaroo.md","5.speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo.md",{"_path":1415,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1414,"description":5,"conference":1537,"talk":1487,"location":1526,"date":1538,"id":1539,"link":1540,"body":1541,"_type":325,"_id":1545,"_source":327,"_file":1546,"_extension":329},"Cloudinary User Summit London","2023-04-20","clifq4u9b3xpm0aw45vj51alh","https://events.cloudinary.com/cloudinaryusersummitlondon",{"type":20,"children":1542,"toc":1543},[],{"title":5,"searchDepth":323,"depth":323,"links":1544},[],"content:5.speaking:2023-04-20-clifq4u9b3xpm0aw45vj51alh.md","5.speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh.md",{"_path":1412,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1411,"description":5,"conference":1548,"talk":1549,"location":1526,"date":1550,"id":1551,"link":1552,"body":1553,"_type":325,"_id":1557,"_source":327,"_file":1558,"_extension":329},"CityJS Conf London","The modern tech stack is composable","2023-03-29","clifq4ul43we80bw8ihhkw7qr","https://cityjsconf.org/speakers",{"type":20,"children":1554,"toc":1555},[],{"title":5,"searchDepth":323,"depth":323,"links":1556},[],"content:5.speaking:2023-03-29-clifq4ul43we80bw8ihhkw7qr.md","5.speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr.md",{"_path":1409,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1408,"description":5,"conference":1560,"talk":1561,"location":1475,"date":1562,"id":1563,"link":1564,"body":1565,"_type":325,"_id":1569,"_source":327,"_file":1570,"_extension":329},"Vuejs Amsterdam","Alive and Kicking - a Vue into Rock & Roll","2023-02-08","clifq4uz43xpt0aw4mw4awvuj","https://vuejs.amsterdam/",{"type":20,"children":1566,"toc":1567},[],{"title":5,"searchDepth":323,"depth":323,"links":1568},[],"content:5.speaking:2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md","5.speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md",{"_path":1406,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1405,"description":5,"conference":1572,"talk":1573,"location":1574,"date":1575,"id":1576,"link":1577,"body":1578,"_type":325,"_id":1582,"_source":327,"_file":1583,"_extension":329},"JamstackConf 2022","The modern digital pipeline, the future of the jamstack is composable","San Fransisco, United States","2022-11-08","clifq4vdb40el0bw9il2y3pb4","https://jamstack.org/conf/",{"type":20,"children":1579,"toc":1580},[],{"title":5,"searchDepth":323,"depth":323,"links":1581},[],"content:5.speaking:2022-11-08-clifq4vdb40el0bw9il2y3pb4.md","5.speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4.md",{"_path":1403,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1402,"description":5,"conference":1585,"talk":1573,"location":1586,"date":1587,"id":1588,"link":1589,"body":1590,"_type":325,"_id":1594,"_source":327,"_file":1595,"_extension":329},"VueConf Toronto 2022","Metro Toronto Convention Centre","2022-11-02","clifq4vps3xep0buvimxfntyq","https://www.vuetoronto.com/",{"type":20,"children":1591,"toc":1592},[],{"title":5,"searchDepth":323,"depth":323,"links":1593},[],"content:5.speaking:2022-11-02-clifq4vps3xep0buvimxfntyq.md","5.speaking/2022-11-02-clifq4vps3xep0buvimxfntyq.md",{"_path":1400,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1399,"description":5,"conference":1597,"talk":1598,"location":1501,"date":1599,"id":1600,"link":1601,"body":1602,"_type":325,"_id":1606,"_source":327,"_file":1607,"_extension":329},"Strapi live stream","Composability with Strapi and Uniform","2022-10-14","clifq4w263xet0buv0mzqzfre","https://lu.ma/strapi-uniform-magic",{"type":20,"children":1603,"toc":1604},[],{"title":5,"searchDepth":323,"depth":323,"links":1605},[],"content:5.speaking:2022-10-14-clifq4w263xet0buv0mzqzfre.md","5.speaking/2022-10-14-clifq4w263xet0buv0mzqzfre.md",{"_path":1397,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1396,"description":5,"conference":1609,"talk":1610,"location":1611,"date":1612,"id":1613,"link":1614,"body":1615,"_type":325,"_id":1619,"_source":327,"_file":1620,"_extension":329},"Javascript Global Summit'22","The modern digital pipeline, the future is composable","virtual","2022-09-27","clifq4wef3xpx0aw4l7ueiqwb","https://events.geekle.us/js/",{"type":20,"children":1616,"toc":1617},[],{"title":5,"searchDepth":323,"depth":323,"links":1618},[],"content:5.speaking:2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md","5.speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md",{"_path":1394,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1393,"description":5,"conference":1622,"talk":1623,"location":1501,"date":1624,"id":1625,"link":1626,"body":1627,"_type":325,"_id":1631,"_source":327,"_file":1632,"_extension":329},"Cloudinary Podcast","Benefits and Factors to Consider with MACH Architecture","2022-09-14","clifq4wqo40fh0bw9sifjtw70","https://www.youtube.com/watch?v=uC1iD_Sq_Bo",{"type":20,"children":1628,"toc":1629},[],{"title":5,"searchDepth":323,"depth":323,"links":1630},[],"content:5.speaking:2022-09-14-clifq4wqo40fh0bw9sifjtw70.md","5.speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70.md",{"_path":1391,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1390,"description":5,"conference":1634,"talk":1635,"location":1501,"date":1636,"id":1637,"link":1638,"body":1639,"_type":325,"_id":1643,"_source":327,"_file":1644,"_extension":329},"Swipe Con 2022","The power of personalization in composable architectures","2022-08-25","clifq4x0z3xq20aw48a1n9hxy","https://uandi.com/swipe-con",{"type":20,"children":1640,"toc":1641},[],{"title":5,"searchDepth":323,"depth":323,"links":1642},[],"content:5.speaking:2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md","5.speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md",{"_path":1388,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1387,"description":5,"conference":1646,"talk":1647,"location":1501,"date":1648,"id":1649,"link":1650,"body":1651,"_type":325,"_id":1655,"_source":327,"_file":1656,"_extension":329},"Agility CMS Webinar","How can enterprises move from monolithic solutions to composability","2022-08-11","clifq4xdz3wek0bw862z7knrr","https://agilitycms.com/resources/events/how-can-enterprises-move-from-monolithic-solutions-to-composability",{"type":20,"children":1652,"toc":1653},[],{"title":5,"searchDepth":323,"depth":323,"links":1654},[],"content:5.speaking:2022-08-11-clifq4xdz3wek0bw862z7knrr.md","5.speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr.md",{"_path":1385,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1384,"description":5,"conference":1658,"talk":1659,"location":1501,"date":1660,"id":1661,"link":1662,"body":1663,"_type":325,"_id":1667,"_source":327,"_file":1668,"_extension":329},"Netlify Live Stream","Live: Creating a Composable Site with Personalization on the Edge","2022-08-10","clifq4xw640fr0bw9po5n2nug","https://www.youtube.com/watch?v=mntPUZRy3wA",{"type":20,"children":1664,"toc":1665},[],{"title":5,"searchDepth":323,"depth":323,"links":1666},[],"content:5.speaking:2022-08-10-clifq4xw640fr0bw9po5n2nug.md","5.speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug.md",{"_path":1382,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1381,"description":5,"conference":1670,"talk":1610,"location":1501,"date":1671,"id":1672,"link":1673,"body":1674,"_type":325,"_id":1678,"_source":327,"_file":1679,"_extension":329},"Composability Summit 2022","2022-07-27","clifq4yep3xf20buv5vorwrl5","https://composability.dev/",{"type":20,"children":1675,"toc":1676},[],{"title":5,"searchDepth":323,"depth":323,"links":1677},[],"content:5.speaking:2022-07-27-clifq4yep3xf20buv5vorwrl5.md","5.speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5.md",{"_path":1379,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1378,"description":5,"conference":1681,"talk":1682,"location":1683,"date":1684,"id":1685,"link":1686,"body":1687,"_type":325,"_id":1691,"_source":327,"_file":1692,"_extension":329},"Vue.js Roadtrip Barcelona","The future of Jamstack is composable","Barcalonam Glovo HQ, Barcelona, Spain","2022-07-01","clifq4ywg3xq60aw48tkujxyl","https://www.eventbrite.co.uk/e/vuejs-roadtrip-barcelona-tickets-339022735127",{"type":20,"children":1688,"toc":1689},[],{"title":5,"searchDepth":323,"depth":323,"links":1690},[],"content:5.speaking:2022-07-01-clifq4ywg3xq60aw48tkujxyl.md","5.speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl.md",{"_path":1373,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1372,"description":5,"conference":1694,"talk":1695,"location":1696,"date":1697,"id":1698,"link":1699,"body":1700,"_type":325,"_id":1704,"_source":327,"_file":1705,"_extension":329},"MACHathon LinkedIn Live","Presenting MACHathon Uniform Entry","Linkedin","2022-06-13","clifq4z8o3xqf0aw49q8f55f9","https://www.linkedin.com/video/event/urn:li:ugcPost:6940601525266206720/",{"type":20,"children":1701,"toc":1702},[],{"title":5,"searchDepth":323,"depth":323,"links":1703},[],"content:5.speaking:2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md","5.speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md",{"_path":1376,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1375,"description":5,"conference":1707,"talk":1708,"location":1501,"date":1697,"id":1709,"link":1710,"body":1711,"_type":325,"_id":1715,"_source":327,"_file":1716,"_extension":329},"The state of Jamstack by Kentico","Discussion on state of Jamstack 2022","clifq4zjc40fv0bw95ufcly4y","https://kontent.ai/webinars/state-of-jamstack-2022-report-emea/",{"type":20,"children":1712,"toc":1713},[],{"title":5,"searchDepth":323,"depth":323,"links":1714},[],"content:5.speaking:2022-06-13-clifq4zjc40fv0bw95ufcly4y.md","5.speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y.md",{"_path":1370,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1369,"description":5,"conference":1718,"talk":1719,"location":1720,"date":1721,"id":1722,"link":1564,"body":1723,"_type":325,"_id":1727,"_source":327,"_file":1728,"_extension":329},"Vue.js Global 2022","Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again","Theater Amsterdam, The Netherlands","2022-06-02","clifq4zvh40fz0bw986sdpv5u",{"type":20,"children":1724,"toc":1725},[],{"title":5,"searchDepth":323,"depth":323,"links":1726},[],"content:5.speaking:2022-06-02-clifq4zvh40fz0bw986sdpv5u.md","5.speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u.md",{"_path":1367,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1366,"description":5,"conference":1730,"talk":1682,"location":1611,"date":1731,"id":1732,"link":1733,"body":1734,"_type":325,"_id":1738,"_source":327,"_file":1739,"_extension":329},"Vue.js Global Summit'22","2022-05-26","clifq506e3wev0bw88q2lf63q","https://events.geekle.us/vuejs/",{"type":20,"children":1735,"toc":1736},[],{"title":5,"searchDepth":323,"depth":323,"links":1737},[],"content:5.speaking:2022-05-26-clifq506e3wev0bw88q2lf63q.md","5.speaking/2022-05-26-clifq506e3wev0bw88q2lf63q.md",{"_path":1364,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1363,"description":5,"conference":1741,"talk":1742,"location":1501,"date":1743,"id":1744,"link":1745,"body":1746,"_type":325,"_id":1750,"_source":327,"_file":1751,"_extension":329},"GatsbyConf 2022","The Modern DXP: How Jamstack will change the world","2022-03-02","clifq50g53xfr0buv56km2voa","https://www.gatsbyconf.com/",{"type":20,"children":1747,"toc":1748},[],{"title":5,"searchDepth":323,"depth":323,"links":1749},[],"content:5.speaking:2022-03-02-clifq50g53xfr0buv56km2voa.md","5.speaking/2022-03-02-clifq50g53xfr0buv56km2voa.md",{"_path":1361,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1360,"description":5,"conference":1753,"talk":1754,"location":1501,"date":1755,"id":1756,"link":1757,"body":1758,"_type":325,"_id":1762,"_source":327,"_file":1763,"_extension":329},"Vue Storefront Hackathon - Flash Talk","Modern Commerce - How Jamstack will change the world","2022-03-01","clifq50sj40g30bw9rqy825mb","https://www.youtube.com/watch?v=1lhZqBvgoxU",{"type":20,"children":1759,"toc":1760},[],{"title":5,"searchDepth":323,"depth":323,"links":1761},[],"content:5.speaking:2022-03-01-clifq50sj40g30bw9rqy825mb.md","5.speaking/2022-03-01-clifq50sj40g30bw9rqy825mb.md",{"_path":1358,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1357,"description":5,"conference":1765,"talk":1766,"location":1611,"date":1767,"id":1768,"link":1769,"body":1770,"_type":325,"_id":1774,"_source":327,"_file":1775,"_extension":329},"LAB Group Round Table","Stick or Twist: Monolith v.s Microservices","2022-02-10","clifq515940g70bw9yu0ltedp","https://lab.co.uk/",{"type":20,"children":1771,"toc":1772},[],{"title":5,"searchDepth":323,"depth":323,"links":1773},[],"content:5.speaking:2022-02-10-clifq515940g70bw9yu0ltedp.md","5.speaking/2022-02-10-clifq515940g70bw9yu0ltedp.md",{"_path":1355,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1354,"description":5,"conference":1777,"talk":1778,"location":1611,"date":1779,"id":1780,"link":1781,"body":1782,"_type":325,"_id":1786,"_source":327,"_file":1787,"_extension":329},"Kontent Rocks podcast","Personalisation in the Jamstack with Kentico Kontent","2022-02-08","clifq51j53wez0bw8cd1znjmi","https://podcasts.apple.com/us/podcast/kontent-rocks-podcast/id754786884",{"type":20,"children":1783,"toc":1784},[],{"title":5,"searchDepth":323,"depth":323,"links":1785},[],"content:5.speaking:2022-02-08-clifq51j53wez0bw8cd1znjmi.md","5.speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi.md",{"_path":1352,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1351,"description":5,"conference":1789,"talk":1790,"location":1501,"date":1791,"id":1792,"link":1793,"body":1794,"_type":325,"_id":1798,"_source":327,"_file":1799,"_extension":329},"The Jam.dev 2022","Cable Managing the Jamstack","2022-01-27","clifq51vy3wf30bw8qsv8nsv9","https://cfe.dev/events/the-jam-2022/",{"type":20,"children":1795,"toc":1796},[],{"title":5,"searchDepth":323,"depth":323,"links":1797},[],"content:5.speaking:2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md","5.speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md",{"_path":1349,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1348,"description":5,"conference":1801,"talk":1802,"location":1501,"date":1803,"id":1804,"link":1805,"body":1806,"_type":325,"_id":1810,"_source":327,"_file":1811,"_extension":329},"Vue.js Berlin","Vue js round-table discussion","2021-12-14","clifq528940gb0bw9bok0o68k","https://www.meetup.com/Vue-js-Berlin/",{"type":20,"children":1807,"toc":1808},[],{"title":5,"searchDepth":323,"depth":323,"links":1809},[],"content:5.speaking:2021-12-14-clifq528940gb0bw9bok0o68k.md","5.speaking/2021-12-14-clifq528940gb0bw9bok0o68k.md",{"_path":1346,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1345,"description":5,"conference":1813,"talk":1754,"location":1501,"date":1814,"id":1815,"link":1816,"body":1817,"_type":325,"_id":1821,"_source":327,"_file":1822,"_extension":329},"E-Commerce tech summit 21 by Geekle","2021-12-01","clifq52jm3xqj0aw4mxuyuaey","https://geekle.us/e-commerce",{"type":20,"children":1818,"toc":1819},[],{"title":5,"searchDepth":323,"depth":323,"links":1820},[],"content:5.speaking:2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md","5.speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md",{"_path":1343,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1342,"description":5,"conference":1824,"talk":1825,"location":1501,"date":1826,"id":1827,"link":1589,"body":1828,"_type":325,"_id":1832,"_source":327,"_file":1833,"_extension":329},"VueConf Toronto 2021","Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again...","2021-11-22","clifq52wr3wfm0bw83eawjx9x",{"type":20,"children":1829,"toc":1830},[],{"title":5,"searchDepth":323,"depth":323,"links":1831},[],"content:5.speaking:2021-11-22-clifq52wr3wfm0bw83eawjx9x.md","5.speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x.md",{"_path":1340,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1339,"description":5,"conference":1835,"talk":1836,"location":1501,"date":1837,"id":1838,"link":1839,"body":1840,"_type":325,"_id":1844,"_source":327,"_file":1845,"_extension":329},"Kontent Horizons","This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","2021-11-10","clifq536v3xg20buvlz1n7ddw","https://horizons.kontent.ai/",{"type":20,"children":1841,"toc":1842},[],{"title":5,"searchDepth":323,"depth":323,"links":1843},[],"content:5.speaking:2021-11-10-clifq536v3xg20buvlz1n7ddw.md","5.speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw.md",{"_path":1337,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1336,"description":5,"conference":1847,"talk":1836,"location":1501,"date":1848,"id":1849,"link":1850,"body":1851,"_type":325,"_id":1855,"_source":327,"_file":1856,"_extension":329},"Fast Forward 2021","2021-11-04","clifq53ib40gf0bw9c3mxprzu","https://www.contentful.com/fast-forward/",{"type":20,"children":1852,"toc":1853},[],{"title":5,"searchDepth":323,"depth":323,"links":1854},[],"content:5.speaking:2021-11-04-clifq53ib40gf0bw9c3mxprzu.md","5.speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu.md",{"_path":1334,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1333,"description":5,"conference":1858,"talk":1859,"location":1860,"date":1861,"id":1862,"link":1863,"body":1864,"_type":325,"_id":1868,"_source":327,"_file":1869,"_extension":329},"DevBreak - The ultimate tech festival","JAMstack is the future. I think. Maybe.","Bouville, France","2021-09-07","clifq53so3wfq0bw81xni3t7x","https://www.devbreak.io/",{"type":20,"children":1865,"toc":1866},[],{"title":5,"searchDepth":323,"depth":323,"links":1867},[],"content:5.speaking:2021-09-07-clifq53so3wfq0bw81xni3t7x.md","5.speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x.md",{"_path":1331,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1330,"description":5,"conference":1871,"talk":1836,"location":1501,"date":1872,"id":1873,"link":1874,"body":1875,"_type":325,"_id":1879,"_source":327,"_file":1880,"_extension":329},"Programmed in Pencil Meetup","2021-07-27","clifq542s3xg60buvdk199xtq","https://www.programmedinpencil.com/",{"type":20,"children":1876,"toc":1877},[],{"title":5,"searchDepth":323,"depth":323,"links":1878},[],"content:5.speaking:2021-07-27-clifq542s3xg60buvdk199xtq.md","5.speaking/2021-07-27-clifq542s3xg60buvdk199xtq.md",{"_path":1328,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1327,"description":5,"conference":1882,"talk":1883,"location":1501,"date":1884,"id":1885,"link":1886,"body":1887,"_type":325,"_id":1891,"_source":327,"_file":1892,"_extension":329},"2021 VueDay Italy","MC & talk: Magical combination to build a modern website","2021-04-29","clifq54ct3wfu0bw8zsr9mejw","https://2021.vueday.it/",{"type":20,"children":1888,"toc":1889},[],{"title":5,"searchDepth":323,"depth":323,"links":1890},[],"content:5.speaking:2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md","5.speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md",{"_path":1325,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1324,"description":5,"conference":1894,"talk":1895,"location":1501,"date":1896,"id":1897,"link":1898,"body":1899,"_type":325,"_id":1903,"_source":327,"_file":1904,"_extension":329},"Vue Storefront Summit 2021","Hyper fast personalization for modern e-commerce","2021-04-20","clifq54na3xgb0buvrvmbamxf","https://hopin.com/events/vue-storefront-summit-2021",{"type":20,"children":1900,"toc":1901},[],{"title":5,"searchDepth":323,"depth":323,"links":1902},[],"content:5.speaking:2021-04-20-clifq54na3xgb0buvrvmbamxf.md","5.speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf.md",{"_path":1322,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1321,"description":5,"conference":1906,"talk":1907,"location":1501,"date":1908,"id":1909,"link":1910,"body":1911,"_type":325,"_id":1915,"_source":327,"_file":1916,"_extension":329},"Before Devbreak","Dynamic personalization on JAMstack websites","2021-04-07","clifq54zf3wfz0bw80v5gzndk","https://www.devbreak.io/before-devbreak",{"type":20,"children":1912,"toc":1913},[],{"title":5,"searchDepth":323,"depth":323,"links":1914},[],"content:5.speaking:2021-04-07-clifq54zf3wfz0bw80v5gzndk.md","5.speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk.md",{"_path":1319,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1318,"description":5,"conference":1918,"talk":831,"location":1501,"date":1919,"id":1920,"link":1921,"body":1922,"_type":325,"_id":1926,"_source":327,"_file":1927,"_extension":329},"City JS Conf 2021","2021-03-24","clifq559p3xgf0buvzch9im3l","https://cityjsconf.org/",{"type":20,"children":1923,"toc":1924},[],{"title":5,"searchDepth":323,"depth":323,"links":1925},[],"content:5.speaking:2021-03-24-clifq559p3xgf0buvzch9im3l.md","5.speaking/2021-03-24-clifq559p3xgf0buvzch9im3l.md",{"_path":1316,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1315,"description":5,"conference":1929,"talk":1930,"location":1501,"date":1931,"id":1932,"link":1933,"body":1934,"_type":325,"_id":1938,"_source":327,"_file":1939,"_extension":329},"GatsbyConf 2021","A workshop on connecting ContentStack, Gatsby and Uniform","2021-03-03","clifq55jz3xqp0aw4je7y5sw1","https://gatsbyconf.com/event/easily-build-a-dynamic-and-personalized-website-with-contentstack-gatsby-and-uniform/",{"type":20,"children":1935,"toc":1936},[],{"title":5,"searchDepth":323,"depth":323,"links":1937},[],"content:5.speaking:2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md","5.speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md",{"_path":1313,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1312,"description":5,"conference":1941,"talk":1942,"location":1501,"date":1943,"id":1944,"link":1945,"body":1946,"_type":325,"_id":1950,"_source":327,"_file":1951,"_extension":329},"JS World Conference","The Modern DXP. How JAMstack will change the world.","2021-02-22","clifq55tf40gk0bw9vofea3yp","https://frontenddeveloperlove.com/",{"type":20,"children":1947,"toc":1948},[],{"title":5,"searchDepth":323,"depth":323,"links":1949},[],"content:5.speaking:2021-02-22-clifq55tf40gk0bw9vofea3yp.md","5.speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp.md",{"_path":1310,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1309,"description":5,"conference":1953,"talk":1954,"location":1501,"date":1955,"id":1956,"link":1957,"body":1958,"_type":325,"_id":1962,"_source":327,"_file":1963,"_extension":329},"The Power of Cross-Technology Innovation","#21 with Peggy, Tim, and Idoia","2021-02-02","clifq56623xqt0aw44sbds5cn","https://www.linkedin.com/video/live/urn:li:ugcPost:6762404029302640640/",{"type":20,"children":1959,"toc":1960},[],{"title":5,"searchDepth":323,"depth":323,"links":1961},[],"content:5.speaking:2021-02-02-clifq56623xqt0aw44sbds5cn.md","5.speaking/2021-02-02-clifq56623xqt0aw44sbds5cn.md",{"_path":1307,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1306,"description":5,"conference":1965,"talk":1966,"location":1967,"date":1968,"id":1969,"link":1970,"body":1971,"_type":325,"_id":1975,"_source":327,"_file":1976,"_extension":329},"Web Dev x Sustainability ","BOECKBX - Let's Talk About Eco-Friendliness in Web Development","YouTube","2021-02-01","clifq56gq3xqx0aw47qor4w9s","https://www.youtube.com/watch?v=LcUaUC6BxUk",{"type":20,"children":1972,"toc":1973},[],{"title":5,"searchDepth":323,"depth":323,"links":1974},[],"content:5.speaking:2021-02-01-clifq56gq3xqx0aw47qor4w9s.md","5.speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s.md",{"_path":1304,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1303,"description":5,"conference":1978,"talk":1979,"location":1501,"date":1980,"id":1981,"link":1982,"body":1983,"_type":325,"_id":1987,"_source":327,"_file":1988,"_extension":329},"Vue.js // Berlin","The magical combination for creating a modern website.","2021-01-12","clifq56q43xgk0buv4hu04quz","https://www.meetup.com/Vue-js-Berlin/events/wwtgqrycccbqb/",{"type":20,"children":1984,"toc":1985},[],{"title":5,"searchDepth":323,"depth":323,"links":1986},[],"content:5.speaking:2021-01-12-clifq56q43xgk0buv4hu04quz.md","5.speaking/2021-01-12-clifq56q43xgk0buv4hu04quz.md",{"_path":1301,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1300,"description":5,"conference":1990,"talk":1991,"location":1501,"date":1992,"id":1993,"link":1994,"body":1995,"_type":325,"_id":1999,"_source":327,"_file":2000,"_extension":329},"Environmentally Sustainable Websites","Digital's Carbon Footprint, Green Development Choices and Options, Sustainable Shortcuts, Optimised User Experiences, MACH/Composable Architecture","2020-12-18","clifq571z40gq0bw9b62wbowr","https://www.valtech.com/podcasts/digital-transformation-podcast-environmentally-sustainable-websites",{"type":20,"children":1996,"toc":1997},[],{"title":5,"searchDepth":323,"depth":323,"links":1998},[],"content:5.speaking:2020-12-18-clifq571z40gq0bw9b62wbowr.md","5.speaking/2020-12-18-clifq571z40gq0bw9b62wbowr.md",{"_path":1298,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1297,"description":5,"conference":2002,"talk":2003,"location":2004,"date":2005,"id":2006,"link":2007,"body":2008,"_type":325,"_id":2012,"_source":327,"_file":2013,"_extension":329},"Zeplin ZAM JAM","In this first ever Zam Jam session, we’re talking to 3 digital leaders about how Zeplin helps their agency foster deep customer engagement and multi-disciplined team collaboration to build beautiful products and deliver on the promise of design.","Virtual (YouTube Livestream)","2020-12-16","clifq57c43wg40bw81h7fr291","https://www.youtube.com/watch?v=tUc9CKiC0Go",{"type":20,"children":2009,"toc":2010},[],{"title":5,"searchDepth":323,"depth":323,"links":2011},[],"content:5.speaking:2020-12-16-clifq57c43wg40bw81h7fr291.md","5.speaking/2020-12-16-clifq57c43wg40bw81h7fr291.md",{"_path":1295,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1294,"description":5,"conference":2015,"talk":2016,"location":2017,"date":2018,"id":2019,"link":2020,"body":2021,"_type":325,"_id":2025,"_source":327,"_file":2026,"_extension":329},"Tech Talks with Santosh ","Santosh: In this talk show, we will have some awesome developers, sharing content from the programming language they work on.","Virtual (Youtube Livestream)","2020-12-11","clifq57o03xgp0buvlvdxm5l9","https://www.youtube.com/c/TechTalksWithSantosh",{"type":20,"children":2022,"toc":2023},[],{"title":5,"searchDepth":323,"depth":323,"links":2024},[],"content:5.speaking:2020-12-11-clifq57o03xgp0buvlvdxm5l9.md","5.speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9.md",{"_path":1292,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1291,"description":5,"conference":2028,"talk":2029,"location":1501,"date":2030,"id":2031,"link":113,"body":2032,"_type":325,"_id":2036,"_source":327,"_file":2037,"_extension":329},"Cloudinary Webinar: Road to headless","Join us to learn how a headless architecture can help you streamline content delivery through an integration of composed components with best-of-breed vendors.","2020-12-02","clifq582i3wg80bw8rszss5am",{"type":20,"children":2033,"toc":2034},[],{"title":5,"searchDepth":323,"depth":323,"links":2035},[],"content:5.speaking:2020-12-02-clifq582i3wg80bw8rszss5am.md","5.speaking/2020-12-02-clifq582i3wg80bw8rszss5am.md",{"_path":1289,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1288,"description":5,"conference":2039,"talk":2040,"location":1501,"date":2041,"id":2042,"link":2043,"body":2044,"_type":325,"_id":2048,"_source":327,"_file":2049,"_extension":329},"Zeplin ZAM JAM round table discussion","In this discussion between multiple agencies we try to provide real world insight into how teams are using Zeplin.","2020-12-01","clifq58cz3xr10aw4n6qndf3s","https://www.youtube.com/channel/UCM2z6CHM4wvmlB9qo_dq0dg",{"type":20,"children":2045,"toc":2046},[],{"title":5,"searchDepth":323,"depth":323,"links":2047},[],"content:5.speaking:2020-12-01-clifq58cz3xr10aw4n6qndf3s.md","5.speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s.md",{"_path":1286,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1285,"description":5,"conference":2051,"talk":2052,"location":2053,"date":2054,"id":2055,"link":2056,"body":2057,"_type":325,"_id":2061,"_source":327,"_file":2062,"_extension":329},"Podcast: RETHINK Luxury - Ep 2: Sustainability","We’ll be diving into ethical sourcing in luxury, the challenges of implementing sustainable businesses practices, and envisioning a better world forward","Podcast","2020-11-11","clifq58oo40gu0bw9iffiakmh","https://www.rethink.industries/podcast/rethink-luxury-sustainability/",{"type":20,"children":2058,"toc":2059},[],{"title":5,"searchDepth":323,"depth":323,"links":2060},[],"content:5.speaking:2020-11-11-clifq58oo40gu0bw9iffiakmh.md","5.speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh.md",{"_path":1283,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1282,"description":5,"conference":2064,"talk":2065,"location":1501,"date":2066,"id":2067,"link":2068,"body":2069,"_type":325,"_id":2073,"_source":327,"_file":2074,"_extension":329},"Live coding for the Prismic Slice Contest","Lucie and Tim will connect to build a simple Slice Library for 1 hour.\nThey will be using the New Slice Builder for that, which also generates Storybook stories for each of their components.","2020-11-10","clifq590340gy0bw9onnmgr7y","https://www.youtube.com/watch?v=p3Wih8zOfI8",{"type":20,"children":2070,"toc":2071},[],{"title":5,"searchDepth":323,"depth":323,"links":2072},[],"content:5.speaking:2020-11-10-clifq590340gy0bw9onnmgr7y.md","5.speaking/2020-11-10-clifq590340gy0bw9onnmgr7y.md",{"_path":1280,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1279,"description":5,"conference":2076,"talk":2077,"location":1501,"date":2078,"id":2079,"link":2080,"body":2081,"_type":325,"_id":2085,"_source":327,"_file":2086,"_extension":329},"JS Monthly Online #07, Oct Meetup","I will take you through the new features of Webpack 5 and also provide some examples where we could benefit in your day to day development live","2020-10-29","clifq59b83xr60aw45w2sqa1g","https://www.meetup.com/js-monthly/events/273843246/",{"type":20,"children":2082,"toc":2083},[],{"title":5,"searchDepth":323,"depth":323,"links":2084},[],"content:5.speaking:2020-10-29-clifq59b83xr60aw45w2sqa1g.md","5.speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g.md",{"_path":1277,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1276,"description":5,"conference":2088,"talk":1979,"location":1501,"date":2089,"id":2090,"link":2091,"body":2092,"_type":325,"_id":2096,"_source":327,"_file":2097,"_extension":329},"Vue.js Antwerp - October 2020","2020-10-14","clifq59mp3wgc0bw82qykah6x","https://www.meetup.com/vue-antwerp/events/273585859/",{"type":20,"children":2093,"toc":2094},[],{"title":5,"searchDepth":323,"depth":323,"links":2095},[],"content:5.speaking:2020-10-14-clifq59mp3wgc0bw82qykah6x.md","5.speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x.md",{"_path":1274,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1273,"description":5,"conference":2099,"talk":2100,"location":1501,"date":2101,"id":2102,"link":2103,"body":2104,"_type":325,"_id":2108,"_source":327,"_file":2109,"_extension":329},"Vue.js Global Conference 2020","An introduction to Vite and VitePress","2020-09-17","clifq59zj3wgg0bw8xmh09vvm","https://vuejs.amsterdam",{"type":20,"children":2105,"toc":2106},[],{"title":5,"searchDepth":323,"depth":323,"links":2107},[],"content:5.speaking:2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md","5.speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md",{"_path":1271,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1270,"description":5,"conference":2111,"talk":2112,"location":1501,"date":2113,"id":2114,"link":2115,"body":2116,"_type":325,"_id":2120,"_source":327,"_file":2121,"_extension":329},"JS Monthly Online","A Developers Guide To Low Carbon Websites","2020-08-26","clifq5a9x3wgk0bw8x8qfl5rk","https://www.meetup.com/js-monthly/events/272459669/",{"type":20,"children":2117,"toc":2118},[],{"title":5,"searchDepth":323,"depth":323,"links":2119},[],"content:5.speaking:2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md","5.speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md",{"_path":1268,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1267,"description":5,"conference":2123,"talk":2124,"location":1501,"date":2125,"id":2126,"link":2127,"body":2128,"_type":325,"_id":2132,"_source":327,"_file":2133,"_extension":329},"Views on Vue Podcast Interview","My views on Vue at scale and on enterprise level","2020-08-05","clifq5anp3xrb0aw4jxeipa7e","https://devchat.tv/views-on-vue/vov-116-using-vue-at-scale-at-loreal-with-tim-benniks/",{"type":20,"children":2129,"toc":2130},[],{"title":5,"searchDepth":323,"depth":323,"links":2131},[],"content:5.speaking:2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md","5.speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md",{"_path":1265,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1264,"description":5,"conference":2135,"talk":2136,"location":1501,"date":2137,"id":2138,"link":2139,"body":2140,"_type":325,"_id":2144,"_source":327,"_file":2145,"_extension":329},"ImageCon 2020","A Developers Guide To Lowe Carbon Websites","2020-07-27","clifq5axb3xgw0buvy6hrvpv2","https://www.imagecon.com/",{"type":20,"children":2141,"toc":2142},[],{"title":5,"searchDepth":323,"depth":323,"links":2143},[],"content:5.speaking:2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md","5.speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md",{"_path":1262,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1261,"description":5,"conference":2147,"talk":2148,"location":1501,"date":2149,"id":2150,"link":2151,"body":2152,"_type":325,"_id":2156,"_source":327,"_file":2157,"_extension":329},"Prismic webinar","Why go headless? Steps to go from a monolithic CMS to a decoupled one.","2020-07-21","clifq5b6s3xrf0aw4s8ml5qjb","https://www.youtube.com/watch?v=wVyMYGrI0hM",{"type":20,"children":2153,"toc":2154},[],{"title":5,"searchDepth":323,"depth":323,"links":2155},[],"content:5.speaking:2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md","5.speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md",{"_path":1259,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1258,"description":5,"conference":2159,"talk":2160,"location":1501,"date":2161,"id":2162,"link":2163,"body":2164,"_type":325,"_id":2168,"_source":327,"_file":2169,"_extension":329},"ReactiveConf","Team First - Corona edition","2020-06-09","clifq5bj73xrj0aw42st3pna4","https://www.meetup.com/ReactiveMeetupsPrague/events/270869144/",{"type":20,"children":2165,"toc":2166},[],{"title":5,"searchDepth":323,"depth":323,"links":2167},[],"content:5.speaking:2020-06-09-clifq5bj73xrj0aw42st3pna4.md","5.speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4.md",{"_path":1256,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1255,"description":5,"conference":2171,"talk":2172,"location":1501,"date":2173,"id":2174,"link":2175,"body":2176,"_type":325,"_id":2180,"_source":327,"_file":2181,"_extension":329},"That's my JAMstack podcast interview","JAMstack is my JAM. I guess...","2020-05-28","clifq5bvw40h20bw92kt7pmp1","https://thatsmyjamstack.com/posts/tim-benniks/",{"type":20,"children":2177,"toc":2178},[],{"title":5,"searchDepth":323,"depth":323,"links":2179},[],"content:5.speaking:2020-05-28-clifq5bvw40h20bw92kt7pmp1.md","5.speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1.md",{"_path":1253,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1252,"description":5,"conference":2183,"talk":2184,"location":1501,"date":2185,"id":2186,"link":2187,"body":2188,"_type":325,"_id":2192,"_source":327,"_file":2193,"_extension":329},"We Belong Here Podcast Interview","How I moved into tech from being a Nurse and Musician","2020-05-25","clifq5c5u3wgo0bw8g8yudazp","https://webelongpodcast.com/",{"type":20,"children":2189,"toc":2190},[],{"title":5,"searchDepth":323,"depth":323,"links":2191},[],"content:5.speaking:2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md","5.speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md",{"_path":1250,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1249,"description":5,"conference":2195,"talk":2160,"location":1501,"date":2196,"id":2197,"link":2198,"body":2199,"_type":325,"_id":2203,"_source":327,"_file":2204,"_extension":329},"Talent.io talks Online","2020-05-13","clifq5cfw3xh00buvhyslf4s3","https://www.eventbrite.com/o/talentio-16600656820",{"type":20,"children":2200,"toc":2201},[],{"title":5,"searchDepth":323,"depth":323,"links":2202},[],"content:5.speaking:2020-05-13-clifq5cfw3xh00buvhyslf4s3.md","5.speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3.md",{"_path":1247,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1246,"description":5,"conference":2206,"talk":1859,"location":1501,"date":2207,"id":2208,"link":2209,"body":2210,"_type":325,"_id":2214,"_source":327,"_file":2215,"_extension":329},"VueJS Olso Virtual Meetup","2020-05-06","clifq5cpx40hk0bw9odxcxt0q","https://www.meetup.com/VueJS-Oslo/events/270218508/",{"type":20,"children":2211,"toc":2212},[],{"title":5,"searchDepth":323,"depth":323,"links":2213},[],"content:5.speaking:2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md","5.speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md",{"_path":1244,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1243,"description":5,"conference":2217,"talk":2160,"location":1501,"date":2218,"id":2219,"link":2220,"body":2221,"_type":325,"_id":2225,"_source":327,"_file":2226,"_extension":329},"MallorcaJS meetup","2020-04-22","clifq5czw3wgs0bw8srwiffx1","https://www.meetup.com/MallorcaJS/events/270156286",{"type":20,"children":2222,"toc":2223},[],{"title":5,"searchDepth":323,"depth":323,"links":2224},[],"content:5.speaking:2020-04-22-clifq5czw3wgs0bw8srwiffx1.md","5.speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1.md",{"_path":1241,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1240,"description":5,"conference":2228,"talk":1859,"location":1501,"date":2229,"id":2230,"link":2231,"body":2232,"_type":325,"_id":2236,"_source":327,"_file":2237,"_extension":329},"Front-end Love virtual Meetup","2020-03-19","clifq5dal3xsn0aw49a9wad1n","https://youtu.be/Wq2AqONg7rs?t=5307",{"type":20,"children":2233,"toc":2234},[],{"title":5,"searchDepth":323,"depth":323,"links":2235},[],"content:5.speaking:2020-03-19-clifq5dal3xsn0aw49a9wad1n.md","5.speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n.md",{"_path":1238,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1237,"description":5,"conference":2239,"talk":2240,"location":2241,"date":2242,"id":2243,"link":1564,"body":2244,"_type":325,"_id":2248,"_source":327,"_file":2249,"_extension":329},"Vue.js Amsterdam 2020","Team First. A framework to lead a team of developers to success in a high-pressure environment","Amsterdam, The Netherlands","2020-02-18","clifq5dk940if0bw9ok9achtj",{"type":20,"children":2245,"toc":2246},[],{"title":5,"searchDepth":323,"depth":323,"links":2247},[],"content:5.speaking:2020-02-18-clifq5dk940if0bw9ok9achtj.md","5.speaking/2020-02-18-clifq5dk940if0bw9ok9achtj.md",{"_path":1235,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1234,"description":5,"conference":2251,"talk":1859,"location":2252,"date":2253,"id":2254,"link":2255,"body":2256,"_type":325,"_id":2260,"_source":327,"_file":2261,"_extension":329},"Vue.js Paris Meetup","Paris, France","2019-12-17","clifq5dyh40ij0bw9oquw072b","https://www.meetup.com/Vuejs-Paris/events/266953797/",{"type":20,"children":2257,"toc":2258},[],{"title":5,"searchDepth":323,"depth":323,"links":2259},[],"content:5.speaking:2019-12-17-clifq5dyh40ij0bw9oquw072b.md","5.speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b.md",{"_path":1232,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1231,"description":5,"conference":2263,"talk":1859,"location":2252,"date":2264,"id":2265,"link":2266,"body":2267,"_type":325,"_id":2271,"_source":327,"_file":2272,"_extension":329},"The evolution of modern web development on monolithic platforms","2019-11-28","clifq5ebo3wgx0bw8vno5ce0d","https://www.meetup.com/Meet-up-at-Valtech-Front-Platform/events/265587330/",{"type":20,"children":2268,"toc":2269},[],{"title":5,"searchDepth":323,"depth":323,"links":2270},[],"content:5.speaking:2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md","5.speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md",{"_path":1229,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1228,"description":5,"conference":2274,"talk":2240,"location":2275,"date":2276,"id":2277,"link":2278,"body":2279,"_type":325,"_id":2283,"_source":327,"_file":2284,"_extension":329},"Budapest VUE.JS meetup VueAnd.Me edition","Budapest, Hungary","2019-09-27","clifq5eos3xhh0buvewly5gxs","https://www.meetup.com/Vue-js-Budapest/events/263805562/",{"type":20,"children":2280,"toc":2281},[],{"title":5,"searchDepth":323,"depth":323,"links":2282},[],"content:5.speaking:2019-09-27-clifq5eos3xhh0buvewly5gxs.md","5.speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs.md",{"_path":1226,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1225,"description":5,"conference":2286,"talk":2287,"location":2241,"date":2288,"id":2289,"link":2290,"body":2291,"_type":325,"_id":2295,"_source":327,"_file":2296,"_extension":329},"EXDS#19","Delivery guidelines for creative assets","2019-09-09","clifq5f1b3wh10bw8ftmppjkc","https://www.valtech.com/",{"type":20,"children":2292,"toc":2293},[],{"title":5,"searchDepth":323,"depth":323,"links":2294},[],"content:5.speaking:2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md","5.speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md",{"_path":1223,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1222,"description":5,"conference":2298,"talk":2299,"location":2252,"date":2300,"id":2301,"link":2302,"body":2303,"_type":325,"_id":2307,"_source":327,"_file":2308,"_extension":329},"Vue.js Paris meetup","Vue.js for L'Oreal. A case study","2019-09-04","clifq5fer3xhl0buvzzgwqg1k","https://www.meetup.com/fr-FR/Vuejs-Paris/events/263934300/",{"type":20,"children":2304,"toc":2305},[],{"title":5,"searchDepth":323,"depth":323,"links":2306},[],"content:5.speaking:2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md","5.speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md",{"_path":1220,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1219,"description":5,"conference":2310,"talk":2240,"location":2311,"date":2312,"id":2313,"link":2314,"body":2315,"_type":325,"_id":2319,"_source":327,"_file":2320,"_extension":329},"Vue.js roadtrip 2019 - Barcelona","Barcelona, Spain","2019-05-25","clifq5fpd3xt00aw4grnzft29","https://discover.events.com/es/catalunya/ciutat-vella/e/business/vuejs-frontend-roadtrip-barcelona-holaluz-office-294857096",{"type":20,"children":2316,"toc":2317},[],{"title":5,"searchDepth":323,"depth":323,"links":2318},[],"content:5.speaking:2019-05-25-clifq5fpd3xt00aw4grnzft29.md","5.speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29.md",{"_path":1217,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1216,"description":5,"conference":2322,"talk":2240,"location":2252,"date":2323,"id":2324,"link":2325,"body":2326,"_type":325,"_id":2330,"_source":327,"_file":2331,"_extension":329},"Vue.js roadtrip 2019 - Paris","2019-05-17","clifq5g1f3wh90bw81u5sa0ai","https://eventil.com/events/frontend-vuejs-roadtrip-paris",{"type":20,"children":2327,"toc":2328},[],{"title":5,"searchDepth":323,"depth":323,"links":2329},[],"content:5.speaking:2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md","5.speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md",{"_path":1214,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1213,"description":5,"conference":2333,"talk":2334,"location":2335,"date":2336,"id":2337,"link":2338,"body":2339,"_type":325,"_id":2343,"_source":327,"_file":2344,"_extension":329},"VueDay 2019","Vue.js for L'Oreal. A case study.","Verona, Italy","2019-04-19","clifq5gd63xhq0buvufv6nagk","https://2019.vueday.it/",{"type":20,"children":2340,"toc":2341},[],{"title":5,"searchDepth":323,"depth":323,"links":2342},[],"content:5.speaking:2019-04-19-clifq5gd63xhq0buvufv6nagk.md","5.speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk.md",{"_path":1211,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1210,"description":5,"conference":2346,"talk":2334,"location":2347,"date":2348,"id":2349,"link":2103,"body":2350,"_type":325,"_id":2354,"_source":327,"_file":2355,"_extension":329},"vuejs.amsterdam 2019","Amsterdam, the Netherlands","2019-02-26","clifq5gns3xhu0buv6a8th0jk",{"type":20,"children":2351,"toc":2352},[],{"title":5,"searchDepth":323,"depth":323,"links":2353},[],"content:5.speaking:2019-02-26-clifq5gns3xhu0buv6a8th0jk.md","5.speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk.md",{"_path":1208,"_dir":1447,"_draft":6,"_partial":6,"_locale":5,"title":1207,"description":5,"conference":2357,"talk":2334,"location":2358,"date":2359,"id":2360,"link":2103,"body":2361,"_type":325,"_id":2365,"_source":327,"_file":2366,"_extension":329},"vuejs.amsterdam 2019","Amsterdam, The netherlands","2019-02-14","clifq5gzg40j20bw9ne2mh9n6",{"type":20,"children":2362,"toc":2363},[],{"title":5,"searchDepth":323,"depth":323,"links":2364},[],"content:5.speaking:2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md","5.speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md",1718484820675] \ No newline at end of file diff --git a/presskit/index.html b/presskit/index.html index f1b58eaf..b295efac 100644 --- a/presskit/index.html +++ b/presskit/index.html @@ -1,17 +1,17 @@ -press kit +Press kit - - - + + + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - -
Tim Benniks

Press Kit

DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR

What do I do

Tim Benniks is Developer Relations Lead for outreach and awareness at Hygraph. MACH Alliance Tech Council member, NuxtJS ambassador, Cloudinary Ambassador, Supabase Ambassador, Algolia Ambassador, and content creator.

Mini bio

Over the past 15 years, Tim has worked at various agencies in Amsterdam and Paris with global clients like Nike, Heineken, Google, Tommy Hilfiger, EA Games, CHANEL, L'Oréal, Procter & Gamble, Louis Vuitton, and Hermès.

Currently, Tim is Developer Relations Lead for Outreach and Awareness at Hygraph with a focus on content creation, speaking, and community building. In particular, he plays an active role in the developer community as a frequent speaker at conferences and creator of YouTube videos on modern technologies. He also collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS while serving on the MACH Alliance Tech Council. It's all about quality, community, and development of fancy websites.

A demanding job like that needs balancing. Tim plays guitar and revels in family time with his wife, cats, and two little Corgis called Princess Nugget and Scarlet.

Shorter mini bio

Tim is Developer Relations Lead for outreach and awareness at Hygraph with a focus on developer relations, community building, and content creation. He’s active in the developer community through speaking engagements at conferences and creation of YouTube videos on modern technologies. Tim collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS, and is a member of the MACH Alliance Tech Council. It's all about quality, community, and development of great websites.

Speaker details

  • Name
    Tim Benniks
  • Company
    Hygraph
  • Title
    Developer Relations Lead for outreach and awareness
  • Location
    Greater Toulouse Area, France
  • E-mail
    timbenniks.dev@gmail.com
  • Website
    https://timbenniks.dev
Tim Benniks

Speaker media

Click on the images for their full resolution versions.

Tim Benniks in Berlin
Tim Benniks in Paris
Tim Benniks in his studio

Talks

Tim Benniks
- \ No newline at end of file + + + + +
Tim Benniks

Press Kit

DEVELOPER RELATIONS, SPEAKER, CONTENT CREATOR

What do I do

Tim Benniks is Developer Relations Lead for outreach and awareness at Hygraph. MACH Alliance Tech Council member, NuxtJS ambassador, Cloudinary Ambassador, Supabase Ambassador, Algolia Ambassador, and content creator.

Mini bio

Over the past 15 years, Tim has worked at various agencies in Amsterdam and Paris with global clients like Nike, Heineken, Google, Tommy Hilfiger, EA Games, CHANEL, L'Oréal, Procter & Gamble, Louis Vuitton, and Hermès.

Currently, Tim is Developer Relations Lead for Outreach and Awareness at Hygraph with a focus on content creation, speaking, and community building. In particular, he plays an active role in the developer community as a frequent speaker at conferences and creator of YouTube videos on modern technologies. He also collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS while serving on the MACH Alliance Tech Council. It's all about quality, community, and development of fancy websites.

A demanding job like that needs balancing. Tim plays guitar and revels in family time with his wife, cats, and two little Corgis called Princess Nugget and Scarlet.

Shorter mini bio

Tim is Developer Relations Lead for outreach and awareness at Hygraph with a focus on developer relations, community building, and content creation. He’s active in the developer community through speaking engagements at conferences and creation of YouTube videos on modern technologies. Tim collaborates regularly with startups like Cloudinary, Supabase, Algolia, HeyGen, and NuxtJS, and is a member of the MACH Alliance Tech Council. It's all about quality, community, and development of great websites.

Speaker details

  • Name
    Tim Benniks
  • Company
    Hygraph
  • Title
    Developer Relations Lead for outreach and awareness
  • Location
    Greater Toulouse Area, France
  • E-mail
    timbenniks.dev@gmail.com
  • Website
    https://timbenniks.dev
Tim Benniks

Speaker media

Click on the images for their full resolution versions.

Tim Benniks in Berlin
Tim Benniks in Paris
Tim Benniks in his studio

Talks

Tim Benniks
+ \ No newline at end of file diff --git a/speaking/_payload.json b/speaking/_payload.json index 9187bf14..59946043 100644 --- a/speaking/_payload.json +++ b/speaking/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":2165},["Reactive",2],{"content-query-LXYi9QFYqo":3,"content-navigation-8C37fagqQL":126,"content-query-S9CxJCxdR1":1242},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":121,"_id":122,"_source":123,"_file":124,"_extension":125},"/speaking","",false,"Speaking","Speaking desc",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":118},"root",[22,62,105],{"type":23,"tag":24,"props":25,"children":26},"element","hero",{},[27,37,45],{"type":23,"tag":28,"props":29,"children":30},"template",{"v-slot:title":5},[31],{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":36,"value":7},"text",{"type":23,"tag":28,"props":38,"children":39},{"v-slot:description":5},[40],{"type":23,"tag":32,"props":41,"children":42},{},[43],{"type":36,"value":44},"VUEJS AMSTERDAM 2023",{"type":23,"tag":28,"props":46,"children":47},{"v-slot:image":5},[48],{"type":23,"tag":32,"props":49,"children":50},{},[51],{"type":23,"tag":52,"props":53,"children":61},"img",{"alt":12,"fit":54,"height":55,"loading":56,"provider":57,"sizes":58,"src":59,"width":60},"crop",618,"eager","cloudinary","sm:100vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741136/Tim/332051017_2552795964930421_7872527921593081497_n.jpg",1440,[],{"type":23,"tag":63,"props":64,"children":65},"two-column",{},[66,87],{"type":23,"tag":28,"props":67,"children":68},{"v-slot:sidea":5},[69,75],{"type":23,"tag":70,"props":71,"children":74},"title-block",{"tag":72,"title":73},"h3","Presskit",[],{"type":23,"tag":76,"props":77,"children":78},"richtext",{},[79],{"type":23,"tag":28,"props":80,"children":81},{"v-slot:body":5},[82],{"type":23,"tag":32,"props":83,"children":84},{},[85],{"type":36,"value":86},"Looking for my bio, talk information or pictures? Go to the presskit page to find different varieties of my bio, headshots and past talks I have done. This page also includes slides and other info needed to add me as a speaker to your conference.",{"type":23,"tag":28,"props":88,"children":89},{"v-slot:sideb":5},[90,94],{"type":23,"tag":70,"props":91,"children":93},{"tag":72,"title":92},"Emcee",[],{"type":23,"tag":76,"props":95,"children":96},{},[97],{"type":23,"tag":28,"props":98,"children":99},{"v-slot:body":5},[100],{"type":23,"tag":32,"props":101,"children":102},{},[103],{"type":36,"value":104},"Masters of ceremonies, commonly called emcees, offer a profound value at conferences. As a seasoned emcee, I usually start with an anecdote as introduction, followed by an in-depth Q&A session that truly features the speakers and their content. Over the past few years, my emcee gigs have been largely virtual. Starting 2022, however, I've also acted as emcee at in-person conferences, such as Vuejs Amsterdam.",{"type":23,"tag":106,"props":107,"children":109},"talks",{":small":108},"false",[110],{"type":23,"tag":28,"props":111,"children":112},{"v-slot:title":5},[113],{"type":23,"tag":32,"props":114,"children":115},{},[116],{"type":36,"value":117},"Talks",{"title":5,"searchDepth":119,"depth":119,"links":120},2,[],"markdown","content:5.speaking:index.md","content","5.speaking/index.md","md",[127,130,922,999,1233,1236,1239],{"title":128,"_path":129},"About","/about",{"title":131,"_path":132,"children":133},"videos","/videos",[134,153,172,218,219,271,374,397,419,747],{"title":135,"_path":136,"children":137},"Alive And Kicking","/videos/alive-and-kicking",[138,141,144,147,150],{"title":139,"_path":140},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":142,"_path":143},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":145,"_path":146},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":148,"_path":149},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":151,"_path":152},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":154,"_path":155,"children":156},"Headless Creator","/videos/headless-creator",[157,160,163,166,169],{"title":158,"_path":159},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":161,"_path":162},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":164,"_path":165},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":167,"_path":168},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":170,"_path":171},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":173,"_path":174,"children":175},"Hygraph","/videos/hygraph",[176,179,182,185,188,191,194,197,200,203,206,209,212,215],{"title":177,"_path":178},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":180,"_path":181},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":183,"_path":184},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":186,"_path":187},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":189,"_path":190},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":192,"_path":193},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":195,"_path":196},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":198,"_path":199},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":201,"_path":202},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":204,"_path":205},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":207,"_path":208},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":210,"_path":211},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":213,"_path":214},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":216,"_path":217},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":131,"_path":132},{"title":220,"_path":221,"children":222},"Live Hygraph","/videos/live-hygraph",[223,226,229,232,235,238,241,244,247,250,253,256,259,262,265,268],{"title":224,"_path":225},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":227,"_path":228},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":230,"_path":231},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":233,"_path":234},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":236,"_path":237},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":239,"_path":240},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":242,"_path":243},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":245,"_path":246},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":248,"_path":249},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":251,"_path":252},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":254,"_path":255},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":257,"_path":258},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":260,"_path":261},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":263,"_path":264},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":266,"_path":267},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":269,"_path":270},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":272,"_path":273,"children":274},"Live Uniform","/videos/live-uniform",[275,278,281,284,287,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],{"title":276,"_path":277},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":279,"_path":280},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":282,"_path":283},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":285,"_path":286},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":288,"_path":289},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":291,"_path":292},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":294,"_path":295},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":297,"_path":298},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":300,"_path":301},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":303,"_path":304},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":306,"_path":307},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":309,"_path":310},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":312,"_path":313},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":315,"_path":316},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":318,"_path":319},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":321,"_path":322},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":324,"_path":325},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":327,"_path":328},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":330,"_path":331},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":333,"_path":334},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":336,"_path":337},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":339,"_path":340},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":342,"_path":343},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":345,"_path":346},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":348,"_path":349},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":351,"_path":352},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":354,"_path":355},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":357,"_path":358},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":360,"_path":361},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":363,"_path":364},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":366,"_path":367},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":369,"_path":370},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":372,"_path":373},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":375,"_path":376,"children":377},"Misc Streams","/videos/misc-streams",[378,381,384,387,389,391,394],{"title":379,"_path":380},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":382,"_path":383},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":385,"_path":386},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":369,"_path":388},"/videos/misc-streams/003-jvgiaotcerq",{"title":360,"_path":390},"/videos/misc-streams/004-ekut1koa2n8",{"title":392,"_path":393},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":395,"_path":396},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":398,"_path":399,"children":400},"Mp","/videos/mp",[401,404,407,410,413,416],{"title":402,"_path":403},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":405,"_path":406},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":408,"_path":409},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":411,"_path":412},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":414,"_path":415},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":417,"_path":418},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":420,"_path":421,"children":422},"Tim","/videos/tim",[423,425,428,431,434,437,440,443,446,449,452,455,458,461,464,467,470,473,475,477,480,483,486,489,492,495,498,501,504,507,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],{"title":142,"_path":424},"/videos/tim/000-mvq-_s20ndk",{"title":426,"_path":427},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":429,"_path":430},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":432,"_path":433},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":435,"_path":436},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":438,"_path":439},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":441,"_path":442},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":444,"_path":445},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":447,"_path":448},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":450,"_path":451},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":453,"_path":454},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":456,"_path":457},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":459,"_path":460},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":462,"_path":463},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":465,"_path":466},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":468,"_path":469},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":471,"_path":472},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":145,"_path":474},"/videos/tim/017-m0mrligs6i0",{"title":139,"_path":476},"/videos/tim/018-hhpitreyobi",{"title":478,"_path":479},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":481,"_path":482},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":484,"_path":485},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":487,"_path":488},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":490,"_path":491},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":493,"_path":494},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":496,"_path":497},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":499,"_path":500},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":502,"_path":503},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":505,"_path":506},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":508,"_path":509},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":511,"_path":512},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":514,"_path":515},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":517,"_path":518},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":520,"_path":521},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":523,"_path":524},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":526,"_path":527},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":529,"_path":530},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":532,"_path":533},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":535,"_path":536},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":538,"_path":539},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":541,"_path":542},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":544,"_path":545},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":547,"_path":548},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":550,"_path":551},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":553,"_path":554},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":556,"_path":557},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":559,"_path":560},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":562,"_path":563},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":565,"_path":566},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":568,"_path":569},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":571,"_path":572},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":574,"_path":575},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":577,"_path":578},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":580,"_path":581},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":583,"_path":584},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":586,"_path":587},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":589,"_path":590},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":592,"_path":593},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":595,"_path":596},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":598,"_path":599},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":601,"_path":602},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":604,"_path":605},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":607,"_path":608},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":610,"_path":611},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":613,"_path":614},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":616,"_path":617},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":619,"_path":620},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":622,"_path":623},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":625,"_path":626},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":628,"_path":629},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":631,"_path":632},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":634,"_path":635},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":637,"_path":638},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":640,"_path":641},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":643,"_path":644},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":646,"_path":647},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":649,"_path":650},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":652,"_path":653},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":655,"_path":656},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":658,"_path":659},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":661,"_path":662},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":664,"_path":665},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":667,"_path":668},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":670,"_path":671},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":673,"_path":674},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":676,"_path":677},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":679,"_path":680},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":682,"_path":683},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":685,"_path":686},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":688,"_path":689},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":691,"_path":692},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":694,"_path":695},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":697,"_path":698},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":700,"_path":701},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":703,"_path":704},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":706,"_path":707},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":709,"_path":710},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":712,"_path":713},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":715,"_path":716},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":718,"_path":719},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":721,"_path":722},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":724,"_path":725},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":727,"_path":728},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":730,"_path":731},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":733,"_path":734},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":736,"_path":737},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":739,"_path":740},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":742,"_path":743},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":745,"_path":746},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":748,"_path":749,"children":750},"Uniform","/videos/uniform",[751,754,757,760,763,766,769,772,775,778,781,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],{"title":752,"_path":753},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":755,"_path":756},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":758,"_path":759},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":761,"_path":762},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":764,"_path":765},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":767,"_path":768},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":770,"_path":771},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":773,"_path":774},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":776,"_path":777},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":779,"_path":780},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":782,"_path":783},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":785,"_path":786},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":788,"_path":789},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":791,"_path":792},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":794,"_path":795},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":797,"_path":798},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":800,"_path":801},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":803,"_path":804},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":806,"_path":807},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":809,"_path":810},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":812,"_path":813},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":815,"_path":816},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":818,"_path":819},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":821,"_path":822},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":824,"_path":825},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":827,"_path":828},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":830,"_path":831},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":833,"_path":834},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":836,"_path":837},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":839,"_path":840},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":842,"_path":843},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":845,"_path":846},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":848,"_path":849},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":851,"_path":852},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":854,"_path":855},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":857,"_path":858},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":860,"_path":861},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":863,"_path":864},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":866,"_path":867},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":869,"_path":870},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":872,"_path":873},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":875,"_path":876},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":878,"_path":879},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":881,"_path":882},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":884,"_path":885},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":887,"_path":888},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":890,"_path":891},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":893,"_path":894},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":896,"_path":897},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":899,"_path":900},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":902,"_path":903},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":905,"_path":906},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":908,"_path":909},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":911,"_path":912},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":914,"_path":915},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":917,"_path":918},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":920,"_path":921},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":923,"_path":924,"children":925},"Writing","/writing",[926,929,932,935,938,941,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996],{"title":927,"_path":928},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":930,"_path":931},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":933,"_path":934},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":936,"_path":937},"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":939,"_path":940},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":923,"_path":924},{"title":943,"_path":944},"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":946,"_path":947},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":949,"_path":950},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":952,"_path":953},"My Fitness Story","/writing/my-fitness-story",{"title":955,"_path":956},"New job alert!","/writing/new-job-alert",{"title":958,"_path":959},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":961,"_path":962},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":964,"_path":965},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":967,"_path":968},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":970,"_path":971},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":973,"_path":974},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":976,"_path":977},"The MACH monolith","/writing/the-mach-monolith",{"title":979,"_path":980},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":982,"_path":983},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":985,"_path":986},"This is headless 2.0","/writing/this-is-headless-20",{"title":988,"_path":989},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":991,"_path":992},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":994,"_path":995},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":997,"_path":998},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":7,"_path":4,"children":1000},[1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232],{"title":1002,"_path":1003},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1005,"_path":1006},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1008,"_path":1009},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1011,"_path":1012},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1014,"_path":1015},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1017,"_path":1018},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1020,"_path":1021},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1023,"_path":1024},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1026,"_path":1027},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1029,"_path":1030},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1032,"_path":1033},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1035,"_path":1036},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1038,"_path":1039},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1041,"_path":1042},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1044,"_path":1045},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1047,"_path":1048},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1050,"_path":1051},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1053,"_path":1054},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1056,"_path":1057},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1059,"_path":1060},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1062,"_path":1063},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1065,"_path":1066},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1068,"_path":1069},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1071,"_path":1072},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1074,"_path":1075},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1077,"_path":1078},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1080,"_path":1081},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1083,"_path":1084},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1086,"_path":1087},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1089,"_path":1090},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1092,"_path":1093},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1095,"_path":1096},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1098,"_path":1099},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1101,"_path":1102},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1104,"_path":1105},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1107,"_path":1108},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1110,"_path":1111},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1113,"_path":1114},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1116,"_path":1117},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1119,"_path":1120},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1122,"_path":1123},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1125,"_path":1126},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1128,"_path":1129},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1131,"_path":1132},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1134,"_path":1135},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1137,"_path":1138},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1140,"_path":1141},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1143,"_path":1144},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1146,"_path":1147},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1149,"_path":1150},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1152,"_path":1153},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1155,"_path":1156},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1158,"_path":1159},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1161,"_path":1162},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1164,"_path":1165},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1167,"_path":1168},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1170,"_path":1171},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1173,"_path":1174},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1176,"_path":1177},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1179,"_path":1180},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1182,"_path":1183},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1185,"_path":1186},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1188,"_path":1189},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1191,"_path":1192},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1194,"_path":1195},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1197,"_path":1198},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1200,"_path":1201},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1203,"_path":1204},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1206,"_path":1207},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1209,"_path":1210},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1212,"_path":1213},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1215,"_path":1216},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1218,"_path":1219},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1221,"_path":1222},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1224,"_path":1225},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1227,"_path":1228},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1230,"_path":1231},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":7,"_path":4},{"title":1234,"_path":1235},"live streams","/livestreams",{"title":1237,"_path":1238},"press kit","/presskit",{"title":1240,"_path":1241},"alive and kicking","/alive-and-kicking",[1243,1257,1269,1282,1295,1308,1321,1333,1344,1356,1368,1381,1393,1405,1418,1430,1442,1454,1466,1477,1490,1503,1514,1526,1537,1549,1561,1573,1585,1597,1609,1620,1631,1643,1654,1667,1678,1690,1702,1714,1725,1737,1749,1761,1774,1786,1798,1811,1824,1836,1848,1861,1873,1885,1896,1908,1920,1932,1944,1956,1968,1980,1992,2003,2014,2025,2036,2048,2060,2071,2083,2095,2107,2119,2130,2143,2154],{"_path":1231,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1230,"description":5,"conference":1245,"talk":1246,"location":1247,"date":1248,"id":1249,"link":1250,"body":1251,"_type":121,"_id":1255,"_source":123,"_file":1256,"_extension":125},"speaking","CMSCamp Mallorca","Alive and Kicking","Catalonia Majorica Palma Mallorca","2024-09-27","clqdq87gltsup0bvztwqw2f1v","https://mallorca.cmscamp.eu/",{"type":20,"children":1252,"toc":1253},[],{"title":5,"searchDepth":119,"depth":119,"links":1254},[],"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md",{"_path":1228,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1227,"description":5,"conference":1258,"talk":1246,"location":1259,"date":1260,"id":1261,"link":1262,"body":1263,"_type":121,"_id":1267,"_source":123,"_file":1268,"_extension":125},"ContentCon 2024","Austin, Texas","2024-06-05","clqdq6ui7ts730bvzmk1xw47t","https://www.contentstack.com/contentcon",{"type":20,"children":1264,"toc":1265},[],{"title":5,"searchDepth":119,"depth":119,"links":1266},[],"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md",{"_path":1225,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1224,"description":5,"conference":1270,"talk":1271,"location":1272,"date":1273,"id":1274,"link":1275,"body":1276,"_type":121,"_id":1280,"_source":123,"_file":1281,"_extension":125},"DEVworld Conference 2024","Alive and Kicking - a vue into rock & roll","Amsterdam","2024-02-29","clkzot86xire30aujuy08465e","https://devworldconference.com/",{"type":20,"children":1277,"toc":1278},[],{"title":5,"searchDepth":119,"depth":119,"links":1279},[],"content:5.speaking:2024-02-29-clkzot86xire30aujuy08465e.md","5.speaking/2024-02-29-clkzot86xire30aujuy08465e.md",{"_path":1222,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1221,"description":5,"conference":1283,"talk":1284,"location":1285,"date":1286,"id":1287,"link":1288,"body":1289,"_type":121,"_id":1293,"_source":123,"_file":1294,"_extension":125},"WeAreDevelopers World Congress","Alive and Kicking, a Vue into Rock & Roll","Berlin","2023-07-27","clifq4sto3xph0aw4letve613","https://www.wearedevelopers.com/world-congress",{"type":20,"children":1290,"toc":1291},[],{"title":5,"searchDepth":119,"depth":119,"links":1292},[],"content:5.speaking:2023-07-27-clifq4sto3xph0aw4letve613.md","5.speaking/2023-07-27-clifq4sto3xph0aw4letve613.md",{"_path":1219,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1218,"description":5,"conference":1296,"talk":1297,"location":1298,"date":1299,"id":1300,"link":1301,"body":1302,"_type":121,"_id":1306,"_source":123,"_file":1307,"_extension":125},"Vue.js Global Summit '23","The modern front end is composable","Virtual","2023-06-06","clifq4t4w40dr0bw98f7p9zrq","https://events.geekle.us/vuejs23/",{"type":20,"children":1303,"toc":1304},[],{"title":5,"searchDepth":119,"depth":119,"links":1305},[],"content:5.speaking:2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md","5.speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md",{"_path":1216,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1215,"description":5,"conference":1309,"talk":1310,"location":1311,"date":1312,"id":1313,"link":1314,"body":1315,"_type":121,"_id":1319,"_source":123,"_file":1320,"_extension":125},"CityJS Athens","Alive and Kicking, a Vue into Rock & Roll as MC","Athens","2023-05-29","clifq4thm3xel0buvdpqx8bdm","https://greece.cityjsconf.org/",{"type":20,"children":1316,"toc":1317},[],{"title":5,"searchDepth":119,"depth":119,"links":1318},[],"content:5.speaking:2023-05-29-clifq4thm3xel0buvdpqx8bdm.md","5.speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm.md",{"_path":1213,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1212,"description":5,"conference":1322,"talk":1284,"location":1323,"date":1324,"id":1325,"link":1326,"body":1327,"_type":121,"_id":1331,"_source":123,"_file":1332,"_extension":125},"Vue.js London Life Conference","London","2023-05-12","clifq4tw33we40bw8jxhaaroo","https://vuejslive.com/",{"type":20,"children":1328,"toc":1329},[],{"title":5,"searchDepth":119,"depth":119,"links":1330},[],"content:5.speaking:2023-05-12-clifq4tw33we40bw8jxhaaroo.md","5.speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo.md",{"_path":1210,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1209,"description":5,"conference":1334,"talk":1284,"location":1323,"date":1335,"id":1336,"link":1337,"body":1338,"_type":121,"_id":1342,"_source":123,"_file":1343,"_extension":125},"Cloudinary User Summit London","2023-04-20","clifq4u9b3xpm0aw45vj51alh","https://events.cloudinary.com/cloudinaryusersummitlondon",{"type":20,"children":1339,"toc":1340},[],{"title":5,"searchDepth":119,"depth":119,"links":1341},[],"content:5.speaking:2023-04-20-clifq4u9b3xpm0aw45vj51alh.md","5.speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh.md",{"_path":1207,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1206,"description":5,"conference":1345,"talk":1346,"location":1323,"date":1347,"id":1348,"link":1349,"body":1350,"_type":121,"_id":1354,"_source":123,"_file":1355,"_extension":125},"CityJS Conf London","The modern tech stack is composable","2023-03-29","clifq4ul43we80bw8ihhkw7qr","https://cityjsconf.org/speakers",{"type":20,"children":1351,"toc":1352},[],{"title":5,"searchDepth":119,"depth":119,"links":1353},[],"content:5.speaking:2023-03-29-clifq4ul43we80bw8ihhkw7qr.md","5.speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr.md",{"_path":1204,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1203,"description":5,"conference":1357,"talk":1358,"location":1272,"date":1359,"id":1360,"link":1361,"body":1362,"_type":121,"_id":1366,"_source":123,"_file":1367,"_extension":125},"Vuejs Amsterdam","Alive and Kicking - a Vue into Rock & Roll","2023-02-08","clifq4uz43xpt0aw4mw4awvuj","https://vuejs.amsterdam/",{"type":20,"children":1363,"toc":1364},[],{"title":5,"searchDepth":119,"depth":119,"links":1365},[],"content:5.speaking:2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md","5.speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md",{"_path":1201,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1200,"description":5,"conference":1369,"talk":1370,"location":1371,"date":1372,"id":1373,"link":1374,"body":1375,"_type":121,"_id":1379,"_source":123,"_file":1380,"_extension":125},"JamstackConf 2022","The modern digital pipeline, the future of the jamstack is composable","San Fransisco, United States","2022-11-08","clifq4vdb40el0bw9il2y3pb4","https://jamstack.org/conf/",{"type":20,"children":1376,"toc":1377},[],{"title":5,"searchDepth":119,"depth":119,"links":1378},[],"content:5.speaking:2022-11-08-clifq4vdb40el0bw9il2y3pb4.md","5.speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4.md",{"_path":1198,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1197,"description":5,"conference":1382,"talk":1370,"location":1383,"date":1384,"id":1385,"link":1386,"body":1387,"_type":121,"_id":1391,"_source":123,"_file":1392,"_extension":125},"VueConf Toronto 2022","Metro Toronto Convention Centre","2022-11-02","clifq4vps3xep0buvimxfntyq","https://www.vuetoronto.com/",{"type":20,"children":1388,"toc":1389},[],{"title":5,"searchDepth":119,"depth":119,"links":1390},[],"content:5.speaking:2022-11-02-clifq4vps3xep0buvimxfntyq.md","5.speaking/2022-11-02-clifq4vps3xep0buvimxfntyq.md",{"_path":1195,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1194,"description":5,"conference":1394,"talk":1395,"location":1298,"date":1396,"id":1397,"link":1398,"body":1399,"_type":121,"_id":1403,"_source":123,"_file":1404,"_extension":125},"Strapi live stream","Composability with Strapi and Uniform","2022-10-14","clifq4w263xet0buv0mzqzfre","https://lu.ma/strapi-uniform-magic",{"type":20,"children":1400,"toc":1401},[],{"title":5,"searchDepth":119,"depth":119,"links":1402},[],"content:5.speaking:2022-10-14-clifq4w263xet0buv0mzqzfre.md","5.speaking/2022-10-14-clifq4w263xet0buv0mzqzfre.md",{"_path":1192,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1191,"description":5,"conference":1406,"talk":1407,"location":1408,"date":1409,"id":1410,"link":1411,"body":1412,"_type":121,"_id":1416,"_source":123,"_file":1417,"_extension":125},"Javascript Global Summit'22","The modern digital pipeline, the future is composable","virtual","2022-09-27","clifq4wef3xpx0aw4l7ueiqwb","https://events.geekle.us/js/",{"type":20,"children":1413,"toc":1414},[],{"title":5,"searchDepth":119,"depth":119,"links":1415},[],"content:5.speaking:2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md","5.speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md",{"_path":1189,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1188,"description":5,"conference":1419,"talk":1420,"location":1298,"date":1421,"id":1422,"link":1423,"body":1424,"_type":121,"_id":1428,"_source":123,"_file":1429,"_extension":125},"Cloudinary Podcast","Benefits and Factors to Consider with MACH Architecture","2022-09-14","clifq4wqo40fh0bw9sifjtw70","https://www.youtube.com/watch?v=uC1iD_Sq_Bo",{"type":20,"children":1425,"toc":1426},[],{"title":5,"searchDepth":119,"depth":119,"links":1427},[],"content:5.speaking:2022-09-14-clifq4wqo40fh0bw9sifjtw70.md","5.speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70.md",{"_path":1186,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1185,"description":5,"conference":1431,"talk":1432,"location":1298,"date":1433,"id":1434,"link":1435,"body":1436,"_type":121,"_id":1440,"_source":123,"_file":1441,"_extension":125},"Swipe Con 2022","The power of personalization in composable architectures","2022-08-25","clifq4x0z3xq20aw48a1n9hxy","https://uandi.com/swipe-con",{"type":20,"children":1437,"toc":1438},[],{"title":5,"searchDepth":119,"depth":119,"links":1439},[],"content:5.speaking:2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md","5.speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md",{"_path":1183,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1182,"description":5,"conference":1443,"talk":1444,"location":1298,"date":1445,"id":1446,"link":1447,"body":1448,"_type":121,"_id":1452,"_source":123,"_file":1453,"_extension":125},"Agility CMS Webinar","How can enterprises move from monolithic solutions to composability","2022-08-11","clifq4xdz3wek0bw862z7knrr","https://agilitycms.com/resources/events/how-can-enterprises-move-from-monolithic-solutions-to-composability",{"type":20,"children":1449,"toc":1450},[],{"title":5,"searchDepth":119,"depth":119,"links":1451},[],"content:5.speaking:2022-08-11-clifq4xdz3wek0bw862z7knrr.md","5.speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr.md",{"_path":1180,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1179,"description":5,"conference":1455,"talk":1456,"location":1298,"date":1457,"id":1458,"link":1459,"body":1460,"_type":121,"_id":1464,"_source":123,"_file":1465,"_extension":125},"Netlify Live Stream","Live: Creating a Composable Site with Personalization on the Edge","2022-08-10","clifq4xw640fr0bw9po5n2nug","https://www.youtube.com/watch?v=mntPUZRy3wA",{"type":20,"children":1461,"toc":1462},[],{"title":5,"searchDepth":119,"depth":119,"links":1463},[],"content:5.speaking:2022-08-10-clifq4xw640fr0bw9po5n2nug.md","5.speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug.md",{"_path":1177,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1176,"description":5,"conference":1467,"talk":1407,"location":1298,"date":1468,"id":1469,"link":1470,"body":1471,"_type":121,"_id":1475,"_source":123,"_file":1476,"_extension":125},"Composability Summit 2022","2022-07-27","clifq4yep3xf20buv5vorwrl5","https://composability.dev/",{"type":20,"children":1472,"toc":1473},[],{"title":5,"searchDepth":119,"depth":119,"links":1474},[],"content:5.speaking:2022-07-27-clifq4yep3xf20buv5vorwrl5.md","5.speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5.md",{"_path":1174,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1173,"description":5,"conference":1478,"talk":1479,"location":1480,"date":1481,"id":1482,"link":1483,"body":1484,"_type":121,"_id":1488,"_source":123,"_file":1489,"_extension":125},"Vue.js Roadtrip Barcelona","The future of Jamstack is composable","Barcalonam Glovo HQ, Barcelona, Spain","2022-07-01","clifq4ywg3xq60aw48tkujxyl","https://www.eventbrite.co.uk/e/vuejs-roadtrip-barcelona-tickets-339022735127",{"type":20,"children":1485,"toc":1486},[],{"title":5,"searchDepth":119,"depth":119,"links":1487},[],"content:5.speaking:2022-07-01-clifq4ywg3xq60aw48tkujxyl.md","5.speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl.md",{"_path":1168,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1167,"description":5,"conference":1491,"talk":1492,"location":1493,"date":1494,"id":1495,"link":1496,"body":1497,"_type":121,"_id":1501,"_source":123,"_file":1502,"_extension":125},"MACHathon LinkedIn Live","Presenting MACHathon Uniform Entry","Linkedin","2022-06-13","clifq4z8o3xqf0aw49q8f55f9","https://www.linkedin.com/video/event/urn:li:ugcPost:6940601525266206720/",{"type":20,"children":1498,"toc":1499},[],{"title":5,"searchDepth":119,"depth":119,"links":1500},[],"content:5.speaking:2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md","5.speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md",{"_path":1171,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1170,"description":5,"conference":1504,"talk":1505,"location":1298,"date":1494,"id":1506,"link":1507,"body":1508,"_type":121,"_id":1512,"_source":123,"_file":1513,"_extension":125},"The state of Jamstack by Kentico","Discussion on state of Jamstack 2022","clifq4zjc40fv0bw95ufcly4y","https://kontent.ai/webinars/state-of-jamstack-2022-report-emea/",{"type":20,"children":1509,"toc":1510},[],{"title":5,"searchDepth":119,"depth":119,"links":1511},[],"content:5.speaking:2022-06-13-clifq4zjc40fv0bw95ufcly4y.md","5.speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y.md",{"_path":1165,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1164,"description":5,"conference":1515,"talk":1516,"location":1517,"date":1518,"id":1519,"link":1361,"body":1520,"_type":121,"_id":1524,"_source":123,"_file":1525,"_extension":125},"Vue.js Global 2022","Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again","Theater Amsterdam, The Netherlands","2022-06-02","clifq4zvh40fz0bw986sdpv5u",{"type":20,"children":1521,"toc":1522},[],{"title":5,"searchDepth":119,"depth":119,"links":1523},[],"content:5.speaking:2022-06-02-clifq4zvh40fz0bw986sdpv5u.md","5.speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u.md",{"_path":1162,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1161,"description":5,"conference":1527,"talk":1479,"location":1408,"date":1528,"id":1529,"link":1530,"body":1531,"_type":121,"_id":1535,"_source":123,"_file":1536,"_extension":125},"Vue.js Global Summit'22","2022-05-26","clifq506e3wev0bw88q2lf63q","https://events.geekle.us/vuejs/",{"type":20,"children":1532,"toc":1533},[],{"title":5,"searchDepth":119,"depth":119,"links":1534},[],"content:5.speaking:2022-05-26-clifq506e3wev0bw88q2lf63q.md","5.speaking/2022-05-26-clifq506e3wev0bw88q2lf63q.md",{"_path":1159,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1158,"description":5,"conference":1538,"talk":1539,"location":1298,"date":1540,"id":1541,"link":1542,"body":1543,"_type":121,"_id":1547,"_source":123,"_file":1548,"_extension":125},"GatsbyConf 2022","The Modern DXP: How Jamstack will change the world","2022-03-02","clifq50g53xfr0buv56km2voa","https://www.gatsbyconf.com/",{"type":20,"children":1544,"toc":1545},[],{"title":5,"searchDepth":119,"depth":119,"links":1546},[],"content:5.speaking:2022-03-02-clifq50g53xfr0buv56km2voa.md","5.speaking/2022-03-02-clifq50g53xfr0buv56km2voa.md",{"_path":1156,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1155,"description":5,"conference":1550,"talk":1551,"location":1298,"date":1552,"id":1553,"link":1554,"body":1555,"_type":121,"_id":1559,"_source":123,"_file":1560,"_extension":125},"Vue Storefront Hackathon - Flash Talk","Modern Commerce - How Jamstack will change the world","2022-03-01","clifq50sj40g30bw9rqy825mb","https://www.youtube.com/watch?v=1lhZqBvgoxU",{"type":20,"children":1556,"toc":1557},[],{"title":5,"searchDepth":119,"depth":119,"links":1558},[],"content:5.speaking:2022-03-01-clifq50sj40g30bw9rqy825mb.md","5.speaking/2022-03-01-clifq50sj40g30bw9rqy825mb.md",{"_path":1153,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1152,"description":5,"conference":1562,"talk":1563,"location":1408,"date":1564,"id":1565,"link":1566,"body":1567,"_type":121,"_id":1571,"_source":123,"_file":1572,"_extension":125},"LAB Group Round Table","Stick or Twist: Monolith v.s Microservices","2022-02-10","clifq515940g70bw9yu0ltedp","https://lab.co.uk/",{"type":20,"children":1568,"toc":1569},[],{"title":5,"searchDepth":119,"depth":119,"links":1570},[],"content:5.speaking:2022-02-10-clifq515940g70bw9yu0ltedp.md","5.speaking/2022-02-10-clifq515940g70bw9yu0ltedp.md",{"_path":1150,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1149,"description":5,"conference":1574,"talk":1575,"location":1408,"date":1576,"id":1577,"link":1578,"body":1579,"_type":121,"_id":1583,"_source":123,"_file":1584,"_extension":125},"Kontent Rocks podcast","Personalisation in the Jamstack with Kentico Kontent","2022-02-08","clifq51j53wez0bw8cd1znjmi","https://podcasts.apple.com/us/podcast/kontent-rocks-podcast/id754786884",{"type":20,"children":1580,"toc":1581},[],{"title":5,"searchDepth":119,"depth":119,"links":1582},[],"content:5.speaking:2022-02-08-clifq51j53wez0bw8cd1znjmi.md","5.speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi.md",{"_path":1147,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1146,"description":5,"conference":1586,"talk":1587,"location":1298,"date":1588,"id":1589,"link":1590,"body":1591,"_type":121,"_id":1595,"_source":123,"_file":1596,"_extension":125},"The Jam.dev 2022","Cable Managing the Jamstack","2022-01-27","clifq51vy3wf30bw8qsv8nsv9","https://cfe.dev/events/the-jam-2022/",{"type":20,"children":1592,"toc":1593},[],{"title":5,"searchDepth":119,"depth":119,"links":1594},[],"content:5.speaking:2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md","5.speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md",{"_path":1144,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1143,"description":5,"conference":1598,"talk":1599,"location":1298,"date":1600,"id":1601,"link":1602,"body":1603,"_type":121,"_id":1607,"_source":123,"_file":1608,"_extension":125},"Vue.js Berlin","Vue js round-table discussion","2021-12-14","clifq528940gb0bw9bok0o68k","https://www.meetup.com/Vue-js-Berlin/",{"type":20,"children":1604,"toc":1605},[],{"title":5,"searchDepth":119,"depth":119,"links":1606},[],"content:5.speaking:2021-12-14-clifq528940gb0bw9bok0o68k.md","5.speaking/2021-12-14-clifq528940gb0bw9bok0o68k.md",{"_path":1141,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1140,"description":5,"conference":1610,"talk":1551,"location":1298,"date":1611,"id":1612,"link":1613,"body":1614,"_type":121,"_id":1618,"_source":123,"_file":1619,"_extension":125},"E-Commerce tech summit 21 by Geekle","2021-12-01","clifq52jm3xqj0aw4mxuyuaey","https://geekle.us/e-commerce",{"type":20,"children":1615,"toc":1616},[],{"title":5,"searchDepth":119,"depth":119,"links":1617},[],"content:5.speaking:2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md","5.speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md",{"_path":1138,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1137,"description":5,"conference":1621,"talk":1622,"location":1298,"date":1623,"id":1624,"link":1386,"body":1625,"_type":121,"_id":1629,"_source":123,"_file":1630,"_extension":125},"VueConf Toronto 2021","Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again...","2021-11-22","clifq52wr3wfm0bw83eawjx9x",{"type":20,"children":1626,"toc":1627},[],{"title":5,"searchDepth":119,"depth":119,"links":1628},[],"content:5.speaking:2021-11-22-clifq52wr3wfm0bw83eawjx9x.md","5.speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x.md",{"_path":1135,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1134,"description":5,"conference":1632,"talk":1633,"location":1298,"date":1634,"id":1635,"link":1636,"body":1637,"_type":121,"_id":1641,"_source":123,"_file":1642,"_extension":125},"Kontent Horizons","This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","2021-11-10","clifq536v3xg20buvlz1n7ddw","https://horizons.kontent.ai/",{"type":20,"children":1638,"toc":1639},[],{"title":5,"searchDepth":119,"depth":119,"links":1640},[],"content:5.speaking:2021-11-10-clifq536v3xg20buvlz1n7ddw.md","5.speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw.md",{"_path":1132,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1131,"description":5,"conference":1644,"talk":1633,"location":1298,"date":1645,"id":1646,"link":1647,"body":1648,"_type":121,"_id":1652,"_source":123,"_file":1653,"_extension":125},"Fast Forward 2021","2021-11-04","clifq53ib40gf0bw9c3mxprzu","https://www.contentful.com/fast-forward/",{"type":20,"children":1649,"toc":1650},[],{"title":5,"searchDepth":119,"depth":119,"links":1651},[],"content:5.speaking:2021-11-04-clifq53ib40gf0bw9c3mxprzu.md","5.speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu.md",{"_path":1129,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1128,"description":5,"conference":1655,"talk":1656,"location":1657,"date":1658,"id":1659,"link":1660,"body":1661,"_type":121,"_id":1665,"_source":123,"_file":1666,"_extension":125},"DevBreak - The ultimate tech festival","JAMstack is the future. I think. Maybe.","Bouville, France","2021-09-07","clifq53so3wfq0bw81xni3t7x","https://www.devbreak.io/",{"type":20,"children":1662,"toc":1663},[],{"title":5,"searchDepth":119,"depth":119,"links":1664},[],"content:5.speaking:2021-09-07-clifq53so3wfq0bw81xni3t7x.md","5.speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x.md",{"_path":1126,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1125,"description":5,"conference":1668,"talk":1633,"location":1298,"date":1669,"id":1670,"link":1671,"body":1672,"_type":121,"_id":1676,"_source":123,"_file":1677,"_extension":125},"Programmed in Pencil Meetup","2021-07-27","clifq542s3xg60buvdk199xtq","https://www.programmedinpencil.com/",{"type":20,"children":1673,"toc":1674},[],{"title":5,"searchDepth":119,"depth":119,"links":1675},[],"content:5.speaking:2021-07-27-clifq542s3xg60buvdk199xtq.md","5.speaking/2021-07-27-clifq542s3xg60buvdk199xtq.md",{"_path":1123,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1122,"description":5,"conference":1679,"talk":1680,"location":1298,"date":1681,"id":1682,"link":1683,"body":1684,"_type":121,"_id":1688,"_source":123,"_file":1689,"_extension":125},"2021 VueDay Italy","MC & talk: Magical combination to build a modern website","2021-04-29","clifq54ct3wfu0bw8zsr9mejw","https://2021.vueday.it/",{"type":20,"children":1685,"toc":1686},[],{"title":5,"searchDepth":119,"depth":119,"links":1687},[],"content:5.speaking:2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md","5.speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md",{"_path":1120,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1119,"description":5,"conference":1691,"talk":1692,"location":1298,"date":1693,"id":1694,"link":1695,"body":1696,"_type":121,"_id":1700,"_source":123,"_file":1701,"_extension":125},"Vue Storefront Summit 2021","Hyper fast personalization for modern e-commerce","2021-04-20","clifq54na3xgb0buvrvmbamxf","https://hopin.com/events/vue-storefront-summit-2021",{"type":20,"children":1697,"toc":1698},[],{"title":5,"searchDepth":119,"depth":119,"links":1699},[],"content:5.speaking:2021-04-20-clifq54na3xgb0buvrvmbamxf.md","5.speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf.md",{"_path":1117,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1116,"description":5,"conference":1703,"talk":1704,"location":1298,"date":1705,"id":1706,"link":1707,"body":1708,"_type":121,"_id":1712,"_source":123,"_file":1713,"_extension":125},"Before Devbreak","Dynamic personalization on JAMstack websites","2021-04-07","clifq54zf3wfz0bw80v5gzndk","https://www.devbreak.io/before-devbreak",{"type":20,"children":1709,"toc":1710},[],{"title":5,"searchDepth":119,"depth":119,"links":1711},[],"content:5.speaking:2021-04-07-clifq54zf3wfz0bw80v5gzndk.md","5.speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk.md",{"_path":1114,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1113,"description":5,"conference":1715,"talk":628,"location":1298,"date":1716,"id":1717,"link":1718,"body":1719,"_type":121,"_id":1723,"_source":123,"_file":1724,"_extension":125},"City JS Conf 2021","2021-03-24","clifq559p3xgf0buvzch9im3l","https://cityjsconf.org/",{"type":20,"children":1720,"toc":1721},[],{"title":5,"searchDepth":119,"depth":119,"links":1722},[],"content:5.speaking:2021-03-24-clifq559p3xgf0buvzch9im3l.md","5.speaking/2021-03-24-clifq559p3xgf0buvzch9im3l.md",{"_path":1111,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1110,"description":5,"conference":1726,"talk":1727,"location":1298,"date":1728,"id":1729,"link":1730,"body":1731,"_type":121,"_id":1735,"_source":123,"_file":1736,"_extension":125},"GatsbyConf 2021","A workshop on connecting ContentStack, Gatsby and Uniform","2021-03-03","clifq55jz3xqp0aw4je7y5sw1","https://gatsbyconf.com/event/easily-build-a-dynamic-and-personalized-website-with-contentstack-gatsby-and-uniform/",{"type":20,"children":1732,"toc":1733},[],{"title":5,"searchDepth":119,"depth":119,"links":1734},[],"content:5.speaking:2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md","5.speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md",{"_path":1108,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1107,"description":5,"conference":1738,"talk":1739,"location":1298,"date":1740,"id":1741,"link":1742,"body":1743,"_type":121,"_id":1747,"_source":123,"_file":1748,"_extension":125},"JS World Conference","The Modern DXP. How JAMstack will change the world.","2021-02-22","clifq55tf40gk0bw9vofea3yp","https://frontenddeveloperlove.com/",{"type":20,"children":1744,"toc":1745},[],{"title":5,"searchDepth":119,"depth":119,"links":1746},[],"content:5.speaking:2021-02-22-clifq55tf40gk0bw9vofea3yp.md","5.speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp.md",{"_path":1105,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1104,"description":5,"conference":1750,"talk":1751,"location":1298,"date":1752,"id":1753,"link":1754,"body":1755,"_type":121,"_id":1759,"_source":123,"_file":1760,"_extension":125},"The Power of Cross-Technology Innovation","#21 with Peggy, Tim, and Idoia","2021-02-02","clifq56623xqt0aw44sbds5cn","https://www.linkedin.com/video/live/urn:li:ugcPost:6762404029302640640/",{"type":20,"children":1756,"toc":1757},[],{"title":5,"searchDepth":119,"depth":119,"links":1758},[],"content:5.speaking:2021-02-02-clifq56623xqt0aw44sbds5cn.md","5.speaking/2021-02-02-clifq56623xqt0aw44sbds5cn.md",{"_path":1102,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1101,"description":5,"conference":1762,"talk":1763,"location":1764,"date":1765,"id":1766,"link":1767,"body":1768,"_type":121,"_id":1772,"_source":123,"_file":1773,"_extension":125},"Web Dev x Sustainability ","BOECKBX - Let's Talk About Eco-Friendliness in Web Development","YouTube","2021-02-01","clifq56gq3xqx0aw47qor4w9s","https://www.youtube.com/watch?v=LcUaUC6BxUk",{"type":20,"children":1769,"toc":1770},[],{"title":5,"searchDepth":119,"depth":119,"links":1771},[],"content:5.speaking:2021-02-01-clifq56gq3xqx0aw47qor4w9s.md","5.speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s.md",{"_path":1099,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1098,"description":5,"conference":1775,"talk":1776,"location":1298,"date":1777,"id":1778,"link":1779,"body":1780,"_type":121,"_id":1784,"_source":123,"_file":1785,"_extension":125},"Vue.js // Berlin","The magical combination for creating a modern website.","2021-01-12","clifq56q43xgk0buv4hu04quz","https://www.meetup.com/Vue-js-Berlin/events/wwtgqrycccbqb/",{"type":20,"children":1781,"toc":1782},[],{"title":5,"searchDepth":119,"depth":119,"links":1783},[],"content:5.speaking:2021-01-12-clifq56q43xgk0buv4hu04quz.md","5.speaking/2021-01-12-clifq56q43xgk0buv4hu04quz.md",{"_path":1096,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1095,"description":5,"conference":1787,"talk":1788,"location":1298,"date":1789,"id":1790,"link":1791,"body":1792,"_type":121,"_id":1796,"_source":123,"_file":1797,"_extension":125},"Environmentally Sustainable Websites","Digital's Carbon Footprint, Green Development Choices and Options, Sustainable Shortcuts, Optimised User Experiences, MACH/Composable Architecture","2020-12-18","clifq571z40gq0bw9b62wbowr","https://www.valtech.com/podcasts/digital-transformation-podcast-environmentally-sustainable-websites",{"type":20,"children":1793,"toc":1794},[],{"title":5,"searchDepth":119,"depth":119,"links":1795},[],"content:5.speaking:2020-12-18-clifq571z40gq0bw9b62wbowr.md","5.speaking/2020-12-18-clifq571z40gq0bw9b62wbowr.md",{"_path":1093,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1092,"description":5,"conference":1799,"talk":1800,"location":1801,"date":1802,"id":1803,"link":1804,"body":1805,"_type":121,"_id":1809,"_source":123,"_file":1810,"_extension":125},"Zeplin ZAM JAM","In this first ever Zam Jam session, we’re talking to 3 digital leaders about how Zeplin helps their agency foster deep customer engagement and multi-disciplined team collaboration to build beautiful products and deliver on the promise of design.","Virtual (YouTube Livestream)","2020-12-16","clifq57c43wg40bw81h7fr291","https://www.youtube.com/watch?v=tUc9CKiC0Go",{"type":20,"children":1806,"toc":1807},[],{"title":5,"searchDepth":119,"depth":119,"links":1808},[],"content:5.speaking:2020-12-16-clifq57c43wg40bw81h7fr291.md","5.speaking/2020-12-16-clifq57c43wg40bw81h7fr291.md",{"_path":1090,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1089,"description":5,"conference":1812,"talk":1813,"location":1814,"date":1815,"id":1816,"link":1817,"body":1818,"_type":121,"_id":1822,"_source":123,"_file":1823,"_extension":125},"Tech Talks with Santosh ","Santosh: In this talk show, we will have some awesome developers, sharing content from the programming language they work on.","Virtual (Youtube Livestream)","2020-12-11","clifq57o03xgp0buvlvdxm5l9","https://www.youtube.com/c/TechTalksWithSantosh",{"type":20,"children":1819,"toc":1820},[],{"title":5,"searchDepth":119,"depth":119,"links":1821},[],"content:5.speaking:2020-12-11-clifq57o03xgp0buvlvdxm5l9.md","5.speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9.md",{"_path":1087,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1086,"description":5,"conference":1825,"talk":1826,"location":1298,"date":1827,"id":1828,"link":1829,"body":1830,"_type":121,"_id":1834,"_source":123,"_file":1835,"_extension":125},"Cloudinary Webinar: Road to headless","Join us to learn how a headless architecture can help you streamline content delivery through an integration of composed components with best-of-breed vendors.","2020-12-02","clifq582i3wg80bw8rszss5am","https://cloudinary.com",{"type":20,"children":1831,"toc":1832},[],{"title":5,"searchDepth":119,"depth":119,"links":1833},[],"content:5.speaking:2020-12-02-clifq582i3wg80bw8rszss5am.md","5.speaking/2020-12-02-clifq582i3wg80bw8rszss5am.md",{"_path":1084,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1083,"description":5,"conference":1837,"talk":1838,"location":1298,"date":1839,"id":1840,"link":1841,"body":1842,"_type":121,"_id":1846,"_source":123,"_file":1847,"_extension":125},"Zeplin ZAM JAM round table discussion","In this discussion between multiple agencies we try to provide real world insight into how teams are using Zeplin.","2020-12-01","clifq58cz3xr10aw4n6qndf3s","https://www.youtube.com/channel/UCM2z6CHM4wvmlB9qo_dq0dg",{"type":20,"children":1843,"toc":1844},[],{"title":5,"searchDepth":119,"depth":119,"links":1845},[],"content:5.speaking:2020-12-01-clifq58cz3xr10aw4n6qndf3s.md","5.speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s.md",{"_path":1081,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1080,"description":5,"conference":1849,"talk":1850,"location":1851,"date":1852,"id":1853,"link":1854,"body":1855,"_type":121,"_id":1859,"_source":123,"_file":1860,"_extension":125},"Podcast: RETHINK Luxury - Ep 2: Sustainability","We’ll be diving into ethical sourcing in luxury, the challenges of implementing sustainable businesses practices, and envisioning a better world forward","Podcast","2020-11-11","clifq58oo40gu0bw9iffiakmh","https://www.rethink.industries/podcast/rethink-luxury-sustainability/",{"type":20,"children":1856,"toc":1857},[],{"title":5,"searchDepth":119,"depth":119,"links":1858},[],"content:5.speaking:2020-11-11-clifq58oo40gu0bw9iffiakmh.md","5.speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh.md",{"_path":1078,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1077,"description":5,"conference":1862,"talk":1863,"location":1298,"date":1864,"id":1865,"link":1866,"body":1867,"_type":121,"_id":1871,"_source":123,"_file":1872,"_extension":125},"Live coding for the Prismic Slice Contest","Lucie and Tim will connect to build a simple Slice Library for 1 hour.\nThey will be using the New Slice Builder for that, which also generates Storybook stories for each of their components.","2020-11-10","clifq590340gy0bw9onnmgr7y","https://www.youtube.com/watch?v=p3Wih8zOfI8",{"type":20,"children":1868,"toc":1869},[],{"title":5,"searchDepth":119,"depth":119,"links":1870},[],"content:5.speaking:2020-11-10-clifq590340gy0bw9onnmgr7y.md","5.speaking/2020-11-10-clifq590340gy0bw9onnmgr7y.md",{"_path":1075,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1074,"description":5,"conference":1874,"talk":1875,"location":1298,"date":1876,"id":1877,"link":1878,"body":1879,"_type":121,"_id":1883,"_source":123,"_file":1884,"_extension":125},"JS Monthly Online #07, Oct Meetup","I will take you through the new features of Webpack 5 and also provide some examples where we could benefit in your day to day development live","2020-10-29","clifq59b83xr60aw45w2sqa1g","https://www.meetup.com/js-monthly/events/273843246/",{"type":20,"children":1880,"toc":1881},[],{"title":5,"searchDepth":119,"depth":119,"links":1882},[],"content:5.speaking:2020-10-29-clifq59b83xr60aw45w2sqa1g.md","5.speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g.md",{"_path":1072,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1071,"description":5,"conference":1886,"talk":1776,"location":1298,"date":1887,"id":1888,"link":1889,"body":1890,"_type":121,"_id":1894,"_source":123,"_file":1895,"_extension":125},"Vue.js Antwerp - October 2020","2020-10-14","clifq59mp3wgc0bw82qykah6x","https://www.meetup.com/vue-antwerp/events/273585859/",{"type":20,"children":1891,"toc":1892},[],{"title":5,"searchDepth":119,"depth":119,"links":1893},[],"content:5.speaking:2020-10-14-clifq59mp3wgc0bw82qykah6x.md","5.speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x.md",{"_path":1069,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1068,"description":5,"conference":1897,"talk":1898,"location":1298,"date":1899,"id":1900,"link":1901,"body":1902,"_type":121,"_id":1906,"_source":123,"_file":1907,"_extension":125},"Vue.js Global Conference 2020","An introduction to Vite and VitePress","2020-09-17","clifq59zj3wgg0bw8xmh09vvm","https://vuejs.amsterdam",{"type":20,"children":1903,"toc":1904},[],{"title":5,"searchDepth":119,"depth":119,"links":1905},[],"content:5.speaking:2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md","5.speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md",{"_path":1066,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1065,"description":5,"conference":1909,"talk":1910,"location":1298,"date":1911,"id":1912,"link":1913,"body":1914,"_type":121,"_id":1918,"_source":123,"_file":1919,"_extension":125},"JS Monthly Online","A Developers Guide To Low Carbon Websites","2020-08-26","clifq5a9x3wgk0bw8x8qfl5rk","https://www.meetup.com/js-monthly/events/272459669/",{"type":20,"children":1915,"toc":1916},[],{"title":5,"searchDepth":119,"depth":119,"links":1917},[],"content:5.speaking:2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md","5.speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md",{"_path":1063,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1062,"description":5,"conference":1921,"talk":1922,"location":1298,"date":1923,"id":1924,"link":1925,"body":1926,"_type":121,"_id":1930,"_source":123,"_file":1931,"_extension":125},"Views on Vue Podcast Interview","My views on Vue at scale and on enterprise level","2020-08-05","clifq5anp3xrb0aw4jxeipa7e","https://devchat.tv/views-on-vue/vov-116-using-vue-at-scale-at-loreal-with-tim-benniks/",{"type":20,"children":1927,"toc":1928},[],{"title":5,"searchDepth":119,"depth":119,"links":1929},[],"content:5.speaking:2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md","5.speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md",{"_path":1060,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1059,"description":5,"conference":1933,"talk":1934,"location":1298,"date":1935,"id":1936,"link":1937,"body":1938,"_type":121,"_id":1942,"_source":123,"_file":1943,"_extension":125},"ImageCon 2020","A Developers Guide To Lowe Carbon Websites","2020-07-27","clifq5axb3xgw0buvy6hrvpv2","https://www.imagecon.com/",{"type":20,"children":1939,"toc":1940},[],{"title":5,"searchDepth":119,"depth":119,"links":1941},[],"content:5.speaking:2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md","5.speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md",{"_path":1057,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1056,"description":5,"conference":1945,"talk":1946,"location":1298,"date":1947,"id":1948,"link":1949,"body":1950,"_type":121,"_id":1954,"_source":123,"_file":1955,"_extension":125},"Prismic webinar","Why go headless? Steps to go from a monolithic CMS to a decoupled one.","2020-07-21","clifq5b6s3xrf0aw4s8ml5qjb","https://www.youtube.com/watch?v=wVyMYGrI0hM",{"type":20,"children":1951,"toc":1952},[],{"title":5,"searchDepth":119,"depth":119,"links":1953},[],"content:5.speaking:2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md","5.speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md",{"_path":1054,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1053,"description":5,"conference":1957,"talk":1958,"location":1298,"date":1959,"id":1960,"link":1961,"body":1962,"_type":121,"_id":1966,"_source":123,"_file":1967,"_extension":125},"ReactiveConf","Team First - Corona edition","2020-06-09","clifq5bj73xrj0aw42st3pna4","https://www.meetup.com/ReactiveMeetupsPrague/events/270869144/",{"type":20,"children":1963,"toc":1964},[],{"title":5,"searchDepth":119,"depth":119,"links":1965},[],"content:5.speaking:2020-06-09-clifq5bj73xrj0aw42st3pna4.md","5.speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4.md",{"_path":1051,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1050,"description":5,"conference":1969,"talk":1970,"location":1298,"date":1971,"id":1972,"link":1973,"body":1974,"_type":121,"_id":1978,"_source":123,"_file":1979,"_extension":125},"That's my JAMstack podcast interview","JAMstack is my JAM. I guess...","2020-05-28","clifq5bvw40h20bw92kt7pmp1","https://thatsmyjamstack.com/posts/tim-benniks/",{"type":20,"children":1975,"toc":1976},[],{"title":5,"searchDepth":119,"depth":119,"links":1977},[],"content:5.speaking:2020-05-28-clifq5bvw40h20bw92kt7pmp1.md","5.speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1.md",{"_path":1048,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1047,"description":5,"conference":1981,"talk":1982,"location":1298,"date":1983,"id":1984,"link":1985,"body":1986,"_type":121,"_id":1990,"_source":123,"_file":1991,"_extension":125},"We Belong Here Podcast Interview","How I moved into tech from being a Nurse and Musician","2020-05-25","clifq5c5u3wgo0bw8g8yudazp","https://webelongpodcast.com/",{"type":20,"children":1987,"toc":1988},[],{"title":5,"searchDepth":119,"depth":119,"links":1989},[],"content:5.speaking:2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md","5.speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md",{"_path":1045,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1044,"description":5,"conference":1993,"talk":1958,"location":1298,"date":1994,"id":1995,"link":1996,"body":1997,"_type":121,"_id":2001,"_source":123,"_file":2002,"_extension":125},"Talent.io talks Online","2020-05-13","clifq5cfw3xh00buvhyslf4s3","https://www.eventbrite.com/o/talentio-16600656820",{"type":20,"children":1998,"toc":1999},[],{"title":5,"searchDepth":119,"depth":119,"links":2000},[],"content:5.speaking:2020-05-13-clifq5cfw3xh00buvhyslf4s3.md","5.speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3.md",{"_path":1042,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1041,"description":5,"conference":2004,"talk":1656,"location":1298,"date":2005,"id":2006,"link":2007,"body":2008,"_type":121,"_id":2012,"_source":123,"_file":2013,"_extension":125},"VueJS Olso Virtual Meetup","2020-05-06","clifq5cpx40hk0bw9odxcxt0q","https://www.meetup.com/VueJS-Oslo/events/270218508/",{"type":20,"children":2009,"toc":2010},[],{"title":5,"searchDepth":119,"depth":119,"links":2011},[],"content:5.speaking:2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md","5.speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md",{"_path":1039,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1038,"description":5,"conference":2015,"talk":1958,"location":1298,"date":2016,"id":2017,"link":2018,"body":2019,"_type":121,"_id":2023,"_source":123,"_file":2024,"_extension":125},"MallorcaJS meetup","2020-04-22","clifq5czw3wgs0bw8srwiffx1","https://www.meetup.com/MallorcaJS/events/270156286",{"type":20,"children":2020,"toc":2021},[],{"title":5,"searchDepth":119,"depth":119,"links":2022},[],"content:5.speaking:2020-04-22-clifq5czw3wgs0bw8srwiffx1.md","5.speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1.md",{"_path":1036,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1035,"description":5,"conference":2026,"talk":1656,"location":1298,"date":2027,"id":2028,"link":2029,"body":2030,"_type":121,"_id":2034,"_source":123,"_file":2035,"_extension":125},"Front-end Love virtual Meetup","2020-03-19","clifq5dal3xsn0aw49a9wad1n","https://youtu.be/Wq2AqONg7rs?t=5307",{"type":20,"children":2031,"toc":2032},[],{"title":5,"searchDepth":119,"depth":119,"links":2033},[],"content:5.speaking:2020-03-19-clifq5dal3xsn0aw49a9wad1n.md","5.speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n.md",{"_path":1033,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1032,"description":5,"conference":2037,"talk":2038,"location":2039,"date":2040,"id":2041,"link":1361,"body":2042,"_type":121,"_id":2046,"_source":123,"_file":2047,"_extension":125},"Vue.js Amsterdam 2020","Team First. A framework to lead a team of developers to success in a high-pressure environment","Amsterdam, The Netherlands","2020-02-18","clifq5dk940if0bw9ok9achtj",{"type":20,"children":2043,"toc":2044},[],{"title":5,"searchDepth":119,"depth":119,"links":2045},[],"content:5.speaking:2020-02-18-clifq5dk940if0bw9ok9achtj.md","5.speaking/2020-02-18-clifq5dk940if0bw9ok9achtj.md",{"_path":1030,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1029,"description":5,"conference":2049,"talk":1656,"location":2050,"date":2051,"id":2052,"link":2053,"body":2054,"_type":121,"_id":2058,"_source":123,"_file":2059,"_extension":125},"Vue.js Paris Meetup","Paris, France","2019-12-17","clifq5dyh40ij0bw9oquw072b","https://www.meetup.com/Vuejs-Paris/events/266953797/",{"type":20,"children":2055,"toc":2056},[],{"title":5,"searchDepth":119,"depth":119,"links":2057},[],"content:5.speaking:2019-12-17-clifq5dyh40ij0bw9oquw072b.md","5.speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b.md",{"_path":1027,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1026,"description":5,"conference":2061,"talk":1656,"location":2050,"date":2062,"id":2063,"link":2064,"body":2065,"_type":121,"_id":2069,"_source":123,"_file":2070,"_extension":125},"The evolution of modern web development on monolithic platforms","2019-11-28","clifq5ebo3wgx0bw8vno5ce0d","https://www.meetup.com/Meet-up-at-Valtech-Front-Platform/events/265587330/",{"type":20,"children":2066,"toc":2067},[],{"title":5,"searchDepth":119,"depth":119,"links":2068},[],"content:5.speaking:2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md","5.speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md",{"_path":1024,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1023,"description":5,"conference":2072,"talk":2038,"location":2073,"date":2074,"id":2075,"link":2076,"body":2077,"_type":121,"_id":2081,"_source":123,"_file":2082,"_extension":125},"Budapest VUE.JS meetup VueAnd.Me edition","Budapest, Hungary","2019-09-27","clifq5eos3xhh0buvewly5gxs","https://www.meetup.com/Vue-js-Budapest/events/263805562/",{"type":20,"children":2078,"toc":2079},[],{"title":5,"searchDepth":119,"depth":119,"links":2080},[],"content:5.speaking:2019-09-27-clifq5eos3xhh0buvewly5gxs.md","5.speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs.md",{"_path":1021,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1020,"description":5,"conference":2084,"talk":2085,"location":2039,"date":2086,"id":2087,"link":2088,"body":2089,"_type":121,"_id":2093,"_source":123,"_file":2094,"_extension":125},"EXDS#19","Delivery guidelines for creative assets","2019-09-09","clifq5f1b3wh10bw8ftmppjkc","https://www.valtech.com/",{"type":20,"children":2090,"toc":2091},[],{"title":5,"searchDepth":119,"depth":119,"links":2092},[],"content:5.speaking:2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md","5.speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md",{"_path":1018,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1017,"description":5,"conference":2096,"talk":2097,"location":2050,"date":2098,"id":2099,"link":2100,"body":2101,"_type":121,"_id":2105,"_source":123,"_file":2106,"_extension":125},"Vue.js Paris meetup","Vue.js for L'Oreal. A case study","2019-09-04","clifq5fer3xhl0buvzzgwqg1k","https://www.meetup.com/fr-FR/Vuejs-Paris/events/263934300/",{"type":20,"children":2102,"toc":2103},[],{"title":5,"searchDepth":119,"depth":119,"links":2104},[],"content:5.speaking:2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md","5.speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md",{"_path":1015,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1014,"description":5,"conference":2108,"talk":2038,"location":2109,"date":2110,"id":2111,"link":2112,"body":2113,"_type":121,"_id":2117,"_source":123,"_file":2118,"_extension":125},"Vue.js roadtrip 2019 - Barcelona","Barcelona, Spain","2019-05-25","clifq5fpd3xt00aw4grnzft29","https://discover.events.com/es/catalunya/ciutat-vella/e/business/vuejs-frontend-roadtrip-barcelona-holaluz-office-294857096",{"type":20,"children":2114,"toc":2115},[],{"title":5,"searchDepth":119,"depth":119,"links":2116},[],"content:5.speaking:2019-05-25-clifq5fpd3xt00aw4grnzft29.md","5.speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29.md",{"_path":1012,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1011,"description":5,"conference":2120,"talk":2038,"location":2050,"date":2121,"id":2122,"link":2123,"body":2124,"_type":121,"_id":2128,"_source":123,"_file":2129,"_extension":125},"Vue.js roadtrip 2019 - Paris","2019-05-17","clifq5g1f3wh90bw81u5sa0ai","https://eventil.com/events/frontend-vuejs-roadtrip-paris",{"type":20,"children":2125,"toc":2126},[],{"title":5,"searchDepth":119,"depth":119,"links":2127},[],"content:5.speaking:2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md","5.speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md",{"_path":1009,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1008,"description":5,"conference":2131,"talk":2132,"location":2133,"date":2134,"id":2135,"link":2136,"body":2137,"_type":121,"_id":2141,"_source":123,"_file":2142,"_extension":125},"VueDay 2019","Vue.js for L'Oreal. A case study.","Verona, Italy","2019-04-19","clifq5gd63xhq0buvufv6nagk","https://2019.vueday.it/",{"type":20,"children":2138,"toc":2139},[],{"title":5,"searchDepth":119,"depth":119,"links":2140},[],"content:5.speaking:2019-04-19-clifq5gd63xhq0buvufv6nagk.md","5.speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk.md",{"_path":1006,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1005,"description":5,"conference":2144,"talk":2132,"location":2145,"date":2146,"id":2147,"link":1901,"body":2148,"_type":121,"_id":2152,"_source":123,"_file":2153,"_extension":125},"vuejs.amsterdam 2019","Amsterdam, the Netherlands","2019-02-26","clifq5gns3xhu0buv6a8th0jk",{"type":20,"children":2149,"toc":2150},[],{"title":5,"searchDepth":119,"depth":119,"links":2151},[],"content:5.speaking:2019-02-26-clifq5gns3xhu0buv6a8th0jk.md","5.speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk.md",{"_path":1003,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1002,"description":5,"conference":2155,"talk":2132,"location":2156,"date":2157,"id":2158,"link":1901,"body":2159,"_type":121,"_id":2163,"_source":123,"_file":2164,"_extension":125},"vuejs.amsterdam 2019","Amsterdam, The netherlands","2019-02-14","clifq5gzg40j20bw9ne2mh9n6",{"type":20,"children":2160,"toc":2161},[],{"title":5,"searchDepth":119,"depth":119,"links":2162},[],"content:5.speaking:2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md","5.speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md",1718484379142] \ No newline at end of file +[{"data":1,"prerenderedAt":2165},["Reactive",2],{"content-query-LXYi9QFYqo":3,"content-navigation-8C37fagqQL":126,"content-query-S9CxJCxdR1":1242},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":121,"_id":122,"_source":123,"_file":124,"_extension":125},"/speaking","",false,"Speaking","I love speaking at conferences all around the world. This page lists all upcoming and older talks I've done.",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":118},"root",[22,62,105],{"type":23,"tag":24,"props":25,"children":26},"element","hero",{},[27,37,45],{"type":23,"tag":28,"props":29,"children":30},"template",{"v-slot:title":5},[31],{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":36,"value":7},"text",{"type":23,"tag":28,"props":38,"children":39},{"v-slot:description":5},[40],{"type":23,"tag":32,"props":41,"children":42},{},[43],{"type":36,"value":44},"VUEJS AMSTERDAM 2023",{"type":23,"tag":28,"props":46,"children":47},{"v-slot:image":5},[48],{"type":23,"tag":32,"props":49,"children":50},{},[51],{"type":23,"tag":52,"props":53,"children":61},"img",{"alt":12,"fit":54,"height":55,"loading":56,"provider":57,"sizes":58,"src":59,"width":60},"crop",618,"eager","cloudinary","sm:100vw","https://res.cloudinary.com/dwfcofnrd/image/upload/v1677741136/Tim/332051017_2552795964930421_7872527921593081497_n.jpg",1440,[],{"type":23,"tag":63,"props":64,"children":65},"two-column",{},[66,87],{"type":23,"tag":28,"props":67,"children":68},{"v-slot:sidea":5},[69,75],{"type":23,"tag":70,"props":71,"children":74},"title-block",{"tag":72,"title":73},"h3","Presskit",[],{"type":23,"tag":76,"props":77,"children":78},"richtext",{},[79],{"type":23,"tag":28,"props":80,"children":81},{"v-slot:body":5},[82],{"type":23,"tag":32,"props":83,"children":84},{},[85],{"type":36,"value":86},"Looking for my bio, talk information or pictures? Go to the presskit page to find different varieties of my bio, headshots and past talks I have done. This page also includes slides and other info needed to add me as a speaker to your conference.",{"type":23,"tag":28,"props":88,"children":89},{"v-slot:sideb":5},[90,94],{"type":23,"tag":70,"props":91,"children":93},{"tag":72,"title":92},"Emcee",[],{"type":23,"tag":76,"props":95,"children":96},{},[97],{"type":23,"tag":28,"props":98,"children":99},{"v-slot:body":5},[100],{"type":23,"tag":32,"props":101,"children":102},{},[103],{"type":36,"value":104},"Masters of ceremonies, commonly called emcees, offer a profound value at conferences. As a seasoned emcee, I usually start with an anecdote as introduction, followed by an in-depth Q&A session that truly features the speakers and their content. Over the past few years, my emcee gigs have been largely virtual. Starting 2022, however, I've also acted as emcee at in-person conferences, such as Vuejs Amsterdam.",{"type":23,"tag":106,"props":107,"children":109},"talks",{":small":108},"false",[110],{"type":23,"tag":28,"props":111,"children":112},{"v-slot:title":5},[113],{"type":23,"tag":32,"props":114,"children":115},{},[116],{"type":36,"value":117},"Talks",{"title":5,"searchDepth":119,"depth":119,"links":120},2,[],"markdown","content:5.speaking:index.md","content","5.speaking/index.md","md",[127,130,922,999,1233,1236,1239],{"title":128,"_path":129},"About Tim","/about",{"title":131,"_path":132,"children":133},"Videos","/videos",[134,153,172,218,219,271,374,397,419,747],{"title":135,"_path":136,"children":137},"Alive And Kicking","/videos/alive-and-kicking",[138,141,144,147,150],{"title":139,"_path":140},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":142,"_path":143},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":145,"_path":146},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":148,"_path":149},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":151,"_path":152},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":154,"_path":155,"children":156},"Headless Creator","/videos/headless-creator",[157,160,163,166,169],{"title":158,"_path":159},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":161,"_path":162},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":164,"_path":165},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":167,"_path":168},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":170,"_path":171},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":173,"_path":174,"children":175},"Hygraph","/videos/hygraph",[176,179,182,185,188,191,194,197,200,203,206,209,212,215],{"title":177,"_path":178},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":180,"_path":181},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":183,"_path":184},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":186,"_path":187},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":189,"_path":190},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":192,"_path":193},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":195,"_path":196},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":198,"_path":199},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":201,"_path":202},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":204,"_path":205},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":207,"_path":208},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":210,"_path":211},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":213,"_path":214},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":216,"_path":217},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":131,"_path":132},{"title":220,"_path":221,"children":222},"Live Hygraph","/videos/live-hygraph",[223,226,229,232,235,238,241,244,247,250,253,256,259,262,265,268],{"title":224,"_path":225},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":227,"_path":228},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":230,"_path":231},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":233,"_path":234},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":236,"_path":237},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":239,"_path":240},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":242,"_path":243},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":245,"_path":246},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":248,"_path":249},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":251,"_path":252},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":254,"_path":255},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":257,"_path":258},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":260,"_path":261},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":263,"_path":264},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":266,"_path":267},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":269,"_path":270},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":272,"_path":273,"children":274},"Live Uniform","/videos/live-uniform",[275,278,281,284,287,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],{"title":276,"_path":277},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":279,"_path":280},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":282,"_path":283},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":285,"_path":286},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":288,"_path":289},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":291,"_path":292},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":294,"_path":295},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":297,"_path":298},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":300,"_path":301},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":303,"_path":304},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":306,"_path":307},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":309,"_path":310},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":312,"_path":313},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":315,"_path":316},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":318,"_path":319},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":321,"_path":322},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":324,"_path":325},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":327,"_path":328},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":330,"_path":331},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":333,"_path":334},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":336,"_path":337},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":339,"_path":340},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":342,"_path":343},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":345,"_path":346},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":348,"_path":349},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":351,"_path":352},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":354,"_path":355},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":357,"_path":358},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":360,"_path":361},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":363,"_path":364},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":366,"_path":367},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":369,"_path":370},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":372,"_path":373},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":375,"_path":376,"children":377},"Misc Streams","/videos/misc-streams",[378,381,384,387,389,391,394],{"title":379,"_path":380},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":382,"_path":383},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":385,"_path":386},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":369,"_path":388},"/videos/misc-streams/003-jvgiaotcerq",{"title":360,"_path":390},"/videos/misc-streams/004-ekut1koa2n8",{"title":392,"_path":393},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":395,"_path":396},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":398,"_path":399,"children":400},"Mp","/videos/mp",[401,404,407,410,413,416],{"title":402,"_path":403},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":405,"_path":406},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":408,"_path":409},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":411,"_path":412},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":414,"_path":415},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":417,"_path":418},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":420,"_path":421,"children":422},"Tim","/videos/tim",[423,425,428,431,434,437,440,443,446,449,452,455,458,461,464,467,470,473,475,477,480,483,486,489,492,495,498,501,504,507,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],{"title":142,"_path":424},"/videos/tim/000-mvq-_s20ndk",{"title":426,"_path":427},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":429,"_path":430},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":432,"_path":433},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":435,"_path":436},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":438,"_path":439},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":441,"_path":442},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":444,"_path":445},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":447,"_path":448},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":450,"_path":451},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":453,"_path":454},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":456,"_path":457},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":459,"_path":460},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":462,"_path":463},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":465,"_path":466},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":468,"_path":469},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":471,"_path":472},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":145,"_path":474},"/videos/tim/017-m0mrligs6i0",{"title":139,"_path":476},"/videos/tim/018-hhpitreyobi",{"title":478,"_path":479},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":481,"_path":482},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":484,"_path":485},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":487,"_path":488},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":490,"_path":491},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":493,"_path":494},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":496,"_path":497},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":499,"_path":500},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":502,"_path":503},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":505,"_path":506},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":508,"_path":509},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":511,"_path":512},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":514,"_path":515},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":517,"_path":518},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":520,"_path":521},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":523,"_path":524},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":526,"_path":527},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":529,"_path":530},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":532,"_path":533},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":535,"_path":536},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":538,"_path":539},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":541,"_path":542},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":544,"_path":545},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":547,"_path":548},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":550,"_path":551},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":553,"_path":554},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":556,"_path":557},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":559,"_path":560},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":562,"_path":563},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":565,"_path":566},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":568,"_path":569},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":571,"_path":572},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":574,"_path":575},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":577,"_path":578},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":580,"_path":581},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":583,"_path":584},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":586,"_path":587},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":589,"_path":590},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":592,"_path":593},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":595,"_path":596},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":598,"_path":599},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":601,"_path":602},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":604,"_path":605},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":607,"_path":608},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":610,"_path":611},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":613,"_path":614},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":616,"_path":617},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":619,"_path":620},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":622,"_path":623},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":625,"_path":626},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":628,"_path":629},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":631,"_path":632},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":634,"_path":635},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":637,"_path":638},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":640,"_path":641},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":643,"_path":644},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":646,"_path":647},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":649,"_path":650},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":652,"_path":653},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":655,"_path":656},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":658,"_path":659},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":661,"_path":662},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":664,"_path":665},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":667,"_path":668},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":670,"_path":671},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":673,"_path":674},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":676,"_path":677},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":679,"_path":680},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":682,"_path":683},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":685,"_path":686},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":688,"_path":689},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":691,"_path":692},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":694,"_path":695},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":697,"_path":698},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":700,"_path":701},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":703,"_path":704},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":706,"_path":707},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":709,"_path":710},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":712,"_path":713},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":715,"_path":716},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":718,"_path":719},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":721,"_path":722},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":724,"_path":725},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":727,"_path":728},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":730,"_path":731},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":733,"_path":734},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":736,"_path":737},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":739,"_path":740},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":742,"_path":743},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":745,"_path":746},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":748,"_path":749,"children":750},"Uniform","/videos/uniform",[751,754,757,760,763,766,769,772,775,778,781,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],{"title":752,"_path":753},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":755,"_path":756},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":758,"_path":759},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":761,"_path":762},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":764,"_path":765},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":767,"_path":768},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":770,"_path":771},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":773,"_path":774},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":776,"_path":777},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":779,"_path":780},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":782,"_path":783},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":785,"_path":786},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":788,"_path":789},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":791,"_path":792},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":794,"_path":795},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":797,"_path":798},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":800,"_path":801},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":803,"_path":804},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":806,"_path":807},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":809,"_path":810},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":812,"_path":813},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":815,"_path":816},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":818,"_path":819},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":821,"_path":822},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":824,"_path":825},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":827,"_path":828},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":830,"_path":831},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":833,"_path":834},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":836,"_path":837},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":839,"_path":840},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":842,"_path":843},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":845,"_path":846},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":848,"_path":849},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":851,"_path":852},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":854,"_path":855},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":857,"_path":858},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":860,"_path":861},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":863,"_path":864},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":866,"_path":867},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":869,"_path":870},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":872,"_path":873},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":875,"_path":876},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":878,"_path":879},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":881,"_path":882},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":884,"_path":885},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":887,"_path":888},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":890,"_path":891},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":893,"_path":894},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":896,"_path":897},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":899,"_path":900},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":902,"_path":903},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":905,"_path":906},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":908,"_path":909},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":911,"_path":912},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":914,"_path":915},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":917,"_path":918},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":920,"_path":921},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":923,"_path":924,"children":925},"Writing","/writing",[926,929,932,935,938,941,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996],{"title":927,"_path":928},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":930,"_path":931},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":933,"_path":934},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":936,"_path":937},"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":939,"_path":940},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":923,"_path":924},{"title":943,"_path":944},"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":946,"_path":947},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":949,"_path":950},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":952,"_path":953},"My Fitness Story","/writing/my-fitness-story",{"title":955,"_path":956},"New job alert!","/writing/new-job-alert",{"title":958,"_path":959},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":961,"_path":962},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":964,"_path":965},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":967,"_path":968},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":970,"_path":971},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":973,"_path":974},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":976,"_path":977},"The MACH monolith","/writing/the-mach-monolith",{"title":979,"_path":980},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":982,"_path":983},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":985,"_path":986},"This is headless 2.0","/writing/this-is-headless-20",{"title":988,"_path":989},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":991,"_path":992},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":994,"_path":995},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":997,"_path":998},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":7,"_path":4,"children":1000},[1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232],{"title":1002,"_path":1003},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1005,"_path":1006},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1008,"_path":1009},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1011,"_path":1012},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1014,"_path":1015},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1017,"_path":1018},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1020,"_path":1021},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1023,"_path":1024},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1026,"_path":1027},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1029,"_path":1030},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1032,"_path":1033},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1035,"_path":1036},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1038,"_path":1039},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1041,"_path":1042},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1044,"_path":1045},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1047,"_path":1048},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1050,"_path":1051},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1053,"_path":1054},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1056,"_path":1057},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1059,"_path":1060},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1062,"_path":1063},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1065,"_path":1066},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1068,"_path":1069},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1071,"_path":1072},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1074,"_path":1075},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1077,"_path":1078},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1080,"_path":1081},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1083,"_path":1084},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1086,"_path":1087},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1089,"_path":1090},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1092,"_path":1093},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1095,"_path":1096},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1098,"_path":1099},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1101,"_path":1102},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1104,"_path":1105},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1107,"_path":1108},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1110,"_path":1111},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1113,"_path":1114},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1116,"_path":1117},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1119,"_path":1120},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1122,"_path":1123},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1125,"_path":1126},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1128,"_path":1129},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1131,"_path":1132},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1134,"_path":1135},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1137,"_path":1138},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1140,"_path":1141},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1143,"_path":1144},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1146,"_path":1147},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1149,"_path":1150},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1152,"_path":1153},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1155,"_path":1156},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1158,"_path":1159},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1161,"_path":1162},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1164,"_path":1165},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1167,"_path":1168},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1170,"_path":1171},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1173,"_path":1174},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1176,"_path":1177},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1179,"_path":1180},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1182,"_path":1183},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1185,"_path":1186},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1188,"_path":1189},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1191,"_path":1192},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1194,"_path":1195},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1197,"_path":1198},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1200,"_path":1201},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1203,"_path":1204},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1206,"_path":1207},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1209,"_path":1210},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1212,"_path":1213},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1215,"_path":1216},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1218,"_path":1219},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1221,"_path":1222},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1224,"_path":1225},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1227,"_path":1228},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1230,"_path":1231},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":7,"_path":4},{"title":1234,"_path":1235},"live streams","/livestreams",{"title":1237,"_path":1238},"Press kit","/presskit",{"title":1240,"_path":1241},"Alive and kicking","/alive-and-kicking",[1243,1257,1269,1282,1295,1308,1321,1333,1344,1356,1368,1381,1393,1405,1418,1430,1442,1454,1466,1477,1490,1503,1514,1526,1537,1549,1561,1573,1585,1597,1609,1620,1631,1643,1654,1667,1678,1690,1702,1714,1725,1737,1749,1761,1774,1786,1798,1811,1824,1836,1848,1861,1873,1885,1896,1908,1920,1932,1944,1956,1968,1980,1992,2003,2014,2025,2036,2048,2060,2071,2083,2095,2107,2119,2130,2143,2154],{"_path":1231,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1230,"description":5,"conference":1245,"talk":1246,"location":1247,"date":1248,"id":1249,"link":1250,"body":1251,"_type":121,"_id":1255,"_source":123,"_file":1256,"_extension":125},"speaking","CMSCamp Mallorca","Alive and Kicking","Catalonia Majorica Palma Mallorca","2024-09-27","clqdq87gltsup0bvztwqw2f1v","https://mallorca.cmscamp.eu/",{"type":20,"children":1252,"toc":1253},[],{"title":5,"searchDepth":119,"depth":119,"links":1254},[],"content:5.speaking:2024-09-27-clqdq87gltsup0bvztwqw2f1v.md","5.speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v.md",{"_path":1228,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1227,"description":5,"conference":1258,"talk":1246,"location":1259,"date":1260,"id":1261,"link":1262,"body":1263,"_type":121,"_id":1267,"_source":123,"_file":1268,"_extension":125},"ContentCon 2024","Austin, Texas","2024-06-05","clqdq6ui7ts730bvzmk1xw47t","https://www.contentstack.com/contentcon",{"type":20,"children":1264,"toc":1265},[],{"title":5,"searchDepth":119,"depth":119,"links":1266},[],"content:5.speaking:2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md","5.speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t.md",{"_path":1225,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1224,"description":5,"conference":1270,"talk":1271,"location":1272,"date":1273,"id":1274,"link":1275,"body":1276,"_type":121,"_id":1280,"_source":123,"_file":1281,"_extension":125},"DEVworld Conference 2024","Alive and Kicking - a vue into rock & roll","Amsterdam","2024-02-29","clkzot86xire30aujuy08465e","https://devworldconference.com/",{"type":20,"children":1277,"toc":1278},[],{"title":5,"searchDepth":119,"depth":119,"links":1279},[],"content:5.speaking:2024-02-29-clkzot86xire30aujuy08465e.md","5.speaking/2024-02-29-clkzot86xire30aujuy08465e.md",{"_path":1222,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1221,"description":5,"conference":1283,"talk":1284,"location":1285,"date":1286,"id":1287,"link":1288,"body":1289,"_type":121,"_id":1293,"_source":123,"_file":1294,"_extension":125},"WeAreDevelopers World Congress","Alive and Kicking, a Vue into Rock & Roll","Berlin","2023-07-27","clifq4sto3xph0aw4letve613","https://www.wearedevelopers.com/world-congress",{"type":20,"children":1290,"toc":1291},[],{"title":5,"searchDepth":119,"depth":119,"links":1292},[],"content:5.speaking:2023-07-27-clifq4sto3xph0aw4letve613.md","5.speaking/2023-07-27-clifq4sto3xph0aw4letve613.md",{"_path":1219,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1218,"description":5,"conference":1296,"talk":1297,"location":1298,"date":1299,"id":1300,"link":1301,"body":1302,"_type":121,"_id":1306,"_source":123,"_file":1307,"_extension":125},"Vue.js Global Summit '23","The modern front end is composable","Virtual","2023-06-06","clifq4t4w40dr0bw98f7p9zrq","https://events.geekle.us/vuejs23/",{"type":20,"children":1303,"toc":1304},[],{"title":5,"searchDepth":119,"depth":119,"links":1305},[],"content:5.speaking:2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md","5.speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq.md",{"_path":1216,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1215,"description":5,"conference":1309,"talk":1310,"location":1311,"date":1312,"id":1313,"link":1314,"body":1315,"_type":121,"_id":1319,"_source":123,"_file":1320,"_extension":125},"CityJS Athens","Alive and Kicking, a Vue into Rock & Roll as MC","Athens","2023-05-29","clifq4thm3xel0buvdpqx8bdm","https://greece.cityjsconf.org/",{"type":20,"children":1316,"toc":1317},[],{"title":5,"searchDepth":119,"depth":119,"links":1318},[],"content:5.speaking:2023-05-29-clifq4thm3xel0buvdpqx8bdm.md","5.speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm.md",{"_path":1213,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1212,"description":5,"conference":1322,"talk":1284,"location":1323,"date":1324,"id":1325,"link":1326,"body":1327,"_type":121,"_id":1331,"_source":123,"_file":1332,"_extension":125},"Vue.js London Life Conference","London","2023-05-12","clifq4tw33we40bw8jxhaaroo","https://vuejslive.com/",{"type":20,"children":1328,"toc":1329},[],{"title":5,"searchDepth":119,"depth":119,"links":1330},[],"content:5.speaking:2023-05-12-clifq4tw33we40bw8jxhaaroo.md","5.speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo.md",{"_path":1210,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1209,"description":5,"conference":1334,"talk":1284,"location":1323,"date":1335,"id":1336,"link":1337,"body":1338,"_type":121,"_id":1342,"_source":123,"_file":1343,"_extension":125},"Cloudinary User Summit London","2023-04-20","clifq4u9b3xpm0aw45vj51alh","https://events.cloudinary.com/cloudinaryusersummitlondon",{"type":20,"children":1339,"toc":1340},[],{"title":5,"searchDepth":119,"depth":119,"links":1341},[],"content:5.speaking:2023-04-20-clifq4u9b3xpm0aw45vj51alh.md","5.speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh.md",{"_path":1207,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1206,"description":5,"conference":1345,"talk":1346,"location":1323,"date":1347,"id":1348,"link":1349,"body":1350,"_type":121,"_id":1354,"_source":123,"_file":1355,"_extension":125},"CityJS Conf London","The modern tech stack is composable","2023-03-29","clifq4ul43we80bw8ihhkw7qr","https://cityjsconf.org/speakers",{"type":20,"children":1351,"toc":1352},[],{"title":5,"searchDepth":119,"depth":119,"links":1353},[],"content:5.speaking:2023-03-29-clifq4ul43we80bw8ihhkw7qr.md","5.speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr.md",{"_path":1204,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1203,"description":5,"conference":1357,"talk":1358,"location":1272,"date":1359,"id":1360,"link":1361,"body":1362,"_type":121,"_id":1366,"_source":123,"_file":1367,"_extension":125},"Vuejs Amsterdam","Alive and Kicking - a Vue into Rock & Roll","2023-02-08","clifq4uz43xpt0aw4mw4awvuj","https://vuejs.amsterdam/",{"type":20,"children":1363,"toc":1364},[],{"title":5,"searchDepth":119,"depth":119,"links":1365},[],"content:5.speaking:2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md","5.speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj.md",{"_path":1201,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1200,"description":5,"conference":1369,"talk":1370,"location":1371,"date":1372,"id":1373,"link":1374,"body":1375,"_type":121,"_id":1379,"_source":123,"_file":1380,"_extension":125},"JamstackConf 2022","The modern digital pipeline, the future of the jamstack is composable","San Fransisco, United States","2022-11-08","clifq4vdb40el0bw9il2y3pb4","https://jamstack.org/conf/",{"type":20,"children":1376,"toc":1377},[],{"title":5,"searchDepth":119,"depth":119,"links":1378},[],"content:5.speaking:2022-11-08-clifq4vdb40el0bw9il2y3pb4.md","5.speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4.md",{"_path":1198,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1197,"description":5,"conference":1382,"talk":1370,"location":1383,"date":1384,"id":1385,"link":1386,"body":1387,"_type":121,"_id":1391,"_source":123,"_file":1392,"_extension":125},"VueConf Toronto 2022","Metro Toronto Convention Centre","2022-11-02","clifq4vps3xep0buvimxfntyq","https://www.vuetoronto.com/",{"type":20,"children":1388,"toc":1389},[],{"title":5,"searchDepth":119,"depth":119,"links":1390},[],"content:5.speaking:2022-11-02-clifq4vps3xep0buvimxfntyq.md","5.speaking/2022-11-02-clifq4vps3xep0buvimxfntyq.md",{"_path":1195,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1194,"description":5,"conference":1394,"talk":1395,"location":1298,"date":1396,"id":1397,"link":1398,"body":1399,"_type":121,"_id":1403,"_source":123,"_file":1404,"_extension":125},"Strapi live stream","Composability with Strapi and Uniform","2022-10-14","clifq4w263xet0buv0mzqzfre","https://lu.ma/strapi-uniform-magic",{"type":20,"children":1400,"toc":1401},[],{"title":5,"searchDepth":119,"depth":119,"links":1402},[],"content:5.speaking:2022-10-14-clifq4w263xet0buv0mzqzfre.md","5.speaking/2022-10-14-clifq4w263xet0buv0mzqzfre.md",{"_path":1192,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1191,"description":5,"conference":1406,"talk":1407,"location":1408,"date":1409,"id":1410,"link":1411,"body":1412,"_type":121,"_id":1416,"_source":123,"_file":1417,"_extension":125},"Javascript Global Summit'22","The modern digital pipeline, the future is composable","virtual","2022-09-27","clifq4wef3xpx0aw4l7ueiqwb","https://events.geekle.us/js/",{"type":20,"children":1413,"toc":1414},[],{"title":5,"searchDepth":119,"depth":119,"links":1415},[],"content:5.speaking:2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md","5.speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb.md",{"_path":1189,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1188,"description":5,"conference":1419,"talk":1420,"location":1298,"date":1421,"id":1422,"link":1423,"body":1424,"_type":121,"_id":1428,"_source":123,"_file":1429,"_extension":125},"Cloudinary Podcast","Benefits and Factors to Consider with MACH Architecture","2022-09-14","clifq4wqo40fh0bw9sifjtw70","https://www.youtube.com/watch?v=uC1iD_Sq_Bo",{"type":20,"children":1425,"toc":1426},[],{"title":5,"searchDepth":119,"depth":119,"links":1427},[],"content:5.speaking:2022-09-14-clifq4wqo40fh0bw9sifjtw70.md","5.speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70.md",{"_path":1186,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1185,"description":5,"conference":1431,"talk":1432,"location":1298,"date":1433,"id":1434,"link":1435,"body":1436,"_type":121,"_id":1440,"_source":123,"_file":1441,"_extension":125},"Swipe Con 2022","The power of personalization in composable architectures","2022-08-25","clifq4x0z3xq20aw48a1n9hxy","https://uandi.com/swipe-con",{"type":20,"children":1437,"toc":1438},[],{"title":5,"searchDepth":119,"depth":119,"links":1439},[],"content:5.speaking:2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md","5.speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy.md",{"_path":1183,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1182,"description":5,"conference":1443,"talk":1444,"location":1298,"date":1445,"id":1446,"link":1447,"body":1448,"_type":121,"_id":1452,"_source":123,"_file":1453,"_extension":125},"Agility CMS Webinar","How can enterprises move from monolithic solutions to composability","2022-08-11","clifq4xdz3wek0bw862z7knrr","https://agilitycms.com/resources/events/how-can-enterprises-move-from-monolithic-solutions-to-composability",{"type":20,"children":1449,"toc":1450},[],{"title":5,"searchDepth":119,"depth":119,"links":1451},[],"content:5.speaking:2022-08-11-clifq4xdz3wek0bw862z7knrr.md","5.speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr.md",{"_path":1180,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1179,"description":5,"conference":1455,"talk":1456,"location":1298,"date":1457,"id":1458,"link":1459,"body":1460,"_type":121,"_id":1464,"_source":123,"_file":1465,"_extension":125},"Netlify Live Stream","Live: Creating a Composable Site with Personalization on the Edge","2022-08-10","clifq4xw640fr0bw9po5n2nug","https://www.youtube.com/watch?v=mntPUZRy3wA",{"type":20,"children":1461,"toc":1462},[],{"title":5,"searchDepth":119,"depth":119,"links":1463},[],"content:5.speaking:2022-08-10-clifq4xw640fr0bw9po5n2nug.md","5.speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug.md",{"_path":1177,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1176,"description":5,"conference":1467,"talk":1407,"location":1298,"date":1468,"id":1469,"link":1470,"body":1471,"_type":121,"_id":1475,"_source":123,"_file":1476,"_extension":125},"Composability Summit 2022","2022-07-27","clifq4yep3xf20buv5vorwrl5","https://composability.dev/",{"type":20,"children":1472,"toc":1473},[],{"title":5,"searchDepth":119,"depth":119,"links":1474},[],"content:5.speaking:2022-07-27-clifq4yep3xf20buv5vorwrl5.md","5.speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5.md",{"_path":1174,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1173,"description":5,"conference":1478,"talk":1479,"location":1480,"date":1481,"id":1482,"link":1483,"body":1484,"_type":121,"_id":1488,"_source":123,"_file":1489,"_extension":125},"Vue.js Roadtrip Barcelona","The future of Jamstack is composable","Barcalonam Glovo HQ, Barcelona, Spain","2022-07-01","clifq4ywg3xq60aw48tkujxyl","https://www.eventbrite.co.uk/e/vuejs-roadtrip-barcelona-tickets-339022735127",{"type":20,"children":1485,"toc":1486},[],{"title":5,"searchDepth":119,"depth":119,"links":1487},[],"content:5.speaking:2022-07-01-clifq4ywg3xq60aw48tkujxyl.md","5.speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl.md",{"_path":1168,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1167,"description":5,"conference":1491,"talk":1492,"location":1493,"date":1494,"id":1495,"link":1496,"body":1497,"_type":121,"_id":1501,"_source":123,"_file":1502,"_extension":125},"MACHathon LinkedIn Live","Presenting MACHathon Uniform Entry","Linkedin","2022-06-13","clifq4z8o3xqf0aw49q8f55f9","https://www.linkedin.com/video/event/urn:li:ugcPost:6940601525266206720/",{"type":20,"children":1498,"toc":1499},[],{"title":5,"searchDepth":119,"depth":119,"links":1500},[],"content:5.speaking:2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md","5.speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9.md",{"_path":1171,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1170,"description":5,"conference":1504,"talk":1505,"location":1298,"date":1494,"id":1506,"link":1507,"body":1508,"_type":121,"_id":1512,"_source":123,"_file":1513,"_extension":125},"The state of Jamstack by Kentico","Discussion on state of Jamstack 2022","clifq4zjc40fv0bw95ufcly4y","https://kontent.ai/webinars/state-of-jamstack-2022-report-emea/",{"type":20,"children":1509,"toc":1510},[],{"title":5,"searchDepth":119,"depth":119,"links":1511},[],"content:5.speaking:2022-06-13-clifq4zjc40fv0bw95ufcly4y.md","5.speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y.md",{"_path":1165,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1164,"description":5,"conference":1515,"talk":1516,"location":1517,"date":1518,"id":1519,"link":1361,"body":1520,"_type":121,"_id":1524,"_source":123,"_file":1525,"_extension":125},"Vue.js Global 2022","Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again","Theater Amsterdam, The Netherlands","2022-06-02","clifq4zvh40fz0bw986sdpv5u",{"type":20,"children":1521,"toc":1522},[],{"title":5,"searchDepth":119,"depth":119,"links":1523},[],"content:5.speaking:2022-06-02-clifq4zvh40fz0bw986sdpv5u.md","5.speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u.md",{"_path":1162,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1161,"description":5,"conference":1527,"talk":1479,"location":1408,"date":1528,"id":1529,"link":1530,"body":1531,"_type":121,"_id":1535,"_source":123,"_file":1536,"_extension":125},"Vue.js Global Summit'22","2022-05-26","clifq506e3wev0bw88q2lf63q","https://events.geekle.us/vuejs/",{"type":20,"children":1532,"toc":1533},[],{"title":5,"searchDepth":119,"depth":119,"links":1534},[],"content:5.speaking:2022-05-26-clifq506e3wev0bw88q2lf63q.md","5.speaking/2022-05-26-clifq506e3wev0bw88q2lf63q.md",{"_path":1159,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1158,"description":5,"conference":1538,"talk":1539,"location":1298,"date":1540,"id":1541,"link":1542,"body":1543,"_type":121,"_id":1547,"_source":123,"_file":1548,"_extension":125},"GatsbyConf 2022","The Modern DXP: How Jamstack will change the world","2022-03-02","clifq50g53xfr0buv56km2voa","https://www.gatsbyconf.com/",{"type":20,"children":1544,"toc":1545},[],{"title":5,"searchDepth":119,"depth":119,"links":1546},[],"content:5.speaking:2022-03-02-clifq50g53xfr0buv56km2voa.md","5.speaking/2022-03-02-clifq50g53xfr0buv56km2voa.md",{"_path":1156,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1155,"description":5,"conference":1550,"talk":1551,"location":1298,"date":1552,"id":1553,"link":1554,"body":1555,"_type":121,"_id":1559,"_source":123,"_file":1560,"_extension":125},"Vue Storefront Hackathon - Flash Talk","Modern Commerce - How Jamstack will change the world","2022-03-01","clifq50sj40g30bw9rqy825mb","https://www.youtube.com/watch?v=1lhZqBvgoxU",{"type":20,"children":1556,"toc":1557},[],{"title":5,"searchDepth":119,"depth":119,"links":1558},[],"content:5.speaking:2022-03-01-clifq50sj40g30bw9rqy825mb.md","5.speaking/2022-03-01-clifq50sj40g30bw9rqy825mb.md",{"_path":1153,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1152,"description":5,"conference":1562,"talk":1563,"location":1408,"date":1564,"id":1565,"link":1566,"body":1567,"_type":121,"_id":1571,"_source":123,"_file":1572,"_extension":125},"LAB Group Round Table","Stick or Twist: Monolith v.s Microservices","2022-02-10","clifq515940g70bw9yu0ltedp","https://lab.co.uk/",{"type":20,"children":1568,"toc":1569},[],{"title":5,"searchDepth":119,"depth":119,"links":1570},[],"content:5.speaking:2022-02-10-clifq515940g70bw9yu0ltedp.md","5.speaking/2022-02-10-clifq515940g70bw9yu0ltedp.md",{"_path":1150,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1149,"description":5,"conference":1574,"talk":1575,"location":1408,"date":1576,"id":1577,"link":1578,"body":1579,"_type":121,"_id":1583,"_source":123,"_file":1584,"_extension":125},"Kontent Rocks podcast","Personalisation in the Jamstack with Kentico Kontent","2022-02-08","clifq51j53wez0bw8cd1znjmi","https://podcasts.apple.com/us/podcast/kontent-rocks-podcast/id754786884",{"type":20,"children":1580,"toc":1581},[],{"title":5,"searchDepth":119,"depth":119,"links":1582},[],"content:5.speaking:2022-02-08-clifq51j53wez0bw8cd1znjmi.md","5.speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi.md",{"_path":1147,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1146,"description":5,"conference":1586,"talk":1587,"location":1298,"date":1588,"id":1589,"link":1590,"body":1591,"_type":121,"_id":1595,"_source":123,"_file":1596,"_extension":125},"The Jam.dev 2022","Cable Managing the Jamstack","2022-01-27","clifq51vy3wf30bw8qsv8nsv9","https://cfe.dev/events/the-jam-2022/",{"type":20,"children":1592,"toc":1593},[],{"title":5,"searchDepth":119,"depth":119,"links":1594},[],"content:5.speaking:2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md","5.speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9.md",{"_path":1144,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1143,"description":5,"conference":1598,"talk":1599,"location":1298,"date":1600,"id":1601,"link":1602,"body":1603,"_type":121,"_id":1607,"_source":123,"_file":1608,"_extension":125},"Vue.js Berlin","Vue js round-table discussion","2021-12-14","clifq528940gb0bw9bok0o68k","https://www.meetup.com/Vue-js-Berlin/",{"type":20,"children":1604,"toc":1605},[],{"title":5,"searchDepth":119,"depth":119,"links":1606},[],"content:5.speaking:2021-12-14-clifq528940gb0bw9bok0o68k.md","5.speaking/2021-12-14-clifq528940gb0bw9bok0o68k.md",{"_path":1141,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1140,"description":5,"conference":1610,"talk":1551,"location":1298,"date":1611,"id":1612,"link":1613,"body":1614,"_type":121,"_id":1618,"_source":123,"_file":1619,"_extension":125},"E-Commerce tech summit 21 by Geekle","2021-12-01","clifq52jm3xqj0aw4mxuyuaey","https://geekle.us/e-commerce",{"type":20,"children":1615,"toc":1616},[],{"title":5,"searchDepth":119,"depth":119,"links":1617},[],"content:5.speaking:2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md","5.speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey.md",{"_path":1138,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1137,"description":5,"conference":1621,"talk":1622,"location":1298,"date":1623,"id":1624,"link":1386,"body":1625,"_type":121,"_id":1629,"_source":123,"_file":1630,"_extension":125},"VueConf Toronto 2021","Cable management for Nuxt. Compose pages with multiple headless sources and never re-platform again...","2021-11-22","clifq52wr3wfm0bw83eawjx9x",{"type":20,"children":1626,"toc":1627},[],{"title":5,"searchDepth":119,"depth":119,"links":1628},[],"content:5.speaking:2021-11-22-clifq52wr3wfm0bw83eawjx9x.md","5.speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x.md",{"_path":1135,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1134,"description":5,"conference":1632,"talk":1633,"location":1298,"date":1634,"id":1635,"link":1636,"body":1637,"_type":121,"_id":1641,"_source":123,"_file":1642,"_extension":125},"Kontent Horizons","This talk showcases the Digital Experience Platform of the future. I will outline how we used to build DXP's and what needs to change to modernize them.","2021-11-10","clifq536v3xg20buvlz1n7ddw","https://horizons.kontent.ai/",{"type":20,"children":1638,"toc":1639},[],{"title":5,"searchDepth":119,"depth":119,"links":1640},[],"content:5.speaking:2021-11-10-clifq536v3xg20buvlz1n7ddw.md","5.speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw.md",{"_path":1132,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1131,"description":5,"conference":1644,"talk":1633,"location":1298,"date":1645,"id":1646,"link":1647,"body":1648,"_type":121,"_id":1652,"_source":123,"_file":1653,"_extension":125},"Fast Forward 2021","2021-11-04","clifq53ib40gf0bw9c3mxprzu","https://www.contentful.com/fast-forward/",{"type":20,"children":1649,"toc":1650},[],{"title":5,"searchDepth":119,"depth":119,"links":1651},[],"content:5.speaking:2021-11-04-clifq53ib40gf0bw9c3mxprzu.md","5.speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu.md",{"_path":1129,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1128,"description":5,"conference":1655,"talk":1656,"location":1657,"date":1658,"id":1659,"link":1660,"body":1661,"_type":121,"_id":1665,"_source":123,"_file":1666,"_extension":125},"DevBreak - The ultimate tech festival","JAMstack is the future. I think. Maybe.","Bouville, France","2021-09-07","clifq53so3wfq0bw81xni3t7x","https://www.devbreak.io/",{"type":20,"children":1662,"toc":1663},[],{"title":5,"searchDepth":119,"depth":119,"links":1664},[],"content:5.speaking:2021-09-07-clifq53so3wfq0bw81xni3t7x.md","5.speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x.md",{"_path":1126,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1125,"description":5,"conference":1668,"talk":1633,"location":1298,"date":1669,"id":1670,"link":1671,"body":1672,"_type":121,"_id":1676,"_source":123,"_file":1677,"_extension":125},"Programmed in Pencil Meetup","2021-07-27","clifq542s3xg60buvdk199xtq","https://www.programmedinpencil.com/",{"type":20,"children":1673,"toc":1674},[],{"title":5,"searchDepth":119,"depth":119,"links":1675},[],"content:5.speaking:2021-07-27-clifq542s3xg60buvdk199xtq.md","5.speaking/2021-07-27-clifq542s3xg60buvdk199xtq.md",{"_path":1123,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1122,"description":5,"conference":1679,"talk":1680,"location":1298,"date":1681,"id":1682,"link":1683,"body":1684,"_type":121,"_id":1688,"_source":123,"_file":1689,"_extension":125},"2021 VueDay Italy","MC & talk: Magical combination to build a modern website","2021-04-29","clifq54ct3wfu0bw8zsr9mejw","https://2021.vueday.it/",{"type":20,"children":1685,"toc":1686},[],{"title":5,"searchDepth":119,"depth":119,"links":1687},[],"content:5.speaking:2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md","5.speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw.md",{"_path":1120,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1119,"description":5,"conference":1691,"talk":1692,"location":1298,"date":1693,"id":1694,"link":1695,"body":1696,"_type":121,"_id":1700,"_source":123,"_file":1701,"_extension":125},"Vue Storefront Summit 2021","Hyper fast personalization for modern e-commerce","2021-04-20","clifq54na3xgb0buvrvmbamxf","https://hopin.com/events/vue-storefront-summit-2021",{"type":20,"children":1697,"toc":1698},[],{"title":5,"searchDepth":119,"depth":119,"links":1699},[],"content:5.speaking:2021-04-20-clifq54na3xgb0buvrvmbamxf.md","5.speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf.md",{"_path":1117,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1116,"description":5,"conference":1703,"talk":1704,"location":1298,"date":1705,"id":1706,"link":1707,"body":1708,"_type":121,"_id":1712,"_source":123,"_file":1713,"_extension":125},"Before Devbreak","Dynamic personalization on JAMstack websites","2021-04-07","clifq54zf3wfz0bw80v5gzndk","https://www.devbreak.io/before-devbreak",{"type":20,"children":1709,"toc":1710},[],{"title":5,"searchDepth":119,"depth":119,"links":1711},[],"content:5.speaking:2021-04-07-clifq54zf3wfz0bw80v5gzndk.md","5.speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk.md",{"_path":1114,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1113,"description":5,"conference":1715,"talk":628,"location":1298,"date":1716,"id":1717,"link":1718,"body":1719,"_type":121,"_id":1723,"_source":123,"_file":1724,"_extension":125},"City JS Conf 2021","2021-03-24","clifq559p3xgf0buvzch9im3l","https://cityjsconf.org/",{"type":20,"children":1720,"toc":1721},[],{"title":5,"searchDepth":119,"depth":119,"links":1722},[],"content:5.speaking:2021-03-24-clifq559p3xgf0buvzch9im3l.md","5.speaking/2021-03-24-clifq559p3xgf0buvzch9im3l.md",{"_path":1111,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1110,"description":5,"conference":1726,"talk":1727,"location":1298,"date":1728,"id":1729,"link":1730,"body":1731,"_type":121,"_id":1735,"_source":123,"_file":1736,"_extension":125},"GatsbyConf 2021","A workshop on connecting ContentStack, Gatsby and Uniform","2021-03-03","clifq55jz3xqp0aw4je7y5sw1","https://gatsbyconf.com/event/easily-build-a-dynamic-and-personalized-website-with-contentstack-gatsby-and-uniform/",{"type":20,"children":1732,"toc":1733},[],{"title":5,"searchDepth":119,"depth":119,"links":1734},[],"content:5.speaking:2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md","5.speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1.md",{"_path":1108,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1107,"description":5,"conference":1738,"talk":1739,"location":1298,"date":1740,"id":1741,"link":1742,"body":1743,"_type":121,"_id":1747,"_source":123,"_file":1748,"_extension":125},"JS World Conference","The Modern DXP. How JAMstack will change the world.","2021-02-22","clifq55tf40gk0bw9vofea3yp","https://frontenddeveloperlove.com/",{"type":20,"children":1744,"toc":1745},[],{"title":5,"searchDepth":119,"depth":119,"links":1746},[],"content:5.speaking:2021-02-22-clifq55tf40gk0bw9vofea3yp.md","5.speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp.md",{"_path":1105,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1104,"description":5,"conference":1750,"talk":1751,"location":1298,"date":1752,"id":1753,"link":1754,"body":1755,"_type":121,"_id":1759,"_source":123,"_file":1760,"_extension":125},"The Power of Cross-Technology Innovation","#21 with Peggy, Tim, and Idoia","2021-02-02","clifq56623xqt0aw44sbds5cn","https://www.linkedin.com/video/live/urn:li:ugcPost:6762404029302640640/",{"type":20,"children":1756,"toc":1757},[],{"title":5,"searchDepth":119,"depth":119,"links":1758},[],"content:5.speaking:2021-02-02-clifq56623xqt0aw44sbds5cn.md","5.speaking/2021-02-02-clifq56623xqt0aw44sbds5cn.md",{"_path":1102,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1101,"description":5,"conference":1762,"talk":1763,"location":1764,"date":1765,"id":1766,"link":1767,"body":1768,"_type":121,"_id":1772,"_source":123,"_file":1773,"_extension":125},"Web Dev x Sustainability ","BOECKBX - Let's Talk About Eco-Friendliness in Web Development","YouTube","2021-02-01","clifq56gq3xqx0aw47qor4w9s","https://www.youtube.com/watch?v=LcUaUC6BxUk",{"type":20,"children":1769,"toc":1770},[],{"title":5,"searchDepth":119,"depth":119,"links":1771},[],"content:5.speaking:2021-02-01-clifq56gq3xqx0aw47qor4w9s.md","5.speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s.md",{"_path":1099,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1098,"description":5,"conference":1775,"talk":1776,"location":1298,"date":1777,"id":1778,"link":1779,"body":1780,"_type":121,"_id":1784,"_source":123,"_file":1785,"_extension":125},"Vue.js // Berlin","The magical combination for creating a modern website.","2021-01-12","clifq56q43xgk0buv4hu04quz","https://www.meetup.com/Vue-js-Berlin/events/wwtgqrycccbqb/",{"type":20,"children":1781,"toc":1782},[],{"title":5,"searchDepth":119,"depth":119,"links":1783},[],"content:5.speaking:2021-01-12-clifq56q43xgk0buv4hu04quz.md","5.speaking/2021-01-12-clifq56q43xgk0buv4hu04quz.md",{"_path":1096,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1095,"description":5,"conference":1787,"talk":1788,"location":1298,"date":1789,"id":1790,"link":1791,"body":1792,"_type":121,"_id":1796,"_source":123,"_file":1797,"_extension":125},"Environmentally Sustainable Websites","Digital's Carbon Footprint, Green Development Choices and Options, Sustainable Shortcuts, Optimised User Experiences, MACH/Composable Architecture","2020-12-18","clifq571z40gq0bw9b62wbowr","https://www.valtech.com/podcasts/digital-transformation-podcast-environmentally-sustainable-websites",{"type":20,"children":1793,"toc":1794},[],{"title":5,"searchDepth":119,"depth":119,"links":1795},[],"content:5.speaking:2020-12-18-clifq571z40gq0bw9b62wbowr.md","5.speaking/2020-12-18-clifq571z40gq0bw9b62wbowr.md",{"_path":1093,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1092,"description":5,"conference":1799,"talk":1800,"location":1801,"date":1802,"id":1803,"link":1804,"body":1805,"_type":121,"_id":1809,"_source":123,"_file":1810,"_extension":125},"Zeplin ZAM JAM","In this first ever Zam Jam session, we’re talking to 3 digital leaders about how Zeplin helps their agency foster deep customer engagement and multi-disciplined team collaboration to build beautiful products and deliver on the promise of design.","Virtual (YouTube Livestream)","2020-12-16","clifq57c43wg40bw81h7fr291","https://www.youtube.com/watch?v=tUc9CKiC0Go",{"type":20,"children":1806,"toc":1807},[],{"title":5,"searchDepth":119,"depth":119,"links":1808},[],"content:5.speaking:2020-12-16-clifq57c43wg40bw81h7fr291.md","5.speaking/2020-12-16-clifq57c43wg40bw81h7fr291.md",{"_path":1090,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1089,"description":5,"conference":1812,"talk":1813,"location":1814,"date":1815,"id":1816,"link":1817,"body":1818,"_type":121,"_id":1822,"_source":123,"_file":1823,"_extension":125},"Tech Talks with Santosh ","Santosh: In this talk show, we will have some awesome developers, sharing content from the programming language they work on.","Virtual (Youtube Livestream)","2020-12-11","clifq57o03xgp0buvlvdxm5l9","https://www.youtube.com/c/TechTalksWithSantosh",{"type":20,"children":1819,"toc":1820},[],{"title":5,"searchDepth":119,"depth":119,"links":1821},[],"content:5.speaking:2020-12-11-clifq57o03xgp0buvlvdxm5l9.md","5.speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9.md",{"_path":1087,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1086,"description":5,"conference":1825,"talk":1826,"location":1298,"date":1827,"id":1828,"link":1829,"body":1830,"_type":121,"_id":1834,"_source":123,"_file":1835,"_extension":125},"Cloudinary Webinar: Road to headless","Join us to learn how a headless architecture can help you streamline content delivery through an integration of composed components with best-of-breed vendors.","2020-12-02","clifq582i3wg80bw8rszss5am","https://cloudinary.com",{"type":20,"children":1831,"toc":1832},[],{"title":5,"searchDepth":119,"depth":119,"links":1833},[],"content:5.speaking:2020-12-02-clifq582i3wg80bw8rszss5am.md","5.speaking/2020-12-02-clifq582i3wg80bw8rszss5am.md",{"_path":1084,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1083,"description":5,"conference":1837,"talk":1838,"location":1298,"date":1839,"id":1840,"link":1841,"body":1842,"_type":121,"_id":1846,"_source":123,"_file":1847,"_extension":125},"Zeplin ZAM JAM round table discussion","In this discussion between multiple agencies we try to provide real world insight into how teams are using Zeplin.","2020-12-01","clifq58cz3xr10aw4n6qndf3s","https://www.youtube.com/channel/UCM2z6CHM4wvmlB9qo_dq0dg",{"type":20,"children":1843,"toc":1844},[],{"title":5,"searchDepth":119,"depth":119,"links":1845},[],"content:5.speaking:2020-12-01-clifq58cz3xr10aw4n6qndf3s.md","5.speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s.md",{"_path":1081,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1080,"description":5,"conference":1849,"talk":1850,"location":1851,"date":1852,"id":1853,"link":1854,"body":1855,"_type":121,"_id":1859,"_source":123,"_file":1860,"_extension":125},"Podcast: RETHINK Luxury - Ep 2: Sustainability","We’ll be diving into ethical sourcing in luxury, the challenges of implementing sustainable businesses practices, and envisioning a better world forward","Podcast","2020-11-11","clifq58oo40gu0bw9iffiakmh","https://www.rethink.industries/podcast/rethink-luxury-sustainability/",{"type":20,"children":1856,"toc":1857},[],{"title":5,"searchDepth":119,"depth":119,"links":1858},[],"content:5.speaking:2020-11-11-clifq58oo40gu0bw9iffiakmh.md","5.speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh.md",{"_path":1078,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1077,"description":5,"conference":1862,"talk":1863,"location":1298,"date":1864,"id":1865,"link":1866,"body":1867,"_type":121,"_id":1871,"_source":123,"_file":1872,"_extension":125},"Live coding for the Prismic Slice Contest","Lucie and Tim will connect to build a simple Slice Library for 1 hour.\nThey will be using the New Slice Builder for that, which also generates Storybook stories for each of their components.","2020-11-10","clifq590340gy0bw9onnmgr7y","https://www.youtube.com/watch?v=p3Wih8zOfI8",{"type":20,"children":1868,"toc":1869},[],{"title":5,"searchDepth":119,"depth":119,"links":1870},[],"content:5.speaking:2020-11-10-clifq590340gy0bw9onnmgr7y.md","5.speaking/2020-11-10-clifq590340gy0bw9onnmgr7y.md",{"_path":1075,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1074,"description":5,"conference":1874,"talk":1875,"location":1298,"date":1876,"id":1877,"link":1878,"body":1879,"_type":121,"_id":1883,"_source":123,"_file":1884,"_extension":125},"JS Monthly Online #07, Oct Meetup","I will take you through the new features of Webpack 5 and also provide some examples where we could benefit in your day to day development live","2020-10-29","clifq59b83xr60aw45w2sqa1g","https://www.meetup.com/js-monthly/events/273843246/",{"type":20,"children":1880,"toc":1881},[],{"title":5,"searchDepth":119,"depth":119,"links":1882},[],"content:5.speaking:2020-10-29-clifq59b83xr60aw45w2sqa1g.md","5.speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g.md",{"_path":1072,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1071,"description":5,"conference":1886,"talk":1776,"location":1298,"date":1887,"id":1888,"link":1889,"body":1890,"_type":121,"_id":1894,"_source":123,"_file":1895,"_extension":125},"Vue.js Antwerp - October 2020","2020-10-14","clifq59mp3wgc0bw82qykah6x","https://www.meetup.com/vue-antwerp/events/273585859/",{"type":20,"children":1891,"toc":1892},[],{"title":5,"searchDepth":119,"depth":119,"links":1893},[],"content:5.speaking:2020-10-14-clifq59mp3wgc0bw82qykah6x.md","5.speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x.md",{"_path":1069,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1068,"description":5,"conference":1897,"talk":1898,"location":1298,"date":1899,"id":1900,"link":1901,"body":1902,"_type":121,"_id":1906,"_source":123,"_file":1907,"_extension":125},"Vue.js Global Conference 2020","An introduction to Vite and VitePress","2020-09-17","clifq59zj3wgg0bw8xmh09vvm","https://vuejs.amsterdam",{"type":20,"children":1903,"toc":1904},[],{"title":5,"searchDepth":119,"depth":119,"links":1905},[],"content:5.speaking:2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md","5.speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm.md",{"_path":1066,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1065,"description":5,"conference":1909,"talk":1910,"location":1298,"date":1911,"id":1912,"link":1913,"body":1914,"_type":121,"_id":1918,"_source":123,"_file":1919,"_extension":125},"JS Monthly Online","A Developers Guide To Low Carbon Websites","2020-08-26","clifq5a9x3wgk0bw8x8qfl5rk","https://www.meetup.com/js-monthly/events/272459669/",{"type":20,"children":1915,"toc":1916},[],{"title":5,"searchDepth":119,"depth":119,"links":1917},[],"content:5.speaking:2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md","5.speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk.md",{"_path":1063,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1062,"description":5,"conference":1921,"talk":1922,"location":1298,"date":1923,"id":1924,"link":1925,"body":1926,"_type":121,"_id":1930,"_source":123,"_file":1931,"_extension":125},"Views on Vue Podcast Interview","My views on Vue at scale and on enterprise level","2020-08-05","clifq5anp3xrb0aw4jxeipa7e","https://devchat.tv/views-on-vue/vov-116-using-vue-at-scale-at-loreal-with-tim-benniks/",{"type":20,"children":1927,"toc":1928},[],{"title":5,"searchDepth":119,"depth":119,"links":1929},[],"content:5.speaking:2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md","5.speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e.md",{"_path":1060,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1059,"description":5,"conference":1933,"talk":1934,"location":1298,"date":1935,"id":1936,"link":1937,"body":1938,"_type":121,"_id":1942,"_source":123,"_file":1943,"_extension":125},"ImageCon 2020","A Developers Guide To Lowe Carbon Websites","2020-07-27","clifq5axb3xgw0buvy6hrvpv2","https://www.imagecon.com/",{"type":20,"children":1939,"toc":1940},[],{"title":5,"searchDepth":119,"depth":119,"links":1941},[],"content:5.speaking:2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md","5.speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2.md",{"_path":1057,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1056,"description":5,"conference":1945,"talk":1946,"location":1298,"date":1947,"id":1948,"link":1949,"body":1950,"_type":121,"_id":1954,"_source":123,"_file":1955,"_extension":125},"Prismic webinar","Why go headless? Steps to go from a monolithic CMS to a decoupled one.","2020-07-21","clifq5b6s3xrf0aw4s8ml5qjb","https://www.youtube.com/watch?v=wVyMYGrI0hM",{"type":20,"children":1951,"toc":1952},[],{"title":5,"searchDepth":119,"depth":119,"links":1953},[],"content:5.speaking:2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md","5.speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb.md",{"_path":1054,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1053,"description":5,"conference":1957,"talk":1958,"location":1298,"date":1959,"id":1960,"link":1961,"body":1962,"_type":121,"_id":1966,"_source":123,"_file":1967,"_extension":125},"ReactiveConf","Team First - Corona edition","2020-06-09","clifq5bj73xrj0aw42st3pna4","https://www.meetup.com/ReactiveMeetupsPrague/events/270869144/",{"type":20,"children":1963,"toc":1964},[],{"title":5,"searchDepth":119,"depth":119,"links":1965},[],"content:5.speaking:2020-06-09-clifq5bj73xrj0aw42st3pna4.md","5.speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4.md",{"_path":1051,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1050,"description":5,"conference":1969,"talk":1970,"location":1298,"date":1971,"id":1972,"link":1973,"body":1974,"_type":121,"_id":1978,"_source":123,"_file":1979,"_extension":125},"That's my JAMstack podcast interview","JAMstack is my JAM. I guess...","2020-05-28","clifq5bvw40h20bw92kt7pmp1","https://thatsmyjamstack.com/posts/tim-benniks/",{"type":20,"children":1975,"toc":1976},[],{"title":5,"searchDepth":119,"depth":119,"links":1977},[],"content:5.speaking:2020-05-28-clifq5bvw40h20bw92kt7pmp1.md","5.speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1.md",{"_path":1048,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1047,"description":5,"conference":1981,"talk":1982,"location":1298,"date":1983,"id":1984,"link":1985,"body":1986,"_type":121,"_id":1990,"_source":123,"_file":1991,"_extension":125},"We Belong Here Podcast Interview","How I moved into tech from being a Nurse and Musician","2020-05-25","clifq5c5u3wgo0bw8g8yudazp","https://webelongpodcast.com/",{"type":20,"children":1987,"toc":1988},[],{"title":5,"searchDepth":119,"depth":119,"links":1989},[],"content:5.speaking:2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md","5.speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp.md",{"_path":1045,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1044,"description":5,"conference":1993,"talk":1958,"location":1298,"date":1994,"id":1995,"link":1996,"body":1997,"_type":121,"_id":2001,"_source":123,"_file":2002,"_extension":125},"Talent.io talks Online","2020-05-13","clifq5cfw3xh00buvhyslf4s3","https://www.eventbrite.com/o/talentio-16600656820",{"type":20,"children":1998,"toc":1999},[],{"title":5,"searchDepth":119,"depth":119,"links":2000},[],"content:5.speaking:2020-05-13-clifq5cfw3xh00buvhyslf4s3.md","5.speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3.md",{"_path":1042,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1041,"description":5,"conference":2004,"talk":1656,"location":1298,"date":2005,"id":2006,"link":2007,"body":2008,"_type":121,"_id":2012,"_source":123,"_file":2013,"_extension":125},"VueJS Olso Virtual Meetup","2020-05-06","clifq5cpx40hk0bw9odxcxt0q","https://www.meetup.com/VueJS-Oslo/events/270218508/",{"type":20,"children":2009,"toc":2010},[],{"title":5,"searchDepth":119,"depth":119,"links":2011},[],"content:5.speaking:2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md","5.speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q.md",{"_path":1039,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1038,"description":5,"conference":2015,"talk":1958,"location":1298,"date":2016,"id":2017,"link":2018,"body":2019,"_type":121,"_id":2023,"_source":123,"_file":2024,"_extension":125},"MallorcaJS meetup","2020-04-22","clifq5czw3wgs0bw8srwiffx1","https://www.meetup.com/MallorcaJS/events/270156286",{"type":20,"children":2020,"toc":2021},[],{"title":5,"searchDepth":119,"depth":119,"links":2022},[],"content:5.speaking:2020-04-22-clifq5czw3wgs0bw8srwiffx1.md","5.speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1.md",{"_path":1036,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1035,"description":5,"conference":2026,"talk":1656,"location":1298,"date":2027,"id":2028,"link":2029,"body":2030,"_type":121,"_id":2034,"_source":123,"_file":2035,"_extension":125},"Front-end Love virtual Meetup","2020-03-19","clifq5dal3xsn0aw49a9wad1n","https://youtu.be/Wq2AqONg7rs?t=5307",{"type":20,"children":2031,"toc":2032},[],{"title":5,"searchDepth":119,"depth":119,"links":2033},[],"content:5.speaking:2020-03-19-clifq5dal3xsn0aw49a9wad1n.md","5.speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n.md",{"_path":1033,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1032,"description":5,"conference":2037,"talk":2038,"location":2039,"date":2040,"id":2041,"link":1361,"body":2042,"_type":121,"_id":2046,"_source":123,"_file":2047,"_extension":125},"Vue.js Amsterdam 2020","Team First. A framework to lead a team of developers to success in a high-pressure environment","Amsterdam, The Netherlands","2020-02-18","clifq5dk940if0bw9ok9achtj",{"type":20,"children":2043,"toc":2044},[],{"title":5,"searchDepth":119,"depth":119,"links":2045},[],"content:5.speaking:2020-02-18-clifq5dk940if0bw9ok9achtj.md","5.speaking/2020-02-18-clifq5dk940if0bw9ok9achtj.md",{"_path":1030,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1029,"description":5,"conference":2049,"talk":1656,"location":2050,"date":2051,"id":2052,"link":2053,"body":2054,"_type":121,"_id":2058,"_source":123,"_file":2059,"_extension":125},"Vue.js Paris Meetup","Paris, France","2019-12-17","clifq5dyh40ij0bw9oquw072b","https://www.meetup.com/Vuejs-Paris/events/266953797/",{"type":20,"children":2055,"toc":2056},[],{"title":5,"searchDepth":119,"depth":119,"links":2057},[],"content:5.speaking:2019-12-17-clifq5dyh40ij0bw9oquw072b.md","5.speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b.md",{"_path":1027,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1026,"description":5,"conference":2061,"talk":1656,"location":2050,"date":2062,"id":2063,"link":2064,"body":2065,"_type":121,"_id":2069,"_source":123,"_file":2070,"_extension":125},"The evolution of modern web development on monolithic platforms","2019-11-28","clifq5ebo3wgx0bw8vno5ce0d","https://www.meetup.com/Meet-up-at-Valtech-Front-Platform/events/265587330/",{"type":20,"children":2066,"toc":2067},[],{"title":5,"searchDepth":119,"depth":119,"links":2068},[],"content:5.speaking:2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md","5.speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d.md",{"_path":1024,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1023,"description":5,"conference":2072,"talk":2038,"location":2073,"date":2074,"id":2075,"link":2076,"body":2077,"_type":121,"_id":2081,"_source":123,"_file":2082,"_extension":125},"Budapest VUE.JS meetup VueAnd.Me edition","Budapest, Hungary","2019-09-27","clifq5eos3xhh0buvewly5gxs","https://www.meetup.com/Vue-js-Budapest/events/263805562/",{"type":20,"children":2078,"toc":2079},[],{"title":5,"searchDepth":119,"depth":119,"links":2080},[],"content:5.speaking:2019-09-27-clifq5eos3xhh0buvewly5gxs.md","5.speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs.md",{"_path":1021,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1020,"description":5,"conference":2084,"talk":2085,"location":2039,"date":2086,"id":2087,"link":2088,"body":2089,"_type":121,"_id":2093,"_source":123,"_file":2094,"_extension":125},"EXDS#19","Delivery guidelines for creative assets","2019-09-09","clifq5f1b3wh10bw8ftmppjkc","https://www.valtech.com/",{"type":20,"children":2090,"toc":2091},[],{"title":5,"searchDepth":119,"depth":119,"links":2092},[],"content:5.speaking:2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md","5.speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc.md",{"_path":1018,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1017,"description":5,"conference":2096,"talk":2097,"location":2050,"date":2098,"id":2099,"link":2100,"body":2101,"_type":121,"_id":2105,"_source":123,"_file":2106,"_extension":125},"Vue.js Paris meetup","Vue.js for L'Oreal. A case study","2019-09-04","clifq5fer3xhl0buvzzgwqg1k","https://www.meetup.com/fr-FR/Vuejs-Paris/events/263934300/",{"type":20,"children":2102,"toc":2103},[],{"title":5,"searchDepth":119,"depth":119,"links":2104},[],"content:5.speaking:2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md","5.speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k.md",{"_path":1015,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1014,"description":5,"conference":2108,"talk":2038,"location":2109,"date":2110,"id":2111,"link":2112,"body":2113,"_type":121,"_id":2117,"_source":123,"_file":2118,"_extension":125},"Vue.js roadtrip 2019 - Barcelona","Barcelona, Spain","2019-05-25","clifq5fpd3xt00aw4grnzft29","https://discover.events.com/es/catalunya/ciutat-vella/e/business/vuejs-frontend-roadtrip-barcelona-holaluz-office-294857096",{"type":20,"children":2114,"toc":2115},[],{"title":5,"searchDepth":119,"depth":119,"links":2116},[],"content:5.speaking:2019-05-25-clifq5fpd3xt00aw4grnzft29.md","5.speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29.md",{"_path":1012,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1011,"description":5,"conference":2120,"talk":2038,"location":2050,"date":2121,"id":2122,"link":2123,"body":2124,"_type":121,"_id":2128,"_source":123,"_file":2129,"_extension":125},"Vue.js roadtrip 2019 - Paris","2019-05-17","clifq5g1f3wh90bw81u5sa0ai","https://eventil.com/events/frontend-vuejs-roadtrip-paris",{"type":20,"children":2125,"toc":2126},[],{"title":5,"searchDepth":119,"depth":119,"links":2127},[],"content:5.speaking:2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md","5.speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai.md",{"_path":1009,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1008,"description":5,"conference":2131,"talk":2132,"location":2133,"date":2134,"id":2135,"link":2136,"body":2137,"_type":121,"_id":2141,"_source":123,"_file":2142,"_extension":125},"VueDay 2019","Vue.js for L'Oreal. A case study.","Verona, Italy","2019-04-19","clifq5gd63xhq0buvufv6nagk","https://2019.vueday.it/",{"type":20,"children":2138,"toc":2139},[],{"title":5,"searchDepth":119,"depth":119,"links":2140},[],"content:5.speaking:2019-04-19-clifq5gd63xhq0buvufv6nagk.md","5.speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk.md",{"_path":1006,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1005,"description":5,"conference":2144,"talk":2132,"location":2145,"date":2146,"id":2147,"link":1901,"body":2148,"_type":121,"_id":2152,"_source":123,"_file":2153,"_extension":125},"vuejs.amsterdam 2019","Amsterdam, the Netherlands","2019-02-26","clifq5gns3xhu0buv6a8th0jk",{"type":20,"children":2149,"toc":2150},[],{"title":5,"searchDepth":119,"depth":119,"links":2151},[],"content:5.speaking:2019-02-26-clifq5gns3xhu0buv6a8th0jk.md","5.speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk.md",{"_path":1003,"_dir":1244,"_draft":6,"_partial":6,"_locale":5,"title":1002,"description":5,"conference":2155,"talk":2132,"location":2156,"date":2157,"id":2158,"link":1901,"body":2159,"_type":121,"_id":2163,"_source":123,"_file":2164,"_extension":125},"vuejs.amsterdam 2019","Amsterdam, The netherlands","2019-02-14","clifq5gzg40j20bw9ne2mh9n6",{"type":20,"children":2160,"toc":2161},[],{"title":5,"searchDepth":119,"depth":119,"links":2162},[],"content:5.speaking:2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md","5.speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6.md",1718484820660] \ No newline at end of file diff --git a/speaking/index.html b/speaking/index.html index 2a023b67..a3721e54 100644 --- a/speaking/index.html +++ b/speaking/index.html @@ -5,13 +5,13 @@ - - + + - + - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - -
Tim Benniks

Speaking

VUEJS AMSTERDAM 2023

Presskit

Looking for my bio, talk information or pictures? Go to the presskit page to find different varieties of my bio, headshots and past talks I have done. This page also includes slides and other info needed to add me as a speaker to your conference.

Emcee

Masters of ceremonies, commonly called emcees, offer a profound value at conferences. As a seasoned emcee, I usually start with an anecdote as introduction, followed by an in-depth Q&A session that truly features the speakers and their content. Over the past few years, my emcee gigs have been largely virtual. Starting 2022, however, I've also acted as emcee at in-person conferences, such as Vuejs Amsterdam.

Talks

- \ No newline at end of file + + + + +
Tim Benniks

Speaking

VUEJS AMSTERDAM 2023

Presskit

Looking for my bio, talk information or pictures? Go to the presskit page to find different varieties of my bio, headshots and past talks I have done. This page also includes slides and other info needed to add me as a speaker to your conference.

Emcee

Masters of ceremonies, commonly called emcees, offer a profound value at conferences. As a seasoned emcee, I usually start with an anecdote as introduction, followed by an in-depth Q&A session that truly features the speakers and their content. Over the past few years, my emcee gigs have been largely virtual. Starting 2022, however, I've also acted as emcee at in-person conferences, such as Vuejs Amsterdam.

Talks

+ \ No newline at end of file diff --git a/videos/_payload.json b/videos/_payload.json index 77c5c1b2..0931d2cd 100644 --- a/videos/_payload.json +++ b/videos/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1403},["Reactive",2],{"content-query-vSS3cqztgO":3,"content-navigation-8C37fagqQL":115,"content-query-yTTE63rKI9":1231,"content-query-nUNFAIhr5t":1268,"content-query-2wZXWvVFux":1302,"content-query-Qbi4JGsmLm":1336,"content-query-V5ks1ju3kz":1369},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":110,"_id":111,"_source":112,"_file":113,"_extension":114},"/videos","",false,"videos","videos desc",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":107},"root",[22,29,44,59,71,83,95],{"type":23,"tag":24,"props":25,"children":28},"element","title-block",{"tag":26,"title":27},"h1","Videos",[],{"type":23,"tag":30,"props":31,"children":32},"richtext",{},[33],{"type":23,"tag":34,"props":35,"children":36},"template",{"v-slot:body":5},[37],{"type":23,"tag":38,"props":39,"children":40},"p",{},[41],{"type":42,"value":43},"text","I made video in different categories. From personal videos to vlogs, to tutorials and work related videos. Lot's of stuff to explore here!",{"type":23,"tag":7,"props":45,"children":50},{":extras":46,":limit":47,":small":48,"folder":49},"true","3","false","tim",[51],{"type":23,"tag":34,"props":52,"children":53},{"v-slot:title":5},[54],{"type":23,"tag":38,"props":55,"children":56},{},[57],{"type":42,"value":58},"Personal Videos",{"type":23,"tag":7,"props":60,"children":62},{":extras":46,":limit":47,":small":48,"folder":61},"mp",[63],{"type":23,"tag":34,"props":64,"children":65},{"v-slot:title":5},[66],{"type":23,"tag":38,"props":67,"children":68},{},[69],{"type":42,"value":70},"Middleware Productions Videos",{"type":23,"tag":7,"props":72,"children":74},{":extras":46,":limit":47,":small":48,"folder":73},"hygraph",[75],{"type":23,"tag":34,"props":76,"children":77},{"v-slot:title":5},[78],{"type":23,"tag":38,"props":79,"children":80},{},[81],{"type":42,"value":82},"Hygraph Videos",{"type":23,"tag":7,"props":84,"children":86},{":extras":46,":limit":47,":small":48,"folder":85},"uniform",[87],{"type":23,"tag":34,"props":88,"children":89},{"v-slot:title":5},[90],{"type":23,"tag":38,"props":91,"children":92},{},[93],{"type":42,"value":94},"Uniform Videos",{"type":23,"tag":7,"props":96,"children":98},{":extras":46,":limit":47,":small":48,"folder":97},"headless-creator",[99],{"type":23,"tag":34,"props":100,"children":101},{"v-slot:title":5},[102],{"type":23,"tag":38,"props":103,"children":104},{},[105],{"type":42,"value":106},"Headless Creator Videos",{"title":5,"searchDepth":108,"depth":108,"links":109},2,[],"markdown","content:3.videos:index.md","content","3.videos/index.md","md",[116,119,909,986,1222,1225,1228],{"title":117,"_path":118},"About","/about",{"title":7,"_path":4,"children":120},[121,140,159,205,206,258,361,384,406,734],{"title":122,"_path":123,"children":124},"Alive And Kicking","/videos/alive-and-kicking",[125,128,131,134,137],{"title":126,"_path":127},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":129,"_path":130},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":132,"_path":133},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":135,"_path":136},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":138,"_path":139},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":141,"_path":142,"children":143},"Headless Creator","/videos/headless-creator",[144,147,150,153,156],{"title":145,"_path":146},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":148,"_path":149},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":151,"_path":152},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":154,"_path":155},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":157,"_path":158},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":160,"_path":161,"children":162},"Hygraph","/videos/hygraph",[163,166,169,172,175,178,181,184,187,190,193,196,199,202],{"title":164,"_path":165},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":167,"_path":168},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":170,"_path":171},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":173,"_path":174},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":176,"_path":177},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":179,"_path":180},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":182,"_path":183},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":185,"_path":186},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":188,"_path":189},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":191,"_path":192},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":194,"_path":195},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":197,"_path":198},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":200,"_path":201},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":203,"_path":204},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":7,"_path":4},{"title":207,"_path":208,"children":209},"Live Hygraph","/videos/live-hygraph",[210,213,216,219,222,225,228,231,234,237,240,243,246,249,252,255],{"title":211,"_path":212},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":214,"_path":215},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":217,"_path":218},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":220,"_path":221},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":223,"_path":224},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":226,"_path":227},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":229,"_path":230},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":232,"_path":233},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":235,"_path":236},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":238,"_path":239},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":241,"_path":242},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":244,"_path":245},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":247,"_path":248},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":250,"_path":251},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":253,"_path":254},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":256,"_path":257},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":259,"_path":260,"children":261},"Live Uniform","/videos/live-uniform",[262,265,268,271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358],{"title":263,"_path":264},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":266,"_path":267},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":269,"_path":270},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":272,"_path":273},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":275,"_path":276},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":278,"_path":279},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":281,"_path":282},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":284,"_path":285},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":287,"_path":288},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":290,"_path":291},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":293,"_path":294},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":296,"_path":297},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":299,"_path":300},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":302,"_path":303},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":305,"_path":306},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":308,"_path":309},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":311,"_path":312},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":314,"_path":315},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":317,"_path":318},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":320,"_path":321},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":323,"_path":324},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":326,"_path":327},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":329,"_path":330},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":332,"_path":333},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":335,"_path":336},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":338,"_path":339},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":341,"_path":342},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":344,"_path":345},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":347,"_path":348},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":350,"_path":351},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":353,"_path":354},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":356,"_path":357},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":359,"_path":360},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":362,"_path":363,"children":364},"Misc Streams","/videos/misc-streams",[365,368,371,374,376,378,381],{"title":366,"_path":367},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":369,"_path":370},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":372,"_path":373},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":356,"_path":375},"/videos/misc-streams/003-jvgiaotcerq",{"title":347,"_path":377},"/videos/misc-streams/004-ekut1koa2n8",{"title":379,"_path":380},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":382,"_path":383},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":385,"_path":386,"children":387},"Mp","/videos/mp",[388,391,394,397,400,403],{"title":389,"_path":390},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":392,"_path":393},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":395,"_path":396},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":398,"_path":399},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":401,"_path":402},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":404,"_path":405},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":407,"_path":408,"children":409},"Tim","/videos/tim",[410,412,415,418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,462,464,467,470,473,476,479,482,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731],{"title":129,"_path":411},"/videos/tim/000-mvq-_s20ndk",{"title":413,"_path":414},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":416,"_path":417},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":419,"_path":420},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":422,"_path":423},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":425,"_path":426},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":428,"_path":429},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":431,"_path":432},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":434,"_path":435},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":437,"_path":438},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":440,"_path":441},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":443,"_path":444},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":446,"_path":447},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":449,"_path":450},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":452,"_path":453},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":455,"_path":456},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":458,"_path":459},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":132,"_path":461},"/videos/tim/017-m0mrligs6i0",{"title":126,"_path":463},"/videos/tim/018-hhpitreyobi",{"title":465,"_path":466},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":468,"_path":469},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":471,"_path":472},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":474,"_path":475},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":477,"_path":478},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":480,"_path":481},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":483,"_path":484},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":486,"_path":487},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":489,"_path":490},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":492,"_path":493},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":495,"_path":496},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":498,"_path":499},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":501,"_path":502},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":504,"_path":505},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":507,"_path":508},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":510,"_path":511},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":513,"_path":514},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":516,"_path":517},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":519,"_path":520},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":522,"_path":523},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":525,"_path":526},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":528,"_path":529},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":531,"_path":532},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":534,"_path":535},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":537,"_path":538},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":540,"_path":541},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":543,"_path":544},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":546,"_path":547},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":549,"_path":550},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":552,"_path":553},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":555,"_path":556},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":558,"_path":559},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":561,"_path":562},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":564,"_path":565},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":567,"_path":568},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":570,"_path":571},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":573,"_path":574},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":576,"_path":577},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":579,"_path":580},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":582,"_path":583},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":585,"_path":586},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":588,"_path":589},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":591,"_path":592},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":594,"_path":595},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":597,"_path":598},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":600,"_path":601},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":603,"_path":604},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":606,"_path":607},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":609,"_path":610},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":612,"_path":613},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":615,"_path":616},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":618,"_path":619},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":621,"_path":622},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":624,"_path":625},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":627,"_path":628},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":630,"_path":631},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":633,"_path":634},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":636,"_path":637},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":639,"_path":640},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":642,"_path":643},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":645,"_path":646},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":648,"_path":649},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":651,"_path":652},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":654,"_path":655},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":657,"_path":658},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":660,"_path":661},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":663,"_path":664},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":666,"_path":667},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":669,"_path":670},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":672,"_path":673},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":675,"_path":676},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":678,"_path":679},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":681,"_path":682},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":684,"_path":685},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":687,"_path":688},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":690,"_path":691},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":693,"_path":694},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":696,"_path":697},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":699,"_path":700},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":702,"_path":703},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":705,"_path":706},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":708,"_path":709},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":711,"_path":712},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":714,"_path":715},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":717,"_path":718},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":720,"_path":721},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":723,"_path":724},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":726,"_path":727},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":729,"_path":730},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":732,"_path":733},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":735,"_path":736,"children":737},"Uniform","/videos/uniform",[738,741,744,747,750,753,756,759,762,765,768,771,774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906],{"title":739,"_path":740},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":742,"_path":743},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":745,"_path":746},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":748,"_path":749},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":751,"_path":752},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":754,"_path":755},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":757,"_path":758},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":760,"_path":761},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":763,"_path":764},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":766,"_path":767},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":769,"_path":770},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":772,"_path":773},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":775,"_path":776},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":778,"_path":779},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":781,"_path":782},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":784,"_path":785},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":787,"_path":788},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":790,"_path":791},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":793,"_path":794},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":796,"_path":797},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":799,"_path":800},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":802,"_path":803},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":805,"_path":806},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":808,"_path":809},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":811,"_path":812},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":814,"_path":815},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":817,"_path":818},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":820,"_path":821},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":823,"_path":824},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":826,"_path":827},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":829,"_path":830},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":832,"_path":833},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":835,"_path":836},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":838,"_path":839},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":841,"_path":842},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":844,"_path":845},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":847,"_path":848},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":850,"_path":851},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":853,"_path":854},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":856,"_path":857},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":859,"_path":860},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":862,"_path":863},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":865,"_path":866},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":868,"_path":869},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":871,"_path":872},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":874,"_path":875},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":877,"_path":878},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":880,"_path":881},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":883,"_path":884},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":886,"_path":887},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":889,"_path":890},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":892,"_path":893},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":895,"_path":896},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":898,"_path":899},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":901,"_path":902},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":904,"_path":905},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":907,"_path":908},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":910,"_path":911,"children":912},"Writing","/writing",[913,916,919,922,925,928,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983],{"title":914,"_path":915},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":917,"_path":918},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":920,"_path":921},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":923,"_path":924},"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":926,"_path":927},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":910,"_path":911},{"title":930,"_path":931},"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":933,"_path":934},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":936,"_path":937},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":939,"_path":940},"My Fitness Story","/writing/my-fitness-story",{"title":942,"_path":943},"New job alert!","/writing/new-job-alert",{"title":945,"_path":946},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":948,"_path":949},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":951,"_path":952},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":954,"_path":955},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":957,"_path":958},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":960,"_path":961},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":963,"_path":964},"The MACH monolith","/writing/the-mach-monolith",{"title":966,"_path":967},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":969,"_path":970},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":972,"_path":973},"This is headless 2.0","/writing/this-is-headless-20",{"title":975,"_path":976},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":978,"_path":979},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":981,"_path":982},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":984,"_path":985},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":987,"_path":988,"children":989},"Speaking","/speaking",[990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221],{"title":991,"_path":992},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":994,"_path":995},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":997,"_path":998},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1000,"_path":1001},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1003,"_path":1004},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1006,"_path":1007},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1009,"_path":1010},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1012,"_path":1013},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1015,"_path":1016},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1018,"_path":1019},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1021,"_path":1022},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1024,"_path":1025},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1027,"_path":1028},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1030,"_path":1031},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1033,"_path":1034},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1036,"_path":1037},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1039,"_path":1040},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1042,"_path":1043},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1045,"_path":1046},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1048,"_path":1049},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1051,"_path":1052},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1054,"_path":1055},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1057,"_path":1058},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1060,"_path":1061},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1063,"_path":1064},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1066,"_path":1067},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1069,"_path":1070},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1072,"_path":1073},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1075,"_path":1076},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1078,"_path":1079},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1081,"_path":1082},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1084,"_path":1085},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1087,"_path":1088},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1090,"_path":1091},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1093,"_path":1094},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1096,"_path":1097},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1099,"_path":1100},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1102,"_path":1103},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1105,"_path":1106},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1108,"_path":1109},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1111,"_path":1112},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1114,"_path":1115},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1117,"_path":1118},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1120,"_path":1121},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1123,"_path":1124},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1126,"_path":1127},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1129,"_path":1130},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1132,"_path":1133},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1135,"_path":1136},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1138,"_path":1139},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1141,"_path":1142},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1144,"_path":1145},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1147,"_path":1148},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1150,"_path":1151},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1153,"_path":1154},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1156,"_path":1157},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1159,"_path":1160},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1162,"_path":1163},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1165,"_path":1166},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1168,"_path":1169},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1171,"_path":1172},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1174,"_path":1175},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1177,"_path":1178},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1180,"_path":1181},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1183,"_path":1184},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1186,"_path":1187},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1189,"_path":1190},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1192,"_path":1193},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1195,"_path":1196},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1198,"_path":1199},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1201,"_path":1202},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1204,"_path":1205},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1207,"_path":1208},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1210,"_path":1211},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1213,"_path":1214},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1216,"_path":1217},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1219,"_path":1220},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":987,"_path":988},{"title":1223,"_path":1224},"live streams","/livestreams",{"title":1226,"_path":1227},"press kit","/presskit",{"title":1229,"_path":1230},"alive and kicking","/alive-and-kicking",[1232,1244,1256],{"_path":390,"_dir":61,"_draft":6,"_partial":6,"_locale":5,"title":389,"description":1233,"date":1234,"position":1235,"image":1236,"videoId":1237,"body":1238,"_type":110,"_id":1242,"_source":112,"_file":1243,"_extension":114},"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2024-03-01T11:20:13Z","000","https://i.ytimg.com/vi/ubGZoaWMqLw/maxresdefault.jpg","ubGZoaWMqLw",{"type":20,"children":1239,"toc":1240},[],{"title":5,"searchDepth":108,"depth":108,"links":1241},[],"content:3.videos:mp:000-ubGZoaWMqLw.md","3.videos/mp/000-ubGZoaWMqLw.md",{"_path":393,"_dir":61,"_draft":6,"_partial":6,"_locale":5,"title":392,"description":1245,"date":1246,"position":1247,"image":1248,"videoId":1249,"body":1250,"_type":110,"_id":1254,"_source":112,"_file":1255,"_extension":114},"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2023-02-13T08:34:01Z","001","https://i.ytimg.com/vi/zX6_Fi0sDMY/maxresdefault.jpg","zX6_Fi0sDMY",{"type":20,"children":1251,"toc":1252},[],{"title":5,"searchDepth":108,"depth":108,"links":1253},[],"content:3.videos:mp:001-zX6_Fi0sDMY.md","3.videos/mp/001-zX6_Fi0sDMY.md",{"_path":396,"_dir":61,"_draft":6,"_partial":6,"_locale":5,"title":395,"description":1257,"date":1258,"position":1259,"image":1260,"videoId":1261,"body":1262,"_type":110,"_id":1266,"_source":112,"_file":1267,"_extension":114},"Marc and Tim explored backstage at the JSWorld conference, one of the biggest JS conferences in the world. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video-edit, and sound-edit, and publish the video on the day. Film in the morning, show in the afternoon.","2023-02-13T08:19:14Z","002","https://i.ytimg.com/vi/D4RaI10P9m4/maxresdefault.jpg","D4RaI10P9m4",{"type":20,"children":1263,"toc":1264},[],{"title":5,"searchDepth":108,"depth":108,"links":1265},[],"content:3.videos:mp:002-D4RaI10P9m4.md","3.videos/mp/002-D4RaI10P9m4.md",[1269,1280,1291],{"_path":146,"_dir":97,"_draft":6,"_partial":6,"_locale":5,"title":145,"description":1270,"date":1271,"position":1235,"image":1272,"videoId":1273,"body":1274,"_type":110,"_id":1278,"_source":112,"_file":1279,"_extension":114},"With the history and the basics of creating DXP out of the way, in this lesson we focus on how to transition from the Digital Experience Platform to Digital Experience Composition Platform. DXCP helps you to orchestrate all sources in your ecosystem to communicate in a loosely coupled fashion while enabling content editors to make important experience composition decisions without the involvement of developers. No-code editing, universal preview across headless sources and personalization are a few of the features DXCP offers while leaving developers free to choose how they architect their code.\n\n0:00 - Intro\n1:14 - What is the difference between DXP and DXCP?\n2: 33 - DXP Architecture\n5:49 - DXCP Architecture\n7:34 - DXCP in one Sentence\n9:06 - What a DXCP is not...\n11:29 - So what is DXCP?\n15:54 - Domain Data vs Design Data\n22:01 - Conclusion\n22:44 - Terminology Recap\n24:28 - End\n\n========================================\nUniform\nhttps://uniform.dev/\n\nComposable Orchestration with Uniform Bootcamp\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp\n\nLiked what you saw? Why not register for a Free Account to discover all the free courses on Headless Creator.\nhttps://www.headlesscreator.com/\n\nSign up for our newsletter that focuses on everything Headless CMS and delivered directly to your inbox.\nhttps://www.headlesscreator.com/subscribe-to-our-newsletter\n========================================","2023-01-12T16:30:40Z","https://i.ytimg.com/vi/m8On6ZKr7Q4/maxresdefault.jpg","m8On6ZKr7Q4",{"type":20,"children":1275,"toc":1276},[],{"title":5,"searchDepth":108,"depth":108,"links":1277},[],"content:3.videos:headless-creator:000-m8On6ZKr7Q4.md","3.videos/headless-creator/000-m8On6ZKr7Q4.md",{"_path":149,"_dir":97,"_draft":6,"_partial":6,"_locale":5,"title":148,"description":1281,"date":1282,"position":1247,"image":1283,"videoId":1284,"body":1285,"_type":110,"_id":1289,"_source":112,"_file":1290,"_extension":114},"In this lesson, you're going to learn what the DXP tech stack is, why Jamstack is the way to go for modern architectures, what API first is plus much more.\n\nTo watch the entire lesson, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-03-18T15:58:51Z","https://i.ytimg.com/vi/sMBq8aoa4JM/maxresdefault.jpg","sMBq8aoa4JM",{"type":20,"children":1286,"toc":1287},[],{"title":5,"searchDepth":108,"depth":108,"links":1288},[],"content:3.videos:headless-creator:001-sMBq8aoa4JM.md","3.videos/headless-creator/001-sMBq8aoa4JM.md",{"_path":152,"_dir":97,"_draft":6,"_partial":6,"_locale":5,"title":151,"description":1292,"date":1293,"position":1259,"image":1294,"videoId":1295,"body":1296,"_type":110,"_id":1300,"_source":112,"_file":1301,"_extension":114},"In this lesson, we are going to learn what \"concerns\" are and how to keep them separate in a Composable DXP platform. We'll cover design and layout, how to keep those out of a CMS, how to isolate logic and an introduction to content modeling that focuses on content and not design.\n\nTo watch the entire less, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-03-04T16:45:54Z","https://i.ytimg.com/vi/sX5fBtcnRSg/maxresdefault.jpg","sX5fBtcnRSg",{"type":20,"children":1297,"toc":1298},[],{"title":5,"searchDepth":108,"depth":108,"links":1299},[],"content:3.videos:headless-creator:002-sX5fBtcnRSg.md","3.videos/headless-creator/002-sX5fBtcnRSg.md",[1303,1314,1325],{"_path":165,"_dir":73,"_draft":6,"_partial":6,"_locale":5,"title":164,"description":1304,"date":1305,"position":1235,"image":1306,"videoId":1307,"body":1308,"_type":110,"_id":1312,"_source":112,"_file":1313,"_extension":114},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to NuxtJS.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nuxtjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:34Z","https://i.ytimg.com/vi/M8QFTViZSMw/maxresdefault.jpg","M8QFTViZSMw",{"type":20,"children":1309,"toc":1310},[],{"title":5,"searchDepth":108,"depth":108,"links":1311},[],"content:3.videos:hygraph:000-M8QFTViZSMw.md","3.videos/hygraph/000-M8QFTViZSMw.md",{"_path":168,"_dir":73,"_draft":6,"_partial":6,"_locale":5,"title":167,"description":1315,"date":1316,"position":1247,"image":1317,"videoId":1318,"body":1319,"_type":110,"_id":1323,"_source":112,"_file":1324,"_extension":114},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to Astro.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/astro\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:28Z","https://i.ytimg.com/vi/AAHu9X5WAjY/maxresdefault.jpg","AAHu9X5WAjY",{"type":20,"children":1320,"toc":1321},[],{"title":5,"searchDepth":108,"depth":108,"links":1322},[],"content:3.videos:hygraph:001-AAHu9X5WAjY.md","3.videos/hygraph/001-AAHu9X5WAjY.md",{"_path":171,"_dir":73,"_draft":6,"_partial":6,"_locale":5,"title":170,"description":1326,"date":1327,"position":1259,"image":1328,"videoId":1329,"body":1330,"_type":110,"_id":1334,"_source":112,"_file":1335,"_extension":114},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to #Nextjs.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nFull implementation guide: https://hygraph.com/docs/implementations/next/next\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nextjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:22Z","https://i.ytimg.com/vi/fkSW0BFbtdo/maxresdefault.jpg","fkSW0BFbtdo",{"type":20,"children":1331,"toc":1332},[],{"title":5,"searchDepth":108,"depth":108,"links":1333},[],"content:3.videos:hygraph:002-fkSW0BFbtdo.md","3.videos/hygraph/002-fkSW0BFbtdo.md",[1337,1348,1359],{"_path":740,"_dir":85,"_draft":6,"_partial":6,"_locale":5,"title":739,"description":1338,"date":1339,"position":1235,"image":1340,"videoId":1341,"body":1342,"_type":110,"_id":1346,"_source":112,"_file":1347,"_extension":114},"This is Uniform DXCP: composability with Headless 2.0","2023-07-20T07:53:52Z","https://i.ytimg.com/vi/sF8TCV5t9PA/maxresdefault.jpg","sF8TCV5t9PA",{"type":20,"children":1343,"toc":1344},[],{"title":5,"searchDepth":108,"depth":108,"links":1345},[],"content:3.videos:uniform:000-sF8TCV5t9PA.md","3.videos/uniform/000-sF8TCV5t9PA.md",{"_path":743,"_dir":85,"_draft":6,"_partial":6,"_locale":5,"title":742,"description":1349,"date":1350,"position":1247,"image":1351,"videoId":1352,"body":1353,"_type":110,"_id":1357,"_source":112,"_file":1358,"_extension":114},"Learn more at https://uniform.dev","2023-07-20T07:53:58Z","https://i.ytimg.com/vi/VkJWIqlM6_w/maxresdefault.jpg","VkJWIqlM6_w",{"type":20,"children":1354,"toc":1355},[],{"title":5,"searchDepth":108,"depth":108,"links":1356},[],"content:3.videos:uniform:001-VkJWIqlM6_w.md","3.videos/uniform/001-VkJWIqlM6_w.md",{"_path":746,"_dir":85,"_draft":6,"_partial":6,"_locale":5,"title":745,"description":1349,"date":1360,"position":1259,"image":1361,"videoId":1362,"body":1363,"_type":110,"_id":1367,"_source":112,"_file":1368,"_extension":114},"2023-07-20T07:54:06Z","https://i.ytimg.com/vi/nDrAbg4x6yA/maxresdefault.jpg","nDrAbg4x6yA",{"type":20,"children":1364,"toc":1365},[],{"title":5,"searchDepth":108,"depth":108,"links":1366},[],"content:3.videos:uniform:002-nDrAbg4x6yA.md","3.videos/uniform/002-nDrAbg4x6yA.md",[1370,1381,1392],{"_path":411,"_dir":49,"_draft":6,"_partial":6,"_locale":5,"title":129,"description":1371,"date":1372,"position":1235,"image":1373,"videoId":1374,"body":1375,"_type":110,"_id":1379,"_source":112,"_file":1380,"_extension":114},"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-10T07:13:06Z","https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","mvq-_s20NDk",{"type":20,"children":1376,"toc":1377},[],{"title":5,"searchDepth":108,"depth":108,"links":1378},[],"content:3.videos:tim:000-mvq-_s20NDk.md","3.videos/tim/000-mvq-_s20NDk.md",{"_path":414,"_dir":49,"_draft":6,"_partial":6,"_locale":5,"title":413,"description":1382,"date":1383,"position":1247,"image":1384,"videoId":1385,"body":1386,"_type":110,"_id":1390,"_source":112,"_file":1391,"_extension":114},"Jake Ward, the co-founder and CEO of Data Protocol, and I discuss the current state of developer advocacy in 2024 and share insights on how dev rel teams can measure their impact.\n\nFollow Jake here:\nhttps://twitter.com/Jacobmward\nhttps://dataprotocol.com\nhttps://www.linkedin.com/in/jacobmward/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://linkedin.com/in/timbenniks","2024-04-15T13:00:24Z","https://i.ytimg.com/vi/VEX0KtITib4/maxresdefault.jpg","VEX0KtITib4",{"type":20,"children":1387,"toc":1388},[],{"title":5,"searchDepth":108,"depth":108,"links":1389},[],"content:3.videos:tim:001-VEX0KtITib4.md","3.videos/tim/001-VEX0KtITib4.md",{"_path":417,"_dir":49,"_draft":6,"_partial":6,"_locale":5,"title":416,"description":1393,"date":1394,"position":1259,"image":1395,"videoId":1396,"body":1397,"_type":110,"_id":1401,"_source":112,"_file":1402,"_extension":114},"Developer relations is having a bit of a rough time right now and in this video I explain my vision on how to succeed in 2024. \n\nTL/DR: focus on developer success while they are on your platform. Set up KPIs that measure their success, so you can show impact on the potential revenue these developers might bring. \n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nLinkedIn: https://linkedin.com/in/timbenniks\nGithub: https://github.com/timbenniks","2024-04-05T06:50:24Z","https://i.ytimg.com/vi/196iQP-lHLw/maxresdefault.jpg","196iQP-lHLw",{"type":20,"children":1398,"toc":1399},[],{"title":5,"searchDepth":108,"depth":108,"links":1400},[],"content:3.videos:tim:002-196iQP-lHLw.md","3.videos/tim/002-196iQP-lHLw.md",1718484377983] \ No newline at end of file +[{"data":1,"prerenderedAt":1403},["Reactive",2],{"content-query-vSS3cqztgO":3,"content-navigation-8C37fagqQL":115,"content-query-yTTE63rKI9":1231,"content-query-nUNFAIhr5t":1268,"content-query-2wZXWvVFux":1302,"content-query-Qbi4JGsmLm":1336,"content-query-V5ks1ju3kz":1369},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":110,"_id":111,"_source":112,"_file":113,"_extension":114},"/videos","",false,"Videos","An overview of my videos",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":107},"root",[22,28,43,59,71,83,95],{"type":23,"tag":24,"props":25,"children":27},"element","title-block",{"tag":26,"title":7},"h1",[],{"type":23,"tag":29,"props":30,"children":31},"richtext",{},[32],{"type":23,"tag":33,"props":34,"children":35},"template",{"v-slot:body":5},[36],{"type":23,"tag":37,"props":38,"children":39},"p",{},[40],{"type":41,"value":42},"text","I make videos in different categories, from personal videos to vlogs to tutorials and work-related videos. There is a lot to explore here!",{"type":23,"tag":44,"props":45,"children":50},"videos",{":extras":46,":limit":47,":small":48,"folder":49},"true","3","false","tim",[51],{"type":23,"tag":33,"props":52,"children":53},{"v-slot:title":5},[54],{"type":23,"tag":37,"props":55,"children":56},{},[57],{"type":41,"value":58},"Personal Videos",{"type":23,"tag":44,"props":60,"children":62},{":extras":46,":limit":47,":small":48,"folder":61},"mp",[63],{"type":23,"tag":33,"props":64,"children":65},{"v-slot:title":5},[66],{"type":23,"tag":37,"props":67,"children":68},{},[69],{"type":41,"value":70},"Middleware Productions Videos",{"type":23,"tag":44,"props":72,"children":74},{":extras":46,":limit":47,":small":48,"folder":73},"hygraph",[75],{"type":23,"tag":33,"props":76,"children":77},{"v-slot:title":5},[78],{"type":23,"tag":37,"props":79,"children":80},{},[81],{"type":41,"value":82},"Hygraph Videos",{"type":23,"tag":44,"props":84,"children":86},{":extras":46,":limit":47,":small":48,"folder":85},"uniform",[87],{"type":23,"tag":33,"props":88,"children":89},{"v-slot:title":5},[90],{"type":23,"tag":37,"props":91,"children":92},{},[93],{"type":41,"value":94},"Uniform Videos",{"type":23,"tag":44,"props":96,"children":98},{":extras":46,":limit":47,":small":48,"folder":97},"headless-creator",[99],{"type":23,"tag":33,"props":100,"children":101},{"v-slot:title":5},[102],{"type":23,"tag":37,"props":103,"children":104},{},[105],{"type":41,"value":106},"Headless Creator Videos",{"title":5,"searchDepth":108,"depth":108,"links":109},2,[],"markdown","content:3.videos:index.md","content","3.videos/index.md","md",[116,119,909,986,1222,1225,1228],{"title":117,"_path":118},"About Tim","/about",{"title":7,"_path":4,"children":120},[121,140,159,205,206,258,361,384,406,734],{"title":122,"_path":123,"children":124},"Alive And Kicking","/videos/alive-and-kicking",[125,128,131,134,137],{"title":126,"_path":127},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":129,"_path":130},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":132,"_path":133},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":135,"_path":136},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":138,"_path":139},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":141,"_path":142,"children":143},"Headless Creator","/videos/headless-creator",[144,147,150,153,156],{"title":145,"_path":146},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":148,"_path":149},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":151,"_path":152},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":154,"_path":155},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":157,"_path":158},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":160,"_path":161,"children":162},"Hygraph","/videos/hygraph",[163,166,169,172,175,178,181,184,187,190,193,196,199,202],{"title":164,"_path":165},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":167,"_path":168},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":170,"_path":171},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":173,"_path":174},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":176,"_path":177},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":179,"_path":180},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":182,"_path":183},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":185,"_path":186},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":188,"_path":189},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":191,"_path":192},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":194,"_path":195},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":197,"_path":198},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":200,"_path":201},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":203,"_path":204},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":7,"_path":4},{"title":207,"_path":208,"children":209},"Live Hygraph","/videos/live-hygraph",[210,213,216,219,222,225,228,231,234,237,240,243,246,249,252,255],{"title":211,"_path":212},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":214,"_path":215},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":217,"_path":218},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":220,"_path":221},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":223,"_path":224},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":226,"_path":227},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":229,"_path":230},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":232,"_path":233},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":235,"_path":236},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":238,"_path":239},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":241,"_path":242},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":244,"_path":245},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":247,"_path":248},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":250,"_path":251},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":253,"_path":254},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":256,"_path":257},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":259,"_path":260,"children":261},"Live Uniform","/videos/live-uniform",[262,265,268,271,274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358],{"title":263,"_path":264},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":266,"_path":267},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":269,"_path":270},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":272,"_path":273},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":275,"_path":276},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":278,"_path":279},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":281,"_path":282},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":284,"_path":285},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":287,"_path":288},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":290,"_path":291},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":293,"_path":294},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":296,"_path":297},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":299,"_path":300},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":302,"_path":303},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":305,"_path":306},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":308,"_path":309},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":311,"_path":312},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":314,"_path":315},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":317,"_path":318},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":320,"_path":321},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":323,"_path":324},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":326,"_path":327},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":329,"_path":330},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":332,"_path":333},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":335,"_path":336},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":338,"_path":339},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":341,"_path":342},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":344,"_path":345},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":347,"_path":348},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":350,"_path":351},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":353,"_path":354},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":356,"_path":357},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":359,"_path":360},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":362,"_path":363,"children":364},"Misc Streams","/videos/misc-streams",[365,368,371,374,376,378,381],{"title":366,"_path":367},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":369,"_path":370},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":372,"_path":373},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":356,"_path":375},"/videos/misc-streams/003-jvgiaotcerq",{"title":347,"_path":377},"/videos/misc-streams/004-ekut1koa2n8",{"title":379,"_path":380},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":382,"_path":383},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":385,"_path":386,"children":387},"Mp","/videos/mp",[388,391,394,397,400,403],{"title":389,"_path":390},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":392,"_path":393},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":395,"_path":396},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":398,"_path":399},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":401,"_path":402},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":404,"_path":405},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":407,"_path":408,"children":409},"Tim","/videos/tim",[410,412,415,418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,462,464,467,470,473,476,479,482,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731],{"title":129,"_path":411},"/videos/tim/000-mvq-_s20ndk",{"title":413,"_path":414},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":416,"_path":417},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":419,"_path":420},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":422,"_path":423},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":425,"_path":426},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":428,"_path":429},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":431,"_path":432},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":434,"_path":435},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":437,"_path":438},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":440,"_path":441},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":443,"_path":444},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":446,"_path":447},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":449,"_path":450},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":452,"_path":453},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":455,"_path":456},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":458,"_path":459},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":132,"_path":461},"/videos/tim/017-m0mrligs6i0",{"title":126,"_path":463},"/videos/tim/018-hhpitreyobi",{"title":465,"_path":466},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":468,"_path":469},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":471,"_path":472},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":474,"_path":475},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":477,"_path":478},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":480,"_path":481},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":483,"_path":484},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":486,"_path":487},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":489,"_path":490},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":492,"_path":493},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":495,"_path":496},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":498,"_path":499},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":501,"_path":502},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":504,"_path":505},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":507,"_path":508},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":510,"_path":511},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":513,"_path":514},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":516,"_path":517},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":519,"_path":520},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":522,"_path":523},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":525,"_path":526},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":528,"_path":529},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":531,"_path":532},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":534,"_path":535},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":537,"_path":538},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":540,"_path":541},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":543,"_path":544},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":546,"_path":547},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":549,"_path":550},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":552,"_path":553},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":555,"_path":556},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":558,"_path":559},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":561,"_path":562},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":564,"_path":565},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":567,"_path":568},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":570,"_path":571},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":573,"_path":574},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":576,"_path":577},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":579,"_path":580},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":582,"_path":583},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":585,"_path":586},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":588,"_path":589},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":591,"_path":592},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":594,"_path":595},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":597,"_path":598},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":600,"_path":601},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":603,"_path":604},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":606,"_path":607},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":609,"_path":610},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":612,"_path":613},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":615,"_path":616},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":618,"_path":619},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":621,"_path":622},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":624,"_path":625},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":627,"_path":628},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":630,"_path":631},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":633,"_path":634},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":636,"_path":637},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":639,"_path":640},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":642,"_path":643},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":645,"_path":646},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":648,"_path":649},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":651,"_path":652},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":654,"_path":655},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":657,"_path":658},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":660,"_path":661},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":663,"_path":664},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":666,"_path":667},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":669,"_path":670},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":672,"_path":673},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":675,"_path":676},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":678,"_path":679},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":681,"_path":682},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":684,"_path":685},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":687,"_path":688},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":690,"_path":691},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":693,"_path":694},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":696,"_path":697},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":699,"_path":700},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":702,"_path":703},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":705,"_path":706},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":708,"_path":709},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":711,"_path":712},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":714,"_path":715},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":717,"_path":718},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":720,"_path":721},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":723,"_path":724},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":726,"_path":727},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":729,"_path":730},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":732,"_path":733},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":735,"_path":736,"children":737},"Uniform","/videos/uniform",[738,741,744,747,750,753,756,759,762,765,768,771,774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906],{"title":739,"_path":740},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":742,"_path":743},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":745,"_path":746},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":748,"_path":749},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":751,"_path":752},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":754,"_path":755},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":757,"_path":758},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":760,"_path":761},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":763,"_path":764},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":766,"_path":767},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":769,"_path":770},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":772,"_path":773},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":775,"_path":776},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":778,"_path":779},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":781,"_path":782},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":784,"_path":785},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":787,"_path":788},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":790,"_path":791},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":793,"_path":794},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":796,"_path":797},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":799,"_path":800},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":802,"_path":803},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":805,"_path":806},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":808,"_path":809},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":811,"_path":812},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":814,"_path":815},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":817,"_path":818},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":820,"_path":821},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":823,"_path":824},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":826,"_path":827},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":829,"_path":830},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":832,"_path":833},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":835,"_path":836},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":838,"_path":839},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":841,"_path":842},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":844,"_path":845},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":847,"_path":848},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":850,"_path":851},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":853,"_path":854},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":856,"_path":857},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":859,"_path":860},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":862,"_path":863},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":865,"_path":866},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":868,"_path":869},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":871,"_path":872},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":874,"_path":875},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":877,"_path":878},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":880,"_path":881},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":883,"_path":884},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":886,"_path":887},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":889,"_path":890},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":892,"_path":893},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":895,"_path":896},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":898,"_path":899},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":901,"_path":902},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":904,"_path":905},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":907,"_path":908},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":910,"_path":911,"children":912},"Writing","/writing",[913,916,919,922,925,928,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983],{"title":914,"_path":915},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":917,"_path":918},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":920,"_path":921},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":923,"_path":924},"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":926,"_path":927},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":910,"_path":911},{"title":930,"_path":931},"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":933,"_path":934},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":936,"_path":937},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":939,"_path":940},"My Fitness Story","/writing/my-fitness-story",{"title":942,"_path":943},"New job alert!","/writing/new-job-alert",{"title":945,"_path":946},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":948,"_path":949},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":951,"_path":952},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":954,"_path":955},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":957,"_path":958},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":960,"_path":961},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":963,"_path":964},"The MACH monolith","/writing/the-mach-monolith",{"title":966,"_path":967},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":969,"_path":970},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":972,"_path":973},"This is headless 2.0","/writing/this-is-headless-20",{"title":975,"_path":976},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":978,"_path":979},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":981,"_path":982},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":984,"_path":985},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":987,"_path":988,"children":989},"Speaking","/speaking",[990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221],{"title":991,"_path":992},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":994,"_path":995},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":997,"_path":998},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1000,"_path":1001},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1003,"_path":1004},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1006,"_path":1007},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1009,"_path":1010},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1012,"_path":1013},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1015,"_path":1016},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1018,"_path":1019},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1021,"_path":1022},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1024,"_path":1025},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1027,"_path":1028},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1030,"_path":1031},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1033,"_path":1034},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1036,"_path":1037},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1039,"_path":1040},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1042,"_path":1043},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1045,"_path":1046},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1048,"_path":1049},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1051,"_path":1052},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1054,"_path":1055},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1057,"_path":1058},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1060,"_path":1061},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1063,"_path":1064},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1066,"_path":1067},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1069,"_path":1070},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1072,"_path":1073},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1075,"_path":1076},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1078,"_path":1079},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1081,"_path":1082},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1084,"_path":1085},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1087,"_path":1088},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1090,"_path":1091},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1093,"_path":1094},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1096,"_path":1097},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1099,"_path":1100},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1102,"_path":1103},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1105,"_path":1106},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1108,"_path":1109},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1111,"_path":1112},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1114,"_path":1115},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1117,"_path":1118},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1120,"_path":1121},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1123,"_path":1124},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1126,"_path":1127},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1129,"_path":1130},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1132,"_path":1133},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1135,"_path":1136},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1138,"_path":1139},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1141,"_path":1142},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1144,"_path":1145},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1147,"_path":1148},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1150,"_path":1151},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1153,"_path":1154},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1156,"_path":1157},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1159,"_path":1160},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1162,"_path":1163},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1165,"_path":1166},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1168,"_path":1169},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1171,"_path":1172},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1174,"_path":1175},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1177,"_path":1178},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1180,"_path":1181},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1183,"_path":1184},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1186,"_path":1187},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1189,"_path":1190},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1192,"_path":1193},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1195,"_path":1196},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1198,"_path":1199},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1201,"_path":1202},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1204,"_path":1205},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1207,"_path":1208},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1210,"_path":1211},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1213,"_path":1214},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1216,"_path":1217},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1219,"_path":1220},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":987,"_path":988},{"title":1223,"_path":1224},"live streams","/livestreams",{"title":1226,"_path":1227},"Press kit","/presskit",{"title":1229,"_path":1230},"Alive and kicking","/alive-and-kicking",[1232,1244,1256],{"_path":390,"_dir":61,"_draft":6,"_partial":6,"_locale":5,"title":389,"description":1233,"date":1234,"position":1235,"image":1236,"videoId":1237,"body":1238,"_type":110,"_id":1242,"_source":112,"_file":1243,"_extension":114},"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2024-03-01T11:20:13Z","000","https://i.ytimg.com/vi/ubGZoaWMqLw/maxresdefault.jpg","ubGZoaWMqLw",{"type":20,"children":1239,"toc":1240},[],{"title":5,"searchDepth":108,"depth":108,"links":1241},[],"content:3.videos:mp:000-ubGZoaWMqLw.md","3.videos/mp/000-ubGZoaWMqLw.md",{"_path":393,"_dir":61,"_draft":6,"_partial":6,"_locale":5,"title":392,"description":1245,"date":1246,"position":1247,"image":1248,"videoId":1249,"body":1250,"_type":110,"_id":1254,"_source":112,"_file":1255,"_extension":114},"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2023-02-13T08:34:01Z","001","https://i.ytimg.com/vi/zX6_Fi0sDMY/maxresdefault.jpg","zX6_Fi0sDMY",{"type":20,"children":1251,"toc":1252},[],{"title":5,"searchDepth":108,"depth":108,"links":1253},[],"content:3.videos:mp:001-zX6_Fi0sDMY.md","3.videos/mp/001-zX6_Fi0sDMY.md",{"_path":396,"_dir":61,"_draft":6,"_partial":6,"_locale":5,"title":395,"description":1257,"date":1258,"position":1259,"image":1260,"videoId":1261,"body":1262,"_type":110,"_id":1266,"_source":112,"_file":1267,"_extension":114},"Marc and Tim explored backstage at the JSWorld conference, one of the biggest JS conferences in the world. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video-edit, and sound-edit, and publish the video on the day. Film in the morning, show in the afternoon.","2023-02-13T08:19:14Z","002","https://i.ytimg.com/vi/D4RaI10P9m4/maxresdefault.jpg","D4RaI10P9m4",{"type":20,"children":1263,"toc":1264},[],{"title":5,"searchDepth":108,"depth":108,"links":1265},[],"content:3.videos:mp:002-D4RaI10P9m4.md","3.videos/mp/002-D4RaI10P9m4.md",[1269,1280,1291],{"_path":146,"_dir":97,"_draft":6,"_partial":6,"_locale":5,"title":145,"description":1270,"date":1271,"position":1235,"image":1272,"videoId":1273,"body":1274,"_type":110,"_id":1278,"_source":112,"_file":1279,"_extension":114},"With the history and the basics of creating DXP out of the way, in this lesson we focus on how to transition from the Digital Experience Platform to Digital Experience Composition Platform. DXCP helps you to orchestrate all sources in your ecosystem to communicate in a loosely coupled fashion while enabling content editors to make important experience composition decisions without the involvement of developers. No-code editing, universal preview across headless sources and personalization are a few of the features DXCP offers while leaving developers free to choose how they architect their code.\n\n0:00 - Intro\n1:14 - What is the difference between DXP and DXCP?\n2: 33 - DXP Architecture\n5:49 - DXCP Architecture\n7:34 - DXCP in one Sentence\n9:06 - What a DXCP is not...\n11:29 - So what is DXCP?\n15:54 - Domain Data vs Design Data\n22:01 - Conclusion\n22:44 - Terminology Recap\n24:28 - End\n\n========================================\nUniform\nhttps://uniform.dev/\n\nComposable Orchestration with Uniform Bootcamp\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp\n\nLiked what you saw? Why not register for a Free Account to discover all the free courses on Headless Creator.\nhttps://www.headlesscreator.com/\n\nSign up for our newsletter that focuses on everything Headless CMS and delivered directly to your inbox.\nhttps://www.headlesscreator.com/subscribe-to-our-newsletter\n========================================","2023-01-12T16:30:40Z","https://i.ytimg.com/vi/m8On6ZKr7Q4/maxresdefault.jpg","m8On6ZKr7Q4",{"type":20,"children":1275,"toc":1276},[],{"title":5,"searchDepth":108,"depth":108,"links":1277},[],"content:3.videos:headless-creator:000-m8On6ZKr7Q4.md","3.videos/headless-creator/000-m8On6ZKr7Q4.md",{"_path":149,"_dir":97,"_draft":6,"_partial":6,"_locale":5,"title":148,"description":1281,"date":1282,"position":1247,"image":1283,"videoId":1284,"body":1285,"_type":110,"_id":1289,"_source":112,"_file":1290,"_extension":114},"In this lesson, you're going to learn what the DXP tech stack is, why Jamstack is the way to go for modern architectures, what API first is plus much more.\n\nTo watch the entire lesson, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-03-18T15:58:51Z","https://i.ytimg.com/vi/sMBq8aoa4JM/maxresdefault.jpg","sMBq8aoa4JM",{"type":20,"children":1286,"toc":1287},[],{"title":5,"searchDepth":108,"depth":108,"links":1288},[],"content:3.videos:headless-creator:001-sMBq8aoa4JM.md","3.videos/headless-creator/001-sMBq8aoa4JM.md",{"_path":152,"_dir":97,"_draft":6,"_partial":6,"_locale":5,"title":151,"description":1292,"date":1293,"position":1259,"image":1294,"videoId":1295,"body":1296,"_type":110,"_id":1300,"_source":112,"_file":1301,"_extension":114},"In this lesson, we are going to learn what \"concerns\" are and how to keep them separate in a Composable DXP platform. We'll cover design and layout, how to keep those out of a CMS, how to isolate logic and an introduction to content modeling that focuses on content and not design.\n\nTo watch the entire less, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-03-04T16:45:54Z","https://i.ytimg.com/vi/sX5fBtcnRSg/maxresdefault.jpg","sX5fBtcnRSg",{"type":20,"children":1297,"toc":1298},[],{"title":5,"searchDepth":108,"depth":108,"links":1299},[],"content:3.videos:headless-creator:002-sX5fBtcnRSg.md","3.videos/headless-creator/002-sX5fBtcnRSg.md",[1303,1314,1325],{"_path":165,"_dir":73,"_draft":6,"_partial":6,"_locale":5,"title":164,"description":1304,"date":1305,"position":1235,"image":1306,"videoId":1307,"body":1308,"_type":110,"_id":1312,"_source":112,"_file":1313,"_extension":114},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to NuxtJS.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nuxtjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:34Z","https://i.ytimg.com/vi/M8QFTViZSMw/maxresdefault.jpg","M8QFTViZSMw",{"type":20,"children":1309,"toc":1310},[],{"title":5,"searchDepth":108,"depth":108,"links":1311},[],"content:3.videos:hygraph:000-M8QFTViZSMw.md","3.videos/hygraph/000-M8QFTViZSMw.md",{"_path":168,"_dir":73,"_draft":6,"_partial":6,"_locale":5,"title":167,"description":1315,"date":1316,"position":1247,"image":1317,"videoId":1318,"body":1319,"_type":110,"_id":1323,"_source":112,"_file":1324,"_extension":114},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to Astro.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/astro\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:28Z","https://i.ytimg.com/vi/AAHu9X5WAjY/maxresdefault.jpg","AAHu9X5WAjY",{"type":20,"children":1320,"toc":1321},[],{"title":5,"searchDepth":108,"depth":108,"links":1322},[],"content:3.videos:hygraph:001-AAHu9X5WAjY.md","3.videos/hygraph/001-AAHu9X5WAjY.md",{"_path":171,"_dir":73,"_draft":6,"_partial":6,"_locale":5,"title":170,"description":1326,"date":1327,"position":1259,"image":1328,"videoId":1329,"body":1330,"_type":110,"_id":1334,"_source":112,"_file":1335,"_extension":114},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to #Nextjs.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nFull implementation guide: https://hygraph.com/docs/implementations/next/next\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nextjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:22Z","https://i.ytimg.com/vi/fkSW0BFbtdo/maxresdefault.jpg","fkSW0BFbtdo",{"type":20,"children":1331,"toc":1332},[],{"title":5,"searchDepth":108,"depth":108,"links":1333},[],"content:3.videos:hygraph:002-fkSW0BFbtdo.md","3.videos/hygraph/002-fkSW0BFbtdo.md",[1337,1348,1359],{"_path":740,"_dir":85,"_draft":6,"_partial":6,"_locale":5,"title":739,"description":1338,"date":1339,"position":1235,"image":1340,"videoId":1341,"body":1342,"_type":110,"_id":1346,"_source":112,"_file":1347,"_extension":114},"This is Uniform DXCP: composability with Headless 2.0","2023-07-20T07:53:52Z","https://i.ytimg.com/vi/sF8TCV5t9PA/maxresdefault.jpg","sF8TCV5t9PA",{"type":20,"children":1343,"toc":1344},[],{"title":5,"searchDepth":108,"depth":108,"links":1345},[],"content:3.videos:uniform:000-sF8TCV5t9PA.md","3.videos/uniform/000-sF8TCV5t9PA.md",{"_path":743,"_dir":85,"_draft":6,"_partial":6,"_locale":5,"title":742,"description":1349,"date":1350,"position":1247,"image":1351,"videoId":1352,"body":1353,"_type":110,"_id":1357,"_source":112,"_file":1358,"_extension":114},"Learn more at https://uniform.dev","2023-07-20T07:53:58Z","https://i.ytimg.com/vi/VkJWIqlM6_w/maxresdefault.jpg","VkJWIqlM6_w",{"type":20,"children":1354,"toc":1355},[],{"title":5,"searchDepth":108,"depth":108,"links":1356},[],"content:3.videos:uniform:001-VkJWIqlM6_w.md","3.videos/uniform/001-VkJWIqlM6_w.md",{"_path":746,"_dir":85,"_draft":6,"_partial":6,"_locale":5,"title":745,"description":1349,"date":1360,"position":1259,"image":1361,"videoId":1362,"body":1363,"_type":110,"_id":1367,"_source":112,"_file":1368,"_extension":114},"2023-07-20T07:54:06Z","https://i.ytimg.com/vi/nDrAbg4x6yA/maxresdefault.jpg","nDrAbg4x6yA",{"type":20,"children":1364,"toc":1365},[],{"title":5,"searchDepth":108,"depth":108,"links":1366},[],"content:3.videos:uniform:002-nDrAbg4x6yA.md","3.videos/uniform/002-nDrAbg4x6yA.md",[1370,1381,1392],{"_path":411,"_dir":49,"_draft":6,"_partial":6,"_locale":5,"title":129,"description":1371,"date":1372,"position":1235,"image":1373,"videoId":1374,"body":1375,"_type":110,"_id":1379,"_source":112,"_file":1380,"_extension":114},"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-10T07:13:06Z","https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","mvq-_s20NDk",{"type":20,"children":1376,"toc":1377},[],{"title":5,"searchDepth":108,"depth":108,"links":1378},[],"content:3.videos:tim:000-mvq-_s20NDk.md","3.videos/tim/000-mvq-_s20NDk.md",{"_path":414,"_dir":49,"_draft":6,"_partial":6,"_locale":5,"title":413,"description":1382,"date":1383,"position":1247,"image":1384,"videoId":1385,"body":1386,"_type":110,"_id":1390,"_source":112,"_file":1391,"_extension":114},"Jake Ward, the co-founder and CEO of Data Protocol, and I discuss the current state of developer advocacy in 2024 and share insights on how dev rel teams can measure their impact.\n\nFollow Jake here:\nhttps://twitter.com/Jacobmward\nhttps://dataprotocol.com\nhttps://www.linkedin.com/in/jacobmward/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://linkedin.com/in/timbenniks","2024-04-15T13:00:24Z","https://i.ytimg.com/vi/VEX0KtITib4/maxresdefault.jpg","VEX0KtITib4",{"type":20,"children":1387,"toc":1388},[],{"title":5,"searchDepth":108,"depth":108,"links":1389},[],"content:3.videos:tim:001-VEX0KtITib4.md","3.videos/tim/001-VEX0KtITib4.md",{"_path":417,"_dir":49,"_draft":6,"_partial":6,"_locale":5,"title":416,"description":1393,"date":1394,"position":1259,"image":1395,"videoId":1396,"body":1397,"_type":110,"_id":1401,"_source":112,"_file":1402,"_extension":114},"Developer relations is having a bit of a rough time right now and in this video I explain my vision on how to succeed in 2024. \n\nTL/DR: focus on developer success while they are on your platform. Set up KPIs that measure their success, so you can show impact on the potential revenue these developers might bring. \n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nLinkedIn: https://linkedin.com/in/timbenniks\nGithub: https://github.com/timbenniks","2024-04-05T06:50:24Z","https://i.ytimg.com/vi/196iQP-lHLw/maxresdefault.jpg","196iQP-lHLw",{"type":20,"children":1398,"toc":1399},[],{"title":5,"searchDepth":108,"depth":108,"links":1400},[],"content:3.videos:tim:002-196iQP-lHLw.md","3.videos/tim/002-196iQP-lHLw.md",1718484819575] \ No newline at end of file diff --git a/videos/alive-and-kicking/_payload.json b/videos/alive-and-kicking/_payload.json index e12d134f..adcbd7ca 100644 --- a/videos/alive-and-kicking/_payload.json +++ b/videos/alive-and-kicking/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1189},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-YumzQDciOM":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1177],{"_path":17,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":16,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"alive-and-kicking",false,"","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",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:alive-and-kicking:000-hhPiTREYobI.md","content","3.videos/alive-and-kicking/000-hhPiTREYobI.md","md",{"_path":20,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":19,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"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",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:alive-and-kicking:001-mvq-_s20NDk.md","3.videos/alive-and-kicking/001-mvq-_s20NDk.md",{"_path":23,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":22,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"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",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:alive-and-kicking:002-M0MrLIGs6I0.md","3.videos/alive-and-kicking/002-M0MrLIGs6I0.md",{"_path":26,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":25,"description":1125,"date":1167,"position":1168,"image":1169,"videoId":1170,"body":1171,"_type":1137,"_id":1175,"_source":1139,"_file":1176,"_extension":1141},"2024-06-15T14:39:08Z","003","https://i.ytimg.com/vi/p3pm_0p8lZ4/maxresdefault.jpg","p3pm_0p8lZ4",{"type":1132,"children":1172,"toc":1173},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1174},[],"content:3.videos:alive-and-kicking:003-p3pm_0p8lZ4.md","3.videos/alive-and-kicking/003-p3pm_0p8lZ4.md",{"_path":29,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":28,"description":1178,"date":1179,"position":1180,"image":1181,"videoId":1182,"body":1183,"_type":1137,"_id":1187,"_source":1139,"_file":1188,"_extension":1141},"Rock & roll is alive and kicking and in this talk I will showcase that Vue is so versatile it can be used to do audio visualisations while rock guitar soars through the browser. The audience will have access to a vue application which allows them to vote for a song to be played live on stage. The screen shows all the votes and I play them as they come up. While playing music meta data is shown and an audio visualisation plays while I’m rocking on stage. The more votes a song gets, the higher it shows on the list and the more chance I’ll play it. The whole experience is created using Vue and Uniform. Next to waking the audience up with some spicy rock& roll, I will explain how the software was build and why Vue is such an important technology for composable architectures with multiple channels.\n\nhttps://www.jsworldconference.com/newsletter\n\nPowered by https://passionatepeople.io\n\n#jsworld #jsworldconference #frontendlove #frontenddeveloperlove #javascript #reactjs #angular #react #vuejs #vue #vue3 #typescript #graphql #jamstack #amsterdam #conference #svelte #sveltejs #next #nextjs #staticsite #css #html #nuxt","2023-08-12T10:06:20Z","004","https://i.ytimg.com/vi/-4m4TIJ0z20/maxresdefault.jpg","-4m4TIJ0z20",{"type":1132,"children":1184,"toc":1185},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1186},[],"content:3.videos:alive-and-kicking:004--4m4TIJ0z20.md","3.videos/alive-and-kicking/004--4m4TIJ0z20.md",1718484380083] \ No newline at end of file +[{"data":1,"prerenderedAt":1189},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-YumzQDciOM":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1177],{"_path":17,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":16,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"alive-and-kicking",false,"","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",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:alive-and-kicking:000-hhPiTREYobI.md","content","3.videos/alive-and-kicking/000-hhPiTREYobI.md","md",{"_path":20,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":19,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"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",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:alive-and-kicking:001-mvq-_s20NDk.md","3.videos/alive-and-kicking/001-mvq-_s20NDk.md",{"_path":23,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":22,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"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",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:alive-and-kicking:002-M0MrLIGs6I0.md","3.videos/alive-and-kicking/002-M0MrLIGs6I0.md",{"_path":26,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":25,"description":1125,"date":1167,"position":1168,"image":1169,"videoId":1170,"body":1171,"_type":1137,"_id":1175,"_source":1139,"_file":1176,"_extension":1141},"2024-06-15T14:39:08Z","003","https://i.ytimg.com/vi/p3pm_0p8lZ4/maxresdefault.jpg","p3pm_0p8lZ4",{"type":1132,"children":1172,"toc":1173},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1174},[],"content:3.videos:alive-and-kicking:003-p3pm_0p8lZ4.md","3.videos/alive-and-kicking/003-p3pm_0p8lZ4.md",{"_path":29,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":28,"description":1178,"date":1179,"position":1180,"image":1181,"videoId":1182,"body":1183,"_type":1137,"_id":1187,"_source":1139,"_file":1188,"_extension":1141},"Rock & roll is alive and kicking and in this talk I will showcase that Vue is so versatile it can be used to do audio visualisations while rock guitar soars through the browser. The audience will have access to a vue application which allows them to vote for a song to be played live on stage. The screen shows all the votes and I play them as they come up. While playing music meta data is shown and an audio visualisation plays while I’m rocking on stage. The more votes a song gets, the higher it shows on the list and the more chance I’ll play it. The whole experience is created using Vue and Uniform. Next to waking the audience up with some spicy rock& roll, I will explain how the software was build and why Vue is such an important technology for composable architectures with multiple channels.\n\nhttps://www.jsworldconference.com/newsletter\n\nPowered by https://passionatepeople.io\n\n#jsworld #jsworldconference #frontendlove #frontenddeveloperlove #javascript #reactjs #angular #react #vuejs #vue #vue3 #typescript #graphql #jamstack #amsterdam #conference #svelte #sveltejs #next #nextjs #staticsite #css #html #nuxt","2023-08-12T10:06:20Z","004","https://i.ytimg.com/vi/-4m4TIJ0z20/maxresdefault.jpg","-4m4TIJ0z20",{"type":1132,"children":1184,"toc":1185},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1186},[],"content:3.videos:alive-and-kicking:004--4m4TIJ0z20.md","3.videos/alive-and-kicking/004--4m4TIJ0z20.md",1718484820886] \ No newline at end of file diff --git a/videos/alive-and-kicking/index.html b/videos/alive-and-kicking/index.html index 73c3a356..d496cb2e 100644 --- a/videos/alive-and-kicking/index.html +++ b/videos/alive-and-kicking/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -
- \ No newline at end of file + + +
+ \ No newline at end of file diff --git a/videos/headless-creator/_payload.json b/videos/headless-creator/_payload.json index f68c6e93..fe032cd8 100644 --- a/videos/headless-creator/_payload.json +++ b/videos/headless-creator/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1190},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-DuUJ2UDMDm":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178],{"_path":36,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":35,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"headless-creator",false,"","With the history and the basics of creating DXP out of the way, in this lesson we focus on how to transition from the Digital Experience Platform to Digital Experience Composition Platform. DXCP helps you to orchestrate all sources in your ecosystem to communicate in a loosely coupled fashion while enabling content editors to make important experience composition decisions without the involvement of developers. No-code editing, universal preview across headless sources and personalization are a few of the features DXCP offers while leaving developers free to choose how they architect their code.\n\n0:00 - Intro\n1:14 - What is the difference between DXP and DXCP?\n2: 33 - DXP Architecture\n5:49 - DXCP Architecture\n7:34 - DXCP in one Sentence\n9:06 - What a DXCP is not...\n11:29 - So what is DXCP?\n15:54 - Domain Data vs Design Data\n22:01 - Conclusion\n22:44 - Terminology Recap\n24:28 - End\n\n========================================\nUniform\nhttps://uniform.dev/\n\nComposable Orchestration with Uniform Bootcamp\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp\n\nLiked what you saw? Why not register for a Free Account to discover all the free courses on Headless Creator.\nhttps://www.headlesscreator.com/\n\nSign up for our newsletter that focuses on everything Headless CMS and delivered directly to your inbox.\nhttps://www.headlesscreator.com/subscribe-to-our-newsletter\n========================================","2023-01-12T16:30:40Z","000","https://i.ytimg.com/vi/m8On6ZKr7Q4/maxresdefault.jpg","m8On6ZKr7Q4",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:headless-creator:000-m8On6ZKr7Q4.md","content","3.videos/headless-creator/000-m8On6ZKr7Q4.md","md",{"_path":39,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":38,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"In this lesson, you're going to learn what the DXP tech stack is, why Jamstack is the way to go for modern architectures, what API first is plus much more.\n\nTo watch the entire lesson, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-03-18T15:58:51Z","001","https://i.ytimg.com/vi/sMBq8aoa4JM/maxresdefault.jpg","sMBq8aoa4JM",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:headless-creator:001-sMBq8aoa4JM.md","3.videos/headless-creator/001-sMBq8aoa4JM.md",{"_path":42,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":41,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"In this lesson, we are going to learn what \"concerns\" are and how to keep them separate in a Composable DXP platform. We'll cover design and layout, how to keep those out of a CMS, how to isolate logic and an introduction to content modeling that focuses on content and not design.\n\nTo watch the entire less, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-03-04T16:45:54Z","002","https://i.ytimg.com/vi/sX5fBtcnRSg/maxresdefault.jpg","sX5fBtcnRSg",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:headless-creator:002-sX5fBtcnRSg.md","3.videos/headless-creator/002-sX5fBtcnRSg.md",{"_path":45,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":44,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"Effective digital delivery demands collaboration between development, design and digital marketing. In this lesson we are going to cover things that get in the way of collaboration (e.g. rigid architecture, rigid workflows, etc), how we can orchestrate using a platform and what painkillers can help solve some of these problems. \n\nTo watch the entire lesson, please visit: \n\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-02-18T16:24:57Z","003","https://i.ytimg.com/vi/EybDYOiHn1g/maxresdefault.jpg","EybDYOiHn1g",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:headless-creator:003-EybDYOiHn1g.md","3.videos/headless-creator/003-EybDYOiHn1g.md",{"_path":48,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":47,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"In this lesson, you'll learn what DXP is, get the history behind how we got to where we are today, what being truly composable means and the basic terminology of composable DXP. \n\nTo watch the entire lesson, please visit: \n\n[https://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp](https://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp)","2022-02-04T16:48:08Z","004","https://i.ytimg.com/vi/HsHm8HLOpKA/maxresdefault.jpg","HsHm8HLOpKA",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:headless-creator:004-HsHm8HLOpKA.md","3.videos/headless-creator/004-HsHm8HLOpKA.md",1718484380318] \ No newline at end of file +[{"data":1,"prerenderedAt":1190},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-DuUJ2UDMDm":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178],{"_path":36,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":35,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"headless-creator",false,"","With the history and the basics of creating DXP out of the way, in this lesson we focus on how to transition from the Digital Experience Platform to Digital Experience Composition Platform. DXCP helps you to orchestrate all sources in your ecosystem to communicate in a loosely coupled fashion while enabling content editors to make important experience composition decisions without the involvement of developers. No-code editing, universal preview across headless sources and personalization are a few of the features DXCP offers while leaving developers free to choose how they architect their code.\n\n0:00 - Intro\n1:14 - What is the difference between DXP and DXCP?\n2: 33 - DXP Architecture\n5:49 - DXCP Architecture\n7:34 - DXCP in one Sentence\n9:06 - What a DXCP is not...\n11:29 - So what is DXCP?\n15:54 - Domain Data vs Design Data\n22:01 - Conclusion\n22:44 - Terminology Recap\n24:28 - End\n\n========================================\nUniform\nhttps://uniform.dev/\n\nComposable Orchestration with Uniform Bootcamp\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp\n\nLiked what you saw? Why not register for a Free Account to discover all the free courses on Headless Creator.\nhttps://www.headlesscreator.com/\n\nSign up for our newsletter that focuses on everything Headless CMS and delivered directly to your inbox.\nhttps://www.headlesscreator.com/subscribe-to-our-newsletter\n========================================","2023-01-12T16:30:40Z","000","https://i.ytimg.com/vi/m8On6ZKr7Q4/maxresdefault.jpg","m8On6ZKr7Q4",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:headless-creator:000-m8On6ZKr7Q4.md","content","3.videos/headless-creator/000-m8On6ZKr7Q4.md","md",{"_path":39,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":38,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"In this lesson, you're going to learn what the DXP tech stack is, why Jamstack is the way to go for modern architectures, what API first is plus much more.\n\nTo watch the entire lesson, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-03-18T15:58:51Z","001","https://i.ytimg.com/vi/sMBq8aoa4JM/maxresdefault.jpg","sMBq8aoa4JM",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:headless-creator:001-sMBq8aoa4JM.md","3.videos/headless-creator/001-sMBq8aoa4JM.md",{"_path":42,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":41,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"In this lesson, we are going to learn what \"concerns\" are and how to keep them separate in a Composable DXP platform. We'll cover design and layout, how to keep those out of a CMS, how to isolate logic and an introduction to content modeling that focuses on content and not design.\n\nTo watch the entire less, please visit:\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-03-04T16:45:54Z","002","https://i.ytimg.com/vi/sX5fBtcnRSg/maxresdefault.jpg","sX5fBtcnRSg",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:headless-creator:002-sX5fBtcnRSg.md","3.videos/headless-creator/002-sX5fBtcnRSg.md",{"_path":45,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":44,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"Effective digital delivery demands collaboration between development, design and digital marketing. In this lesson we are going to cover things that get in the way of collaboration (e.g. rigid architecture, rigid workflows, etc), how we can orchestrate using a platform and what painkillers can help solve some of these problems. \n\nTo watch the entire lesson, please visit: \n\nhttps://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp","2022-02-18T16:24:57Z","003","https://i.ytimg.com/vi/EybDYOiHn1g/maxresdefault.jpg","EybDYOiHn1g",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:headless-creator:003-EybDYOiHn1g.md","3.videos/headless-creator/003-EybDYOiHn1g.md",{"_path":48,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":47,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"In this lesson, you'll learn what DXP is, get the history behind how we got to where we are today, what being truly composable means and the basic terminology of composable DXP. \n\nTo watch the entire lesson, please visit: \n\n[https://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp](https://www.headlesscreator.com/course/composable-dxp-with-uniform-bootcamp)","2022-02-04T16:48:08Z","004","https://i.ytimg.com/vi/HsHm8HLOpKA/maxresdefault.jpg","HsHm8HLOpKA",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:headless-creator:004-HsHm8HLOpKA.md","3.videos/headless-creator/004-HsHm8HLOpKA.md",1718484821253] \ No newline at end of file diff --git a/videos/headless-creator/index.html b/videos/headless-creator/index.html index 9ce76a1d..40a63d22 100644 --- a/videos/headless-creator/index.html +++ b/videos/headless-creator/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -
- \ No newline at end of file + + +
+ \ No newline at end of file diff --git a/videos/hygraph/_payload.json b/videos/hygraph/_payload.json index a6ee8564..067c729d 100644 --- a/videos/hygraph/_payload.json +++ b/videos/hygraph/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1298},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-iP7xM5fpAG":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202,1214,1226,1238,1250,1262,1274,1286],{"_path":55,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":54,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"hygraph",false,"","This is the CMS Maverick. This video shows the simplest way to connect Hygraph to NuxtJS.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nuxtjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:34Z","000","https://i.ytimg.com/vi/M8QFTViZSMw/maxresdefault.jpg","M8QFTViZSMw",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:hygraph:000-M8QFTViZSMw.md","content","3.videos/hygraph/000-M8QFTViZSMw.md","md",{"_path":58,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":57,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to Astro.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/astro\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:28Z","001","https://i.ytimg.com/vi/AAHu9X5WAjY/maxresdefault.jpg","AAHu9X5WAjY",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:hygraph:001-AAHu9X5WAjY.md","3.videos/hygraph/001-AAHu9X5WAjY.md",{"_path":61,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":60,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to #Nextjs.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nFull implementation guide: https://hygraph.com/docs/implementations/next/next\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nextjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:22Z","002","https://i.ytimg.com/vi/fkSW0BFbtdo/maxresdefault.jpg","fkSW0BFbtdo",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:hygraph:002-fkSW0BFbtdo.md","3.videos/hygraph/002-fkSW0BFbtdo.md",{"_path":64,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":63,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"Connect Commercetools to Hygraph via content federation and install a product picker app for content editors. It's all super easy, and Tim shows you how it is done in this video.\n\nGrab the codebase: https://github.com/hygraph/skncre-starter-nuxt-commercetools\nJoin our community at https://slack.hygraph.com\nCreate a free account at https://hygraph.com","2024-05-31T17:46:57Z","003","https://i.ytimg.com/vi/x8tB3li6dG0/maxresdefault.jpg","x8tB3li6dG0",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:hygraph:003-x8tB3li6dG0.md","3.videos/hygraph/003-x8tB3li6dG0.md",{"_path":67,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":66,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"This is the CMS Maverick series. Learn how to add a remote #REST source into Hygraph and use its data like its #Hygraph native content.\n\nRead more here: https://hygraph.com/docs/guides/schema/remote-sources#adding-a-remote-source-to-your-project\n\nJoin our community: https://slack.hygraph.com\nTry Hygraph for free: https://app.hygraph.com/signup","2024-05-31T17:46:43Z","004","https://i.ytimg.com/vi/ZREdqavTOW4/maxresdefault.jpg","ZREdqavTOW4",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:hygraph:004-ZREdqavTOW4.md","3.videos/hygraph/004-ZREdqavTOW4.md",{"_path":70,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":69,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"This is the CMS Maverick series. Learn how to add a remote #graphql source into Hygraph and use its data like its #Hygraph native content.\n\nRead more here: https://hygraph.com/docs/guides/schema/remote-sources#adding-a-remote-source-to-your-project\n\nJoin our community: https://slack.hygraph.com\nTry Hygraph for free: https://app.hygraph.com/signup","2024-05-31T17:46:38Z","005","https://i.ytimg.com/vi/aydykxCkKFE/maxresdefault.jpg","aydykxCkKFE",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:hygraph:005-aydykxCkKFE.md","3.videos/hygraph/005-aydykxCkKFE.md",{"_path":73,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":72,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"In this CMS Feature Ninja episode, Tim explores how to add a #graphql where clause to any field in Hygraph.\n\nJoin our community: https://slack.hygraph.com\nOr sign up for free at: https://app.hygraph.com/signup?utm_source=youtube&utm_medium=organic&utm_campaign=devrel","2024-05-31T17:46:34Z","006","https://i.ytimg.com/vi/aXQ-JO8hMZQ/maxresdefault.jpg","aXQ-JO8hMZQ",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:hygraph:006-aXQ-JO8hMZQ.md","3.videos/hygraph/006-aXQ-JO8hMZQ.md",{"_path":76,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":75,"description":1215,"date":1216,"position":1217,"image":1218,"videoId":1219,"body":1220,"_type":1137,"_id":1224,"_source":1139,"_file":1225,"_extension":1141},"SKNCRE is a composable commerce demo with Hygraph, Nuxt, Tailwind, and an external API for product data.\n\nSee the demo: https://skncre-cosmetics-hygraph.vercel.app/\nClone the Hygraph project: https://app.hygraph.com/clone/f67b7c52af504cd9a19de912423b2e40?name=Hygraph%20SKNCRE\nGithub repo: https://github.com/timbenniks/skncre-cosmetics-hygraph\n\nRead more: https://hygraph.com/blog/skncre-hygraph-cosmetics-demo\nHygraph Community: https://slack.hygraph.com\n\nSKNCRE is a fictitious cosmetics brand selling costly snail slime skin care products: face serum, face cream, eye contour, and the SKNCRE bundle. What you often see in composable e-commerce is that the product information lives in a specialized management system (a PIM), the content of the website in a CMS, and commerce features such as a cart, checkout, account, and payments in yet another system (a commerce engine).\n\nIn this example, all pages, content, and media are stored in Hygraph, but the products come from an external system – in this case, a mock API called Federate This. We expose the data in Hygraph via Content Federation. Developers query the CMS for product data, while editors can use the data inside the CMS while they combine editing native and federated content as if it were the same. The beauty is that developers and content editors do not need to understand the external product API as they use it directly through Hygraph.\n\nFederate This: https://federatethis.com\nHygraph: https://hygraph.com\nHygraph Community: https://slack.hygraph.com","2024-02-07T10:45:37Z","007","https://i.ytimg.com/vi/E9jxm4h4A48/maxresdefault.jpg","E9jxm4h4A48",{"type":1132,"children":1221,"toc":1222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1223},[],"content:3.videos:hygraph:007-E9jxm4h4A48.md","3.videos/hygraph/007-E9jxm4h4A48.md",{"_path":79,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":78,"description":1227,"date":1228,"position":1229,"image":1230,"videoId":1231,"body":1232,"_type":1137,"_id":1236,"_source":1139,"_file":1237,"_extension":1141},"In this video, Tim Benniks from #Hygraph and Marcin Szczepaniak from #Blazity will talk about the enterprise starter kit the two companies developed together.\n\nWhether you're just starting out or working on a large-scale project, this enterprise-ready content starter will accelerate your Hygraph project's development, enhance user engagement, and unlock new possibilities. \n\nFind out more about the starter: https://hygraph.com/blog/enterprise-ready-content-starter","2024-05-31T17:46:11Z","008","https://i.ytimg.com/vi/HS1iMXycyqg/maxresdefault.jpg","HS1iMXycyqg",{"type":1132,"children":1233,"toc":1234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1235},[],"content:3.videos:hygraph:008-HS1iMXycyqg.md","3.videos/hygraph/008-HS1iMXycyqg.md",{"_path":82,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":81,"description":1239,"date":1240,"position":1241,"image":1242,"videoId":1243,"body":1244,"_type":1137,"_id":1248,"_source":1139,"_file":1249,"_extension":1141},"In this discussion, Tim Benniks from #Hygraph and Markus Lorenz from #Datrycs explore the intricacies of decoupled architecture and its impact on businesses. From legacy systems to modern infrastructures, they dive deep into the challenges companies face and the need for a cohesive backend.\n\nKey Takeaways\n1. Overcoming legacy tools: Discover how companies struggle to adapt to market changes due to legacy systems and the importance of orchestrating data for innovation.\n2. The cost of doing nothing: Explore the consequences of maintaining outdated infrastructures and the impact on user experience, innovation, and market competitiveness.\n3. Understanding market changes: Markus shares valuable insights into the macroeconomic factors driving market changes and the role of IT infrastructure in adapting to unpredictability.\n\nJoin us on slack at https://slack.hygraph.com\n\n00:00 Introduction\n00:30 Challenges brought by monolith\n02:25 The cost of doing nothing: The IT budget dilemma\n04:03 What market change means for businesses: Understanding VUCA\n06:26 What does the market change mean for IT infrastructure for the future\n08:10 Perks of a decoupled infrastructure\n09:25 Challenges of going composable\n14:28 How Content Federation helps decoupled data challenges\n15:50 Perks of using Content Federation","2024-05-31T17:45:53Z","009","https://i.ytimg.com/vi/SnhZGplVm8o/maxresdefault.jpg","SnhZGplVm8o",{"type":1132,"children":1245,"toc":1246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1247},[],"content:3.videos:hygraph:009-SnhZGplVm8o.md","3.videos/hygraph/009-SnhZGplVm8o.md",{"_path":85,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":84,"description":1251,"date":1252,"position":1253,"image":1254,"videoId":1255,"body":1256,"_type":1137,"_id":1260,"_source":1139,"_file":1261,"_extension":1141},"Localization seems complicated, but with Hygraph it's a breeze to set up. In this video of the CMS Feature Ninja, Tim Benniks shows off how to set up multiple languages for assets and regular models in 6 minutes!\n\n\n#i18n #headlesscms #localization","2024-02-07T10:45:54Z","010","https://i.ytimg.com/vi/8_TtKBLPdpM/maxresdefault.jpg","8_TtKBLPdpM",{"type":1132,"children":1257,"toc":1258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1259},[],"content:3.videos:hygraph:010-8_TtKBLPdpM.md","3.videos/hygraph/010-8_TtKBLPdpM.md",{"_path":88,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":87,"description":1263,"date":1264,"position":1265,"image":1266,"videoId":1267,"body":1268,"_type":1137,"_id":1272,"_source":1139,"_file":1273,"_extension":1141},"In this video, Tim shows how to use #Nuxt 3 with #GraphQL to query a Hygraph remote REST API source.\n\nLearn more about remote sources here: https://hygraph.com/docs/guides/schema/remote-sources\nHow to add any REST source to Hygraph: https://www.youtube.com/watch?v=NpHSqsol3xc\n\nJoin our Slack community:\nhttps://slack.hygraph.com\n\nChapters:\n00:00 Introduction\n00:40 Nuxt 3 and GrAPHQL\n00:56 The API Playground\n01:35 The Nuxt Setup\n02:15 Queries and automatic codegen\n03:30 Basic query using GraphQL composable\n05:35 A fancier version\n07:12 useGraphQL custom composable\n08:05 Conclusion","2024-02-07T10:46:27Z","011","https://i.ytimg.com/vi/Keqn1RT8FwQ/maxresdefault.jpg","Keqn1RT8FwQ",{"type":1132,"children":1269,"toc":1270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1271},[],"content:3.videos:hygraph:011-Keqn1RT8FwQ.md","3.videos/hygraph/011-Keqn1RT8FwQ.md",{"_path":91,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":90,"description":1275,"date":1276,"position":1277,"image":1278,"videoId":1279,"body":1280,"_type":1137,"_id":1284,"_source":1139,"_file":1285,"_extension":1141},"In this video, Tim shows how to add a remote REST source into Hygraph in simple steps. Content federation is like wizardry! Keep your source of truth as is, but show its data in any shape you like in the front end.\n\nThe source is strongly typed via SDL. It's accessible as a global GraphQL query and in the context of a data model in the CMS.\n\nWant to learn more? Join us at the https://slack.hygraph.com community!","2024-02-07T10:46:04Z","012","https://i.ytimg.com/vi/NpHSqsol3xc/maxresdefault.jpg","NpHSqsol3xc",{"type":1132,"children":1281,"toc":1282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1283},[],"content:3.videos:hygraph:012-NpHSqsol3xc.md","3.videos/hygraph/012-NpHSqsol3xc.md",{"_path":94,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":93,"description":1287,"date":1288,"position":1289,"image":1290,"videoId":1291,"body":1292,"_type":1137,"_id":1296,"_source":1139,"_file":1297,"_extension":1141},"In this video, we are going over the most prominent buzzwords in our space and I try to explain them from my perspective. After that, we go back to basics and I help you pinpoint exactly what you need before buying into any of them. \n\nConclusion: 97% of brands will only need Content Federation and a solid Headless CMS.\n\nJoin the Hygraph community slack to talk more about this: https://slack.hygraph.com","2024-02-07T10:46:15Z","013","https://i.ytimg.com/vi/EXzp3OkQTXk/maxresdefault.jpg","EXzp3OkQTXk",{"type":1132,"children":1293,"toc":1294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1295},[],"content:3.videos:hygraph:013-EXzp3OkQTXk.md","3.videos/hygraph/013-EXzp3OkQTXk.md",1718484380307] \ No newline at end of file +[{"data":1,"prerenderedAt":1298},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-iP7xM5fpAG":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202,1214,1226,1238,1250,1262,1274,1286],{"_path":55,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":54,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"hygraph",false,"","This is the CMS Maverick. This video shows the simplest way to connect Hygraph to NuxtJS.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nuxtjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:34Z","000","https://i.ytimg.com/vi/M8QFTViZSMw/maxresdefault.jpg","M8QFTViZSMw",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:hygraph:000-M8QFTViZSMw.md","content","3.videos/hygraph/000-M8QFTViZSMw.md","md",{"_path":58,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":57,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to Astro.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/astro\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:28Z","001","https://i.ytimg.com/vi/AAHu9X5WAjY/maxresdefault.jpg","AAHu9X5WAjY",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:hygraph:001-AAHu9X5WAjY.md","3.videos/hygraph/001-AAHu9X5WAjY.md",{"_path":61,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":60,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"This is the CMS Maverick. This video shows the simplest way to connect Hygraph to #Nextjs.\n\nClone the Hygraph Project from this video: https://app.hygraph.com/clone/751a6bdf9431476c8b82c543895e6d16?name=Implementation%20Guides\n\nFull implementation guide: https://hygraph.com/docs/implementations/next/next\n\nCheck out the code: https://github.com/hygraph/hygraph-implementation-guides/tree/main/nextjs\n\nJoin our community at https://slack.hygraph.com\nMake a free account at https://app.hygraph.com/signup","2024-06-15T10:28:22Z","002","https://i.ytimg.com/vi/fkSW0BFbtdo/maxresdefault.jpg","fkSW0BFbtdo",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:hygraph:002-fkSW0BFbtdo.md","3.videos/hygraph/002-fkSW0BFbtdo.md",{"_path":64,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":63,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"Connect Commercetools to Hygraph via content federation and install a product picker app for content editors. It's all super easy, and Tim shows you how it is done in this video.\n\nGrab the codebase: https://github.com/hygraph/skncre-starter-nuxt-commercetools\nJoin our community at https://slack.hygraph.com\nCreate a free account at https://hygraph.com","2024-05-31T17:46:57Z","003","https://i.ytimg.com/vi/x8tB3li6dG0/maxresdefault.jpg","x8tB3li6dG0",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:hygraph:003-x8tB3li6dG0.md","3.videos/hygraph/003-x8tB3li6dG0.md",{"_path":67,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":66,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"This is the CMS Maverick series. Learn how to add a remote #REST source into Hygraph and use its data like its #Hygraph native content.\n\nRead more here: https://hygraph.com/docs/guides/schema/remote-sources#adding-a-remote-source-to-your-project\n\nJoin our community: https://slack.hygraph.com\nTry Hygraph for free: https://app.hygraph.com/signup","2024-05-31T17:46:43Z","004","https://i.ytimg.com/vi/ZREdqavTOW4/maxresdefault.jpg","ZREdqavTOW4",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:hygraph:004-ZREdqavTOW4.md","3.videos/hygraph/004-ZREdqavTOW4.md",{"_path":70,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":69,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"This is the CMS Maverick series. Learn how to add a remote #graphql source into Hygraph and use its data like its #Hygraph native content.\n\nRead more here: https://hygraph.com/docs/guides/schema/remote-sources#adding-a-remote-source-to-your-project\n\nJoin our community: https://slack.hygraph.com\nTry Hygraph for free: https://app.hygraph.com/signup","2024-05-31T17:46:38Z","005","https://i.ytimg.com/vi/aydykxCkKFE/maxresdefault.jpg","aydykxCkKFE",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:hygraph:005-aydykxCkKFE.md","3.videos/hygraph/005-aydykxCkKFE.md",{"_path":73,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":72,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"In this CMS Feature Ninja episode, Tim explores how to add a #graphql where clause to any field in Hygraph.\n\nJoin our community: https://slack.hygraph.com\nOr sign up for free at: https://app.hygraph.com/signup?utm_source=youtube&utm_medium=organic&utm_campaign=devrel","2024-05-31T17:46:34Z","006","https://i.ytimg.com/vi/aXQ-JO8hMZQ/maxresdefault.jpg","aXQ-JO8hMZQ",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:hygraph:006-aXQ-JO8hMZQ.md","3.videos/hygraph/006-aXQ-JO8hMZQ.md",{"_path":76,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":75,"description":1215,"date":1216,"position":1217,"image":1218,"videoId":1219,"body":1220,"_type":1137,"_id":1224,"_source":1139,"_file":1225,"_extension":1141},"SKNCRE is a composable commerce demo with Hygraph, Nuxt, Tailwind, and an external API for product data.\n\nSee the demo: https://skncre-cosmetics-hygraph.vercel.app/\nClone the Hygraph project: https://app.hygraph.com/clone/f67b7c52af504cd9a19de912423b2e40?name=Hygraph%20SKNCRE\nGithub repo: https://github.com/timbenniks/skncre-cosmetics-hygraph\n\nRead more: https://hygraph.com/blog/skncre-hygraph-cosmetics-demo\nHygraph Community: https://slack.hygraph.com\n\nSKNCRE is a fictitious cosmetics brand selling costly snail slime skin care products: face serum, face cream, eye contour, and the SKNCRE bundle. What you often see in composable e-commerce is that the product information lives in a specialized management system (a PIM), the content of the website in a CMS, and commerce features such as a cart, checkout, account, and payments in yet another system (a commerce engine).\n\nIn this example, all pages, content, and media are stored in Hygraph, but the products come from an external system – in this case, a mock API called Federate This. We expose the data in Hygraph via Content Federation. Developers query the CMS for product data, while editors can use the data inside the CMS while they combine editing native and federated content as if it were the same. The beauty is that developers and content editors do not need to understand the external product API as they use it directly through Hygraph.\n\nFederate This: https://federatethis.com\nHygraph: https://hygraph.com\nHygraph Community: https://slack.hygraph.com","2024-02-07T10:45:37Z","007","https://i.ytimg.com/vi/E9jxm4h4A48/maxresdefault.jpg","E9jxm4h4A48",{"type":1132,"children":1221,"toc":1222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1223},[],"content:3.videos:hygraph:007-E9jxm4h4A48.md","3.videos/hygraph/007-E9jxm4h4A48.md",{"_path":79,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":78,"description":1227,"date":1228,"position":1229,"image":1230,"videoId":1231,"body":1232,"_type":1137,"_id":1236,"_source":1139,"_file":1237,"_extension":1141},"In this video, Tim Benniks from #Hygraph and Marcin Szczepaniak from #Blazity will talk about the enterprise starter kit the two companies developed together.\n\nWhether you're just starting out or working on a large-scale project, this enterprise-ready content starter will accelerate your Hygraph project's development, enhance user engagement, and unlock new possibilities. \n\nFind out more about the starter: https://hygraph.com/blog/enterprise-ready-content-starter","2024-05-31T17:46:11Z","008","https://i.ytimg.com/vi/HS1iMXycyqg/maxresdefault.jpg","HS1iMXycyqg",{"type":1132,"children":1233,"toc":1234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1235},[],"content:3.videos:hygraph:008-HS1iMXycyqg.md","3.videos/hygraph/008-HS1iMXycyqg.md",{"_path":82,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":81,"description":1239,"date":1240,"position":1241,"image":1242,"videoId":1243,"body":1244,"_type":1137,"_id":1248,"_source":1139,"_file":1249,"_extension":1141},"In this discussion, Tim Benniks from #Hygraph and Markus Lorenz from #Datrycs explore the intricacies of decoupled architecture and its impact on businesses. From legacy systems to modern infrastructures, they dive deep into the challenges companies face and the need for a cohesive backend.\n\nKey Takeaways\n1. Overcoming legacy tools: Discover how companies struggle to adapt to market changes due to legacy systems and the importance of orchestrating data for innovation.\n2. The cost of doing nothing: Explore the consequences of maintaining outdated infrastructures and the impact on user experience, innovation, and market competitiveness.\n3. Understanding market changes: Markus shares valuable insights into the macroeconomic factors driving market changes and the role of IT infrastructure in adapting to unpredictability.\n\nJoin us on slack at https://slack.hygraph.com\n\n00:00 Introduction\n00:30 Challenges brought by monolith\n02:25 The cost of doing nothing: The IT budget dilemma\n04:03 What market change means for businesses: Understanding VUCA\n06:26 What does the market change mean for IT infrastructure for the future\n08:10 Perks of a decoupled infrastructure\n09:25 Challenges of going composable\n14:28 How Content Federation helps decoupled data challenges\n15:50 Perks of using Content Federation","2024-05-31T17:45:53Z","009","https://i.ytimg.com/vi/SnhZGplVm8o/maxresdefault.jpg","SnhZGplVm8o",{"type":1132,"children":1245,"toc":1246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1247},[],"content:3.videos:hygraph:009-SnhZGplVm8o.md","3.videos/hygraph/009-SnhZGplVm8o.md",{"_path":85,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":84,"description":1251,"date":1252,"position":1253,"image":1254,"videoId":1255,"body":1256,"_type":1137,"_id":1260,"_source":1139,"_file":1261,"_extension":1141},"Localization seems complicated, but with Hygraph it's a breeze to set up. In this video of the CMS Feature Ninja, Tim Benniks shows off how to set up multiple languages for assets and regular models in 6 minutes!\n\n\n#i18n #headlesscms #localization","2024-02-07T10:45:54Z","010","https://i.ytimg.com/vi/8_TtKBLPdpM/maxresdefault.jpg","8_TtKBLPdpM",{"type":1132,"children":1257,"toc":1258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1259},[],"content:3.videos:hygraph:010-8_TtKBLPdpM.md","3.videos/hygraph/010-8_TtKBLPdpM.md",{"_path":88,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":87,"description":1263,"date":1264,"position":1265,"image":1266,"videoId":1267,"body":1268,"_type":1137,"_id":1272,"_source":1139,"_file":1273,"_extension":1141},"In this video, Tim shows how to use #Nuxt 3 with #GraphQL to query a Hygraph remote REST API source.\n\nLearn more about remote sources here: https://hygraph.com/docs/guides/schema/remote-sources\nHow to add any REST source to Hygraph: https://www.youtube.com/watch?v=NpHSqsol3xc\n\nJoin our Slack community:\nhttps://slack.hygraph.com\n\nChapters:\n00:00 Introduction\n00:40 Nuxt 3 and GrAPHQL\n00:56 The API Playground\n01:35 The Nuxt Setup\n02:15 Queries and automatic codegen\n03:30 Basic query using GraphQL composable\n05:35 A fancier version\n07:12 useGraphQL custom composable\n08:05 Conclusion","2024-02-07T10:46:27Z","011","https://i.ytimg.com/vi/Keqn1RT8FwQ/maxresdefault.jpg","Keqn1RT8FwQ",{"type":1132,"children":1269,"toc":1270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1271},[],"content:3.videos:hygraph:011-Keqn1RT8FwQ.md","3.videos/hygraph/011-Keqn1RT8FwQ.md",{"_path":91,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":90,"description":1275,"date":1276,"position":1277,"image":1278,"videoId":1279,"body":1280,"_type":1137,"_id":1284,"_source":1139,"_file":1285,"_extension":1141},"In this video, Tim shows how to add a remote REST source into Hygraph in simple steps. Content federation is like wizardry! Keep your source of truth as is, but show its data in any shape you like in the front end.\n\nThe source is strongly typed via SDL. It's accessible as a global GraphQL query and in the context of a data model in the CMS.\n\nWant to learn more? Join us at the https://slack.hygraph.com community!","2024-02-07T10:46:04Z","012","https://i.ytimg.com/vi/NpHSqsol3xc/maxresdefault.jpg","NpHSqsol3xc",{"type":1132,"children":1281,"toc":1282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1283},[],"content:3.videos:hygraph:012-NpHSqsol3xc.md","3.videos/hygraph/012-NpHSqsol3xc.md",{"_path":94,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":93,"description":1287,"date":1288,"position":1289,"image":1290,"videoId":1291,"body":1292,"_type":1137,"_id":1296,"_source":1139,"_file":1297,"_extension":1141},"In this video, we are going over the most prominent buzzwords in our space and I try to explain them from my perspective. After that, we go back to basics and I help you pinpoint exactly what you need before buying into any of them. \n\nConclusion: 97% of brands will only need Content Federation and a solid Headless CMS.\n\nJoin the Hygraph community slack to talk more about this: https://slack.hygraph.com","2024-02-07T10:46:15Z","013","https://i.ytimg.com/vi/EXzp3OkQTXk/maxresdefault.jpg","EXzp3OkQTXk",{"type":1132,"children":1293,"toc":1294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1295},[],"content:3.videos:hygraph:013-EXzp3OkQTXk.md","3.videos/hygraph/013-EXzp3OkQTXk.md",1718484821239] \ No newline at end of file diff --git a/videos/hygraph/index.html b/videos/hygraph/index.html index 982572f7..625997b6 100644 --- a/videos/hygraph/index.html +++ b/videos/hygraph/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -
- \ No newline at end of file + + +
+ \ No newline at end of file diff --git a/videos/index.html b/videos/index.html index ce3b482b..dd90a88c 100644 --- a/videos/index.html +++ b/videos/index.html @@ -1,17 +1,17 @@ -videos +Videos - - - + + + - + - - - - - + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - -
- \ No newline at end of file + + + + +
+ \ No newline at end of file diff --git a/videos/live-hygraph/_payload.json b/videos/live-hygraph/_payload.json index 016af7ca..9e8f1024 100644 --- a/videos/live-hygraph/_payload.json +++ b/videos/live-hygraph/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1322},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-4JFaXdXWXf":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202,1214,1226,1238,1250,1262,1274,1286,1298,1310],{"_path":102,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":101,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"live-hygraph",false,"","Svelte is hot right now and we have invited Scott Spence to join Tim Benniks and show us how to use it with Headless CMS!\r\n\r\nTune in on Wednesday, at 4 PM CEST. \r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:23Z","000","https://i.ytimg.com/vi/eyDsTeDp-v4/maxresdefault.jpg","eyDsTeDp-v4",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:live-hygraph:000-eyDsTeDp-v4.md","content","3.videos/live-hygraph/000-eyDsTeDp-v4.md","md",{"_path":105,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":104,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"This Thursday we'll have Colby Fayock from Cloudinary join Tim Benniks for an exclusive livestream to talk about integrating Cloudinary with Hygraph as a headless CMS.\n\nMost people think media on the web is not at all a concern, an image is an image right?\nWell, nope! It's actually incredibly hard to serve images in the right context:\n- Is a user on mobile?\n- How fast is their internet?\n- Do we lazy load?\n- Do we need different image formats for different screen sizes?\n- We do we have art direction for the images?\n- Where do we store the default source and where do we serve the derived images with transformations from?\n- Do we use a CDN?\n- What if an image has to be offline after a certain date due to contracts?\n- What about image quality?\n\nNeed I go on? I can, I have about 10 more problems to throw at you and we haven't even discussed videos yet... \n\nWant to know more? Join ColbyFayock and Tim Benniks on our livestream TODAY where we demo industry leader Cloudinary and how they work together with Hygraph.\r\n\r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:16Z","001","https://i.ytimg.com/vi/_Iah2t5g02o/maxresdefault.jpg","_Iah2t5g02o",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:live-hygraph:001-_Iah2t5g02o.md","3.videos/live-hygraph/001-_Iah2t5g02o.md",{"_path":108,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":107,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"Want to see the magic of combining WordPress with Hygraph for ultimate power? \r\nWordPress expert Maciek joins Tim on the stream where they explore how to combine forces between WordPress and Hygraph.\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","2024-05-31T18:29:09Z","002","https://i.ytimg.com/vi/fy_w2youSBo/maxresdefault.jpg","fy_w2youSBo",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:live-hygraph:002-fy_w2youSBo.md","3.videos/live-hygraph/002-fy_w2youSBo.md",{"_path":111,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":110,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"In this week's livestream Niki and Tim explore localisation & translation with a headless CMS. The dynamic duo is back again!\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","2024-05-31T18:29:03Z","003","https://i.ytimg.com/vi/JGx1dYTfLVQ/maxresdefault.jpg","JGx1dYTfLVQ",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:live-hygraph:003-JGx1dYTfLVQ.md","3.videos/live-hygraph/003-JGx1dYTfLVQ.md",{"_path":114,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":113,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"For this livestream follow Tim and Niki to learn how to customize data with Hygraph and third party services!\n\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:55Z","004","https://i.ytimg.com/vi/OmBPIXxX-3E/maxresdefault.jpg","OmBPIXxX-3E",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:live-hygraph:004-OmBPIXxX-3E.md","3.videos/live-hygraph/004-OmBPIXxX-3E.md",{"_path":117,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":116,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"In this stream, Fabian and Tim explore the features of the all-new asset manager in Hygraph. Upload via API, transform assets via GraphQL, and more!\n\r\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:50Z","005","https://i.ytimg.com/vi/Ht-scjKem9Q/maxresdefault.jpg","Ht-scjKem9Q",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:live-hygraph:005-Ht-scjKem9Q.md","3.videos/live-hygraph/005-Ht-scjKem9Q.md",{"_path":120,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":119,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"Developer Relations Lead Tim Benniks will walk you through the most important elements of the new and improved Hygraph Asset Management, which has been revamped for improved performance and reliability. Of course, he won’t stop there; join him for a hands-on code-along!\nLinkedIn: https://www.linkedin.com/in/timbenniks/ \nTwitter: https://twitter.com/timbenniks \n\nCode along!\nNuxt: https://github.com/hygraph/hygraph-stock-library-starter-nuxt \nNext: https://github.com/hygraph/hygraph-stock-library-starter-next \nHygraph project: https://app.hygraph.com/clone/6b3636b3c7914fe5904fd41e364bc1cf?name=Asset%20Management%20Workshop \nDemo URL: https://hygraph-stock-library-starter-nuxt.vercel.app \n\nJoin our Hygraph Community slack channel and give your feedback here: https://bit.ly/hygraph-studio-feedback \n#HygraphStudio","2024-05-31T18:29:56Z","006","https://i.ytimg.com/vi/qeGf6RERiFw/maxresdefault.jpg","qeGf6RERiFw",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:live-hygraph:006-qeGf6RERiFw.md","3.videos/live-hygraph/006-qeGf6RERiFw.md",{"_path":123,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":122,"description":1215,"date":1216,"position":1217,"image":1218,"videoId":1219,"body":1220,"_type":1137,"_id":1224,"_source":1139,"_file":1225,"_extension":1141},"In this session, our Product Managers Alexey Orlovskiy and Fabian Beliza walk you through new features and improvements around developer experience and performance. You will learn about Hygraph Studio, Hygraph Asset Management, and some under-the-hood improvements to Content and Management API. Then our Sr. Technical Writer, Romina Soledad Soto, will talk about our approach to documentation and where you can find all information related to Hygraph Studio Docs. \nhttps://www.linkedin.com/in/aorlovskiy/ \nhttps://www.linkedin.com/in/fabianbeliza/\nhttps://www.linkedin.com/in/romina-soto-098b4139/\n\nAsset Docs: https://hygraph.com/docs/api-reference/assets/assets-overview \nBlog post about new Asset System: https://hygraph.com/blog/new-digital-asset-management-system \nCaching Docs: https://hygraph.com/docs/api-reference/basics/caching \nStudio Docs: https://studio-docs.hygraph.com/ \n\nJoin our Hygraph Community slack channel and give your feedback here: https://bit.ly/hygraph-studio-feedback \n#HygraphStudio","2024-05-31T18:29:49Z","007","https://i.ytimg.com/vi/Etie3ZYgonE/maxresdefault.jpg","Etie3ZYgonE",{"type":1132,"children":1221,"toc":1222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1223},[],"content:3.videos:live-hygraph:007-Etie3ZYgonE.md","3.videos/live-hygraph/007-Etie3ZYgonE.md",{"_path":126,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":125,"description":1227,"date":1228,"position":1229,"image":1230,"videoId":1231,"body":1232,"_type":1137,"_id":1236,"_source":1139,"_file":1237,"_extension":1141},"Tim did a conference talk last week where he created a guitar karaoke experience in which the audience could live-vote what 4-song mashup he'd play. In this live stream we deep dive into how this was built with Supabase, Hygraph and Nuxt.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:43Z","008","https://i.ytimg.com/vi/PhCXH2M7OzM/maxresdefault.jpg","PhCXH2M7OzM",{"type":1132,"children":1233,"toc":1234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1235},[],"content:3.videos:live-hygraph:008-PhCXH2M7OzM.md","3.videos/live-hygraph/008-PhCXH2M7OzM.md",{"_path":129,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":128,"description":1239,"date":1240,"position":1241,"image":1242,"videoId":1243,"body":1244,"_type":1137,"_id":1248,"_source":1139,"_file":1249,"_extension":1141},"For this week's livestream we'll have Lo and Bryan build content models for devs & editors. We'll take a look at web.dev from Google and discuss how we'd structure content models for that design and the real-world ramifications.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:39Z","009","https://i.ytimg.com/vi/PzC527rZ7Es/maxresdefault.jpg","PzC527rZ7Es",{"type":1132,"children":1245,"toc":1246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1247},[],"content:3.videos:live-hygraph:009-PzC527rZ7Es.md","3.videos/live-hygraph/009-PzC527rZ7Es.md",{"_path":132,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":131,"description":1251,"date":1252,"position":1253,"image":1254,"videoId":1255,"body":1256,"_type":1137,"_id":1260,"_source":1139,"_file":1261,"_extension":1141},"See Tim learn on the spot as Bryan teaches him Next.js 14 app directory with GraphQL and \"load more\" functionality with Hygraph.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:31Z","010","https://i.ytimg.com/vi/t00uXBjsDUM/maxresdefault.jpg","t00uXBjsDUM",{"type":1132,"children":1257,"toc":1258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1259},[],"content:3.videos:live-hygraph:010-t00uXBjsDUM.md","3.videos/live-hygraph/010-t00uXBjsDUM.md",{"_path":135,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":134,"description":1263,"date":1264,"position":1265,"image":1266,"videoId":1267,"body":1268,"_type":1137,"_id":1272,"_source":1139,"_file":1273,"_extension":1141},"Want to learn more about pagination in Astro and Hygraph? Join Bryan and Tim on their mission to asynchronously load more content via pagination or a load more button. Astro rocks!\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:26Z","011","https://i.ytimg.com/vi/O_dVLRWPeBk/maxresdefault.jpg","O_dVLRWPeBk",{"type":1132,"children":1269,"toc":1270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1271},[],"content:3.videos:live-hygraph:011-O_dVLRWPeBk.md","3.videos/live-hygraph/011-O_dVLRWPeBk.md",{"_path":138,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":137,"description":1275,"date":1276,"position":1277,"image":1278,"videoId":1279,"body":1280,"_type":1137,"_id":1284,"_source":1139,"_file":1285,"_extension":1141},"Join Bryan and Tim from Hygraph as they explore how to use a Rich Text editor in a Headless CMS. Learn about features and ways of implementing them in your front-end!\n\r\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:21Z","012","https://i.ytimg.com/vi/VRrZgly1n5c/maxresdefault.jpg","VRrZgly1n5c",{"type":1132,"children":1281,"toc":1282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1283},[],"content:3.videos:live-hygraph:012-VRrZgly1n5c.md","3.videos/live-hygraph/012-VRrZgly1n5c.md",{"_path":141,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":140,"description":1287,"date":1288,"position":1289,"image":1290,"videoId":1291,"body":1292,"_type":1137,"_id":1296,"_source":1139,"_file":1297,"_extension":1141},"Hygraph's Lo Etheridge and Tim Benniks deep-dive into setting up multi-tenancy inside Hygraph using the SKNCRE starter. Can two brands live in one project? Yes! Find out on the stream.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:16Z","013","https://i.ytimg.com/vi/M5XaMvlqh1g/maxresdefault.jpg","M5XaMvlqh1g",{"type":1132,"children":1293,"toc":1294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1295},[],"content:3.videos:live-hygraph:013-M5XaMvlqh1g.md","3.videos/live-hygraph/013-M5XaMvlqh1g.md",{"_path":144,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":143,"description":1299,"date":1300,"position":1301,"image":1302,"videoId":1303,"body":1304,"_type":1137,"_id":1308,"_source":1139,"_file":1309,"_extension":1141},"Niki and Tim explore how to import data that lives in external systems into Hygraph. Join us for a chill vibe where we explore SDK's and chat data.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com\n#headlesscms #javascript #jamstack","2024-05-31T18:28:10Z","014","https://i.ytimg.com/vi/JC09S5zmW_k/maxresdefault.jpg","JC09S5zmW_k",{"type":1132,"children":1305,"toc":1306},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1307},[],"content:3.videos:live-hygraph:014-JC09S5zmW_k.md","3.videos/live-hygraph/014-JC09S5zmW_k.md",{"_path":147,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":146,"description":1311,"date":1312,"position":1313,"image":1314,"videoId":1315,"body":1316,"_type":1137,"_id":1320,"_source":1139,"_file":1321,"_extension":1141},"We have invited Elian from the Astro core team to join Tim on a chill stream in which they convert the skncre Nuxt starter for Hygraph to Astro. Along the way you will learn the core concepts of Astro and Hygraph, all while diving deep into the code.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:02Z","015","https://i.ytimg.com/vi/AieTLJMxmxM/maxresdefault.jpg","AieTLJMxmxM",{"type":1132,"children":1317,"toc":1318},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1319},[],"content:3.videos:live-hygraph:015-AieTLJMxmxM.md","3.videos/live-hygraph/015-AieTLJMxmxM.md",1718484380227] \ No newline at end of file +[{"data":1,"prerenderedAt":1322},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-4JFaXdXWXf":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202,1214,1226,1238,1250,1262,1274,1286,1298,1310],{"_path":102,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":101,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"live-hygraph",false,"","Svelte is hot right now and we have invited Scott Spence to join Tim Benniks and show us how to use it with Headless CMS!\r\n\r\nTune in on Wednesday, at 4 PM CEST. \r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:23Z","000","https://i.ytimg.com/vi/eyDsTeDp-v4/maxresdefault.jpg","eyDsTeDp-v4",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:live-hygraph:000-eyDsTeDp-v4.md","content","3.videos/live-hygraph/000-eyDsTeDp-v4.md","md",{"_path":105,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":104,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"This Thursday we'll have Colby Fayock from Cloudinary join Tim Benniks for an exclusive livestream to talk about integrating Cloudinary with Hygraph as a headless CMS.\n\nMost people think media on the web is not at all a concern, an image is an image right?\nWell, nope! It's actually incredibly hard to serve images in the right context:\n- Is a user on mobile?\n- How fast is their internet?\n- Do we lazy load?\n- Do we need different image formats for different screen sizes?\n- We do we have art direction for the images?\n- Where do we store the default source and where do we serve the derived images with transformations from?\n- Do we use a CDN?\n- What if an image has to be offline after a certain date due to contracts?\n- What about image quality?\n\nNeed I go on? I can, I have about 10 more problems to throw at you and we haven't even discussed videos yet... \n\nWant to know more? Join ColbyFayock and Tim Benniks on our livestream TODAY where we demo industry leader Cloudinary and how they work together with Hygraph.\r\n\r\nJoin our slack community and feel free to ask us any questions: https://slack.hygraph.com","2024-05-31T18:29:16Z","001","https://i.ytimg.com/vi/_Iah2t5g02o/maxresdefault.jpg","_Iah2t5g02o",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:live-hygraph:001-_Iah2t5g02o.md","3.videos/live-hygraph/001-_Iah2t5g02o.md",{"_path":108,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":107,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"Want to see the magic of combining WordPress with Hygraph for ultimate power? \r\nWordPress expert Maciek joins Tim on the stream where they explore how to combine forces between WordPress and Hygraph.\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","2024-05-31T18:29:09Z","002","https://i.ytimg.com/vi/fy_w2youSBo/maxresdefault.jpg","fy_w2youSBo",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:live-hygraph:002-fy_w2youSBo.md","3.videos/live-hygraph/002-fy_w2youSBo.md",{"_path":111,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":110,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"In this week's livestream Niki and Tim explore localisation & translation with a headless CMS. The dynamic duo is back again!\r\n\r\nAsk us any questions in the chat or join the community: https://slack.hygraph.com","2024-05-31T18:29:03Z","003","https://i.ytimg.com/vi/JGx1dYTfLVQ/maxresdefault.jpg","JGx1dYTfLVQ",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:live-hygraph:003-JGx1dYTfLVQ.md","3.videos/live-hygraph/003-JGx1dYTfLVQ.md",{"_path":114,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":113,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"For this livestream follow Tim and Niki to learn how to customize data with Hygraph and third party services!\n\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:55Z","004","https://i.ytimg.com/vi/OmBPIXxX-3E/maxresdefault.jpg","OmBPIXxX-3E",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:live-hygraph:004-OmBPIXxX-3E.md","3.videos/live-hygraph/004-OmBPIXxX-3E.md",{"_path":117,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":116,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"In this stream, Fabian and Tim explore the features of the all-new asset manager in Hygraph. Upload via API, transform assets via GraphQL, and more!\n\r\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:50Z","005","https://i.ytimg.com/vi/Ht-scjKem9Q/maxresdefault.jpg","Ht-scjKem9Q",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:live-hygraph:005-Ht-scjKem9Q.md","3.videos/live-hygraph/005-Ht-scjKem9Q.md",{"_path":120,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":119,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"Developer Relations Lead Tim Benniks will walk you through the most important elements of the new and improved Hygraph Asset Management, which has been revamped for improved performance and reliability. Of course, he won’t stop there; join him for a hands-on code-along!\nLinkedIn: https://www.linkedin.com/in/timbenniks/ \nTwitter: https://twitter.com/timbenniks \n\nCode along!\nNuxt: https://github.com/hygraph/hygraph-stock-library-starter-nuxt \nNext: https://github.com/hygraph/hygraph-stock-library-starter-next \nHygraph project: https://app.hygraph.com/clone/6b3636b3c7914fe5904fd41e364bc1cf?name=Asset%20Management%20Workshop \nDemo URL: https://hygraph-stock-library-starter-nuxt.vercel.app \n\nJoin our Hygraph Community slack channel and give your feedback here: https://bit.ly/hygraph-studio-feedback \n#HygraphStudio","2024-05-31T18:29:56Z","006","https://i.ytimg.com/vi/qeGf6RERiFw/maxresdefault.jpg","qeGf6RERiFw",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:live-hygraph:006-qeGf6RERiFw.md","3.videos/live-hygraph/006-qeGf6RERiFw.md",{"_path":123,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":122,"description":1215,"date":1216,"position":1217,"image":1218,"videoId":1219,"body":1220,"_type":1137,"_id":1224,"_source":1139,"_file":1225,"_extension":1141},"In this session, our Product Managers Alexey Orlovskiy and Fabian Beliza walk you through new features and improvements around developer experience and performance. You will learn about Hygraph Studio, Hygraph Asset Management, and some under-the-hood improvements to Content and Management API. Then our Sr. Technical Writer, Romina Soledad Soto, will talk about our approach to documentation and where you can find all information related to Hygraph Studio Docs. \nhttps://www.linkedin.com/in/aorlovskiy/ \nhttps://www.linkedin.com/in/fabianbeliza/\nhttps://www.linkedin.com/in/romina-soto-098b4139/\n\nAsset Docs: https://hygraph.com/docs/api-reference/assets/assets-overview \nBlog post about new Asset System: https://hygraph.com/blog/new-digital-asset-management-system \nCaching Docs: https://hygraph.com/docs/api-reference/basics/caching \nStudio Docs: https://studio-docs.hygraph.com/ \n\nJoin our Hygraph Community slack channel and give your feedback here: https://bit.ly/hygraph-studio-feedback \n#HygraphStudio","2024-05-31T18:29:49Z","007","https://i.ytimg.com/vi/Etie3ZYgonE/maxresdefault.jpg","Etie3ZYgonE",{"type":1132,"children":1221,"toc":1222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1223},[],"content:3.videos:live-hygraph:007-Etie3ZYgonE.md","3.videos/live-hygraph/007-Etie3ZYgonE.md",{"_path":126,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":125,"description":1227,"date":1228,"position":1229,"image":1230,"videoId":1231,"body":1232,"_type":1137,"_id":1236,"_source":1139,"_file":1237,"_extension":1141},"Tim did a conference talk last week where he created a guitar karaoke experience in which the audience could live-vote what 4-song mashup he'd play. In this live stream we deep dive into how this was built with Supabase, Hygraph and Nuxt.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:43Z","008","https://i.ytimg.com/vi/PhCXH2M7OzM/maxresdefault.jpg","PhCXH2M7OzM",{"type":1132,"children":1233,"toc":1234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1235},[],"content:3.videos:live-hygraph:008-PhCXH2M7OzM.md","3.videos/live-hygraph/008-PhCXH2M7OzM.md",{"_path":129,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":128,"description":1239,"date":1240,"position":1241,"image":1242,"videoId":1243,"body":1244,"_type":1137,"_id":1248,"_source":1139,"_file":1249,"_extension":1141},"For this week's livestream we'll have Lo and Bryan build content models for devs & editors. We'll take a look at web.dev from Google and discuss how we'd structure content models for that design and the real-world ramifications.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:39Z","009","https://i.ytimg.com/vi/PzC527rZ7Es/maxresdefault.jpg","PzC527rZ7Es",{"type":1132,"children":1245,"toc":1246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1247},[],"content:3.videos:live-hygraph:009-PzC527rZ7Es.md","3.videos/live-hygraph/009-PzC527rZ7Es.md",{"_path":132,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":131,"description":1251,"date":1252,"position":1253,"image":1254,"videoId":1255,"body":1256,"_type":1137,"_id":1260,"_source":1139,"_file":1261,"_extension":1141},"See Tim learn on the spot as Bryan teaches him Next.js 14 app directory with GraphQL and \"load more\" functionality with Hygraph.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:31Z","010","https://i.ytimg.com/vi/t00uXBjsDUM/maxresdefault.jpg","t00uXBjsDUM",{"type":1132,"children":1257,"toc":1258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1259},[],"content:3.videos:live-hygraph:010-t00uXBjsDUM.md","3.videos/live-hygraph/010-t00uXBjsDUM.md",{"_path":135,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":134,"description":1263,"date":1264,"position":1265,"image":1266,"videoId":1267,"body":1268,"_type":1137,"_id":1272,"_source":1139,"_file":1273,"_extension":1141},"Want to learn more about pagination in Astro and Hygraph? Join Bryan and Tim on their mission to asynchronously load more content via pagination or a load more button. Astro rocks!\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:26Z","011","https://i.ytimg.com/vi/O_dVLRWPeBk/maxresdefault.jpg","O_dVLRWPeBk",{"type":1132,"children":1269,"toc":1270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1271},[],"content:3.videos:live-hygraph:011-O_dVLRWPeBk.md","3.videos/live-hygraph/011-O_dVLRWPeBk.md",{"_path":138,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":137,"description":1275,"date":1276,"position":1277,"image":1278,"videoId":1279,"body":1280,"_type":1137,"_id":1284,"_source":1139,"_file":1285,"_extension":1141},"Join Bryan and Tim from Hygraph as they explore how to use a Rich Text editor in a Headless CMS. Learn about features and ways of implementing them in your front-end!\n\r\n\rAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:21Z","012","https://i.ytimg.com/vi/VRrZgly1n5c/maxresdefault.jpg","VRrZgly1n5c",{"type":1132,"children":1281,"toc":1282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1283},[],"content:3.videos:live-hygraph:012-VRrZgly1n5c.md","3.videos/live-hygraph/012-VRrZgly1n5c.md",{"_path":141,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":140,"description":1287,"date":1288,"position":1289,"image":1290,"videoId":1291,"body":1292,"_type":1137,"_id":1296,"_source":1139,"_file":1297,"_extension":1141},"Hygraph's Lo Etheridge and Tim Benniks deep-dive into setting up multi-tenancy inside Hygraph using the SKNCRE starter. Can two brands live in one project? Yes! Find out on the stream.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:16Z","013","https://i.ytimg.com/vi/M5XaMvlqh1g/maxresdefault.jpg","M5XaMvlqh1g",{"type":1132,"children":1293,"toc":1294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1295},[],"content:3.videos:live-hygraph:013-M5XaMvlqh1g.md","3.videos/live-hygraph/013-M5XaMvlqh1g.md",{"_path":144,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":143,"description":1299,"date":1300,"position":1301,"image":1302,"videoId":1303,"body":1304,"_type":1137,"_id":1308,"_source":1139,"_file":1309,"_extension":1141},"Niki and Tim explore how to import data that lives in external systems into Hygraph. Join us for a chill vibe where we explore SDK's and chat data.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com\n#headlesscms #javascript #jamstack","2024-05-31T18:28:10Z","014","https://i.ytimg.com/vi/JC09S5zmW_k/maxresdefault.jpg","JC09S5zmW_k",{"type":1132,"children":1305,"toc":1306},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1307},[],"content:3.videos:live-hygraph:014-JC09S5zmW_k.md","3.videos/live-hygraph/014-JC09S5zmW_k.md",{"_path":147,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":146,"description":1311,"date":1312,"position":1313,"image":1314,"videoId":1315,"body":1316,"_type":1137,"_id":1320,"_source":1139,"_file":1321,"_extension":1141},"We have invited Elian from the Astro core team to join Tim on a chill stream in which they convert the skncre Nuxt starter for Hygraph to Astro. Along the way you will learn the core concepts of Astro and Hygraph, all while diving deep into the code.\n\nAsk us any questions in the chat and join the community: https://slack.hygraph.com","2024-05-31T18:28:02Z","015","https://i.ytimg.com/vi/AieTLJMxmxM/maxresdefault.jpg","AieTLJMxmxM",{"type":1132,"children":1317,"toc":1318},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1319},[],"content:3.videos:live-hygraph:015-AieTLJMxmxM.md","3.videos/live-hygraph/015-AieTLJMxmxM.md",1718484820959] \ No newline at end of file diff --git a/videos/live-hygraph/index.html b/videos/live-hygraph/index.html index 060f6ebc..41b0ea67 100644 --- a/videos/live-hygraph/index.html +++ b/videos/live-hygraph/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -
- \ No newline at end of file + + +
+ \ No newline at end of file diff --git a/videos/live-uniform/_payload.json b/videos/live-uniform/_payload.json index c68e5ce5..c6ad1da7 100644 --- a/videos/live-uniform/_payload.json +++ b/videos/live-uniform/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1526},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-aI7PA1PA2m":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202,1214,1226,1238,1250,1262,1274,1286,1298,1310,1322,1334,1346,1358,1370,1382,1394,1406,1418,1430,1442,1454,1466,1478,1490,1502,1514],{"_path":154,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":153,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"live-uniform",false,"","Personalization Basics: Intents and signals","2024-05-31T18:33:26Z","000","https://i.ytimg.com/vi/5qX4fmKKh_M/maxresdefault.jpg","5qX4fmKKh_M",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:live-uniform:000-5qX4fmKKh_M.md","content","3.videos/live-uniform/000-5qX4fmKKh_M.md","md",{"_path":157,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":156,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"Tony & Tim have invited Alex Shyba to talk about the Jamstack and beyond!\n\nFollow us here:\nhttps://twitter.com/uniformdev\nhttps://twitter.com/timbenniks\nhttps://twitter.com/tmamedbekov","2024-05-31T18:33:33Z","001","https://i.ytimg.com/vi/ZdQk9zql3zA/maxresdefault.jpg","ZdQk9zql3zA",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:live-uniform:001-ZdQk9zql3zA.md","3.videos/live-uniform/001-ZdQk9zql3zA.md",{"_path":160,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":159,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"In this instalment we look into more complex use cases for personalisation. Search results and indexation can generate amazing results when personalised properly. Adam Lamarre shows how to integrate Uniform with Algolia for great results on Jamstack websites!","2024-05-31T18:33:37Z","002","https://i.ytimg.com/vi/Tngn1E4HEFI/maxresdefault.jpg","Tngn1E4HEFI",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:live-uniform:002-Tngn1E4HEFI.md","3.videos/live-uniform/002-Tngn1E4HEFI.md",{"_path":163,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":162,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"In this stream Tim from Uniform is accompanied by Samuel and Alba to help him set up Storyblok from scratch. After that they dive into how to integrate Uniform with Storyblok as a custom field type to show off how to personalize Storyblok.","2024-05-31T18:33:43Z","003","https://i.ytimg.com/vi/vkFASdFdUF8/maxresdefault.jpg","vkFASdFdUF8",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:live-uniform:003-vkFASdFdUF8.md","3.videos/live-uniform/003-vkFASdFdUF8.md",{"_path":166,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":165,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"Cable management in Next.js: creating compositions with different headless sources with Uniform Canvas in Next.js.","2024-05-31T18:33:51Z","004","https://i.ytimg.com/vi/BAIBxSoAgdw/maxresdefault.jpg","BAIBxSoAgdw",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:live-uniform:004-BAIBxSoAgdw.md","3.videos/live-uniform/004-BAIBxSoAgdw.md",{"_path":169,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":168,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"In this Livestream we are unpacking how Tim created a Cloudinary shoppable video player based on Uniform Canvas data from Contentful and BigCommerce","2024-05-31T18:33:58Z","005","https://i.ytimg.com/vi/RV4wZkhJp7k/maxresdefault.jpg","RV4wZkhJp7k",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:live-uniform:005-RV4wZkhJp7k.md","3.videos/live-uniform/005-RV4wZkhJp7k.md",{"_path":172,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":171,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"Nowadays we are faced with an ever-expanding landscape of headless technologies like commerce engines, CMS, asset management, payments and many more. All these services are API-first and this comes with a new paradigm: there is no more origin server.\r\n\r\nIn this livestream we will use Nuxt 3 to wire up a modern Jamstack site (in a few flavours, including SSR at the egde) that uses many different headless sources. The goal: high performance, great DX, freedom of choice and never re-platforming again...","2024-05-31T18:34:04Z","006","https://i.ytimg.com/vi/R2LwjMEhkmo/maxresdefault.jpg","R2LwjMEhkmo",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:live-uniform:006-R2LwjMEhkmo.md","3.videos/live-uniform/006-R2LwjMEhkmo.md",{"_path":175,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":174,"description":1215,"date":1216,"position":1217,"image":1218,"videoId":1219,"body":1220,"_type":1137,"_id":1224,"_source":1139,"_file":1225,"_extension":1141},"Kicking off our first Composable without Compromise livestream w/ Natalia Venditto. \nIn these live streams we talk about composability. From architectures, to design approaches, to tech organization and governance. Anything MACH Alliance, DXC or headless composition related is a valid subject. Monolith to composable stories. How to deal with composability as a developer, or as a leader. \n\nNatalia worked in the roles of frontend and full-stack developer, technical lead and software architect leading enterprise implementations and as a solutions architect advising on data intensive implementations. Now she leads the end-to-end DX for JavaScript devs on Azure. \nhttps://twitter.com/AnfibiaCreativa\n\nBack in the days when Natalia started working as a developer, the frontend was nothing but a couple of CSS and JavaScript files or lines injected to the HTML. But the whole JavaScript ecosystem has evolved at a very dynamic fast pace. The role of frontend technologies and patterns when designing new web architectures, has never been so influential as it is today. Let's talk about the multiple challenges, but also opportunities, that the cloud offers to build lightning fast and super performant user interfaces, on top of cutting-edge cloud tech!\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:11Z","007","https://i.ytimg.com/vi/7-eBCQiP9Ec/maxresdefault.jpg","7-eBCQiP9Ec",{"type":1132,"children":1221,"toc":1222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1223},[],"content:3.videos:live-uniform:007-7-eBCQiP9Ec.md","3.videos/live-uniform/007-7-eBCQiP9Ec.md",{"_path":178,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":177,"description":1227,"date":1228,"position":1229,"image":1230,"videoId":1231,"body":1232,"_type":1137,"_id":1236,"_source":1139,"_file":1237,"_extension":1141},"Kicking off our first Unpack the Stack livestream w/ Daniel Roe.\nIn these live streams we unpack a stack. As in, a technical person explains how they built something or we talk about something technical that excites them. \n\nDaniel is a core team member of Nuxt - previously a CTO of a SaaS startup. His open-source work has a focus in the Vue.js and Nuxt ecosystems and he's involved in consultancy with companies around the world, particularly around JAMstack, serverless and software architecture. He's based in the North East of England where he lives with his family, three cats, and a dog.\nhttps://twitter.com/danielcroe\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:18Z","008","https://i.ytimg.com/vi/1h0jR_vBZ7M/maxresdefault.jpg","1h0jR_vBZ7M",{"type":1132,"children":1233,"toc":1234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1235},[],"content:3.videos:live-uniform:008-1h0jR_vBZ7M.md","3.videos/live-uniform/008-1h0jR_vBZ7M.md",{"_path":181,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":180,"description":1239,"date":1240,"position":1241,"image":1242,"videoId":1243,"body":1244,"_type":1137,"_id":1248,"_source":1139,"_file":1249,"_extension":1141},"Composable without Compromise livestream with Matt Webb. \nIn these live streams we talk about composability. From architectures, to design approaches, to tech organization and governance. Anything MACH Alliance, DXC or headless composition related is a valid subject. Monolith to composable stories. How to deal with composability as a developer, or as a leader. \n\nA technology lead with over 20 years experience at global CTO level for large digital agencies, delivering projects in the field of global enterprise CMS, eCommerce, data, composable/MACH architectures, through to Internet of things, Augmented/Virtual reality, and Artificial Intelligence. \nBIMA 100 Tech trailblazer 2021, MACH Alliance ambassador.\nhttps://twitter.com/webgeekwebb\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:23Z","009","https://i.ytimg.com/vi/sitBLjdTBJY/maxresdefault.jpg","sitBLjdTBJY",{"type":1132,"children":1245,"toc":1246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1247},[],"content:3.videos:live-uniform:009-sitBLjdTBJY.md","3.videos/live-uniform/009-sitBLjdTBJY.md",{"_path":184,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":183,"description":1251,"date":1252,"position":1253,"image":1254,"videoId":1255,"body":1256,"_type":1137,"_id":1260,"_source":1139,"_file":1261,"_extension":1141},"Unpack the Stack livestream with Colby Fayock, Senior Developer Experience Engineer at Cloudinary. \nIn these live streams we unpack a stack. As in, a technical person explains how they built something or we talk about something technical that excites them. \n\nAstrocoder, Developer Experience Engineer, Space Jelly Commander\nColby Fayock helps others get the tech out of the way to solve real problems with the tools of the web. He works with the dev community at Cloudinary and is a prolific creator of educational content teaching others through learning by doing one Star Wars plush cuddle at a time. \nhttps://twitter.com/colbyfayock\nhttps://twitter.com/cloudinary\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif...","2024-05-31T18:34:29Z","010","https://i.ytimg.com/vi/RbJCcl9qaTE/maxresdefault.jpg","RbJCcl9qaTE",{"type":1132,"children":1257,"toc":1258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1259},[],"content:3.videos:live-uniform:010-RbJCcl9qaTE.md","3.videos/live-uniform/010-RbJCcl9qaTE.md",{"_path":187,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":186,"description":1263,"date":1264,"position":1265,"image":1266,"videoId":1267,"body":1268,"_type":1137,"_id":1272,"_source":1139,"_file":1273,"_extension":1141},"Composable without Compromise livestream with Casper Rasmussen.\nCasper and Tim discussed why MACH and Composable matter and how it can help business and developer team be more relevant and agile. Having a composable mindset and MACH tech enables companies to win, but there are typical pitfalls to watch out for which can compromise the potentials on MACH.\n\nSeasoned speaker, technology leader and MACH evangelist.\nCasper acts as the Global business lead for MACH and Composable Enterprise at Valtech. \nCasper is elected President at the MACH Alliance and thereby leads the organization along with the Executive Board.\nhttps://twitter.com/valtech\n\nHis portfolio is focused on complex enterprise transformations and acts as the principle for technical strategy, system architecture and integration approach within his client’s technical landscape. He leads technology engagements by analyzing business goals and requirements, aligning these priorities with a viable technological approach, and leading teams to drive business value for clients. ​ \n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:36Z","011","https://i.ytimg.com/vi/yjc8gvaRvGE/maxresdefault.jpg","yjc8gvaRvGE",{"type":1132,"children":1269,"toc":1270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1271},[],"content:3.videos:live-uniform:011-yjc8gvaRvGE.md","3.videos/live-uniform/011-yjc8gvaRvGE.md",{"_path":190,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":189,"description":1275,"date":1276,"position":1277,"image":1278,"videoId":1279,"body":1280,"_type":1137,"_id":1284,"_source":1139,"_file":1285,"_extension":1141},"Unpack the Stack livestream with Brittney Postma.\nCheck out how Tim and Brittany are unpacking Svelte and SvelteKit live.\n\nBrittney Postma is a self-taught developer and mom of three currently employed at Netlify as a Developer Experience Engineer. She also does podcasts and livestreams with CodingCat.dev and am the co-founder of the Svelte Sirens, a group for women, non-binary people, and allies in the Svelte community.\nhttps://twitter.com/brittneypostma\nhttps://twitter.com/netlify\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:42Z","012","https://i.ytimg.com/vi/6ek_bv2YrF8/maxresdefault.jpg","6ek_bv2YrF8",{"type":1132,"children":1281,"toc":1282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1283},[],"content:3.videos:live-uniform:012-6ek_bv2YrF8.md","3.videos/live-uniform/012-6ek_bv2YrF8.md",{"_path":193,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":192,"description":1287,"date":1288,"position":1289,"image":1290,"videoId":1291,"body":1292,"_type":1137,"_id":1296,"_source":1139,"_file":1297,"_extension":1141},"In this livestream our host Tim Benniks interviews our guest Filip and the questions are listed as below. \n\n1:23 Introduction \n3:17 What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n5:47 If you had to advise agency or SaaS company execs, what would it be?\n10:53 If you could wave a magic wand and change something in our space, what would it be?\n15:00 What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n18:28 What feature from old technology would you like to bring back?\n22:48 How would you explain composable architectures to a 15 year old? \n25:41 What is a question for the next person?\n\nCo-founder & CTO of Vue Storefront - biggest Open Source eCommerce frontend project, co-organizer of Wrocław, Vue.js meetups, web perf geek since 2017, proud cat owner.\nhttps://twitter.com/filrakowski\nhttps://twitter.com/VueStorefront\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif...\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:52Z","013","https://i.ytimg.com/vi/TRISovjciVw/maxresdefault.jpg","TRISovjciVw",{"type":1132,"children":1293,"toc":1294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1295},[],"content:3.videos:live-uniform:013-TRISovjciVw.md","3.videos/live-uniform/013-TRISovjciVw.md",{"_path":196,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":195,"description":1299,"date":1300,"position":1301,"image":1302,"videoId":1303,"body":1304,"_type":1137,"_id":1308,"_source":1139,"_file":1309,"_extension":1141},"Livestream guest: Tomasz Juranek, CTO of Include Agency\nhttps://twitter.com/tjWhuu\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:03Z","014","https://i.ytimg.com/vi/0XSG-apDT6c/maxresdefault.jpg","0XSG-apDT6c",{"type":1132,"children":1305,"toc":1306},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1307},[],"content:3.videos:live-uniform:014-0XSG-apDT6c.md","3.videos/live-uniform/014-0XSG-apDT6c.md",{"_path":199,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":198,"description":1311,"date":1312,"position":1313,"image":1314,"videoId":1315,"body":1316,"_type":1137,"_id":1320,"_source":1139,"_file":1321,"_extension":1141},"In this live stream our host Tim Benniks interviews special guest Dom Selvon with the following questions:\n\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n2. If you had to advise agency or SaaS company execs, what would it be?\n3. If you could wave a magic wand and change something in our space, what would it be?\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n5. What feature from old technology would you like to bring back?\n6. How would you explain composable architectures to a 15 year old?\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:11Z","015","https://i.ytimg.com/vi/HsiRsJtqgS8/maxresdefault.jpg","HsiRsJtqgS8",{"type":1132,"children":1317,"toc":1318},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1319},[],"content:3.videos:live-uniform:015-HsiRsJtqgS8.md","3.videos/live-uniform/015-HsiRsJtqgS8.md",{"_path":202,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":201,"description":1323,"date":1324,"position":1325,"image":1326,"videoId":1327,"body":1328,"_type":1137,"_id":1332,"_source":1139,"_file":1333,"_extension":1141},"Livestream guests:\nSybren Willemot, Front-end developer, Euricom NV / Chakra UI, https://twitter.com/carwack\nJonathan Bakebwa, CTO, Mirror World, https://twitter.com/codebender828\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:17Z","016","https://i.ytimg.com/vi/UUHUL0tpEZY/maxresdefault.jpg","UUHUL0tpEZY",{"type":1132,"children":1329,"toc":1330},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1331},[],"content:3.videos:live-uniform:016-UUHUL0tpEZY.md","3.videos/live-uniform/016-UUHUL0tpEZY.md",{"_path":205,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":204,"description":1335,"date":1336,"position":1337,"image":1338,"videoId":1339,"body":1340,"_type":1137,"_id":1344,"_source":1139,"_file":1345,"_extension":1141},"In this stream, we dive into the new Next JS app directory to see what it is all about. We discuss the new approach to building websites with Next, and we show off how Uniform fits into this new shiny way of working!\nLivestream guest: Steven Tey, Senior Developer Advocate, Vercel\nhttps://twitter.com/steventey\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:22Z","017","https://i.ytimg.com/vi/8Ju8znzJoH4/maxresdefault.jpg","8Ju8znzJoH4",{"type":1132,"children":1341,"toc":1342},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1343},[],"content:3.videos:live-uniform:017-8Ju8znzJoH4.md","3.videos/live-uniform/017-8Ju8znzJoH4.md",{"_path":208,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":207,"description":1347,"date":1348,"position":1349,"image":1350,"videoId":1351,"body":1352,"_type":1137,"_id":1356,"_source":1139,"_file":1357,"_extension":1141},"Livestream guest: Elian Van Cutsem, Software Engineer | Astro Ambassador, vBridge\nhttps://twitter.com/ElianCodes\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:28Z","018","https://i.ytimg.com/vi/wmaCANHmRsI/maxresdefault.jpg","wmaCANHmRsI",{"type":1132,"children":1353,"toc":1354},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1355},[],"content:3.videos:live-uniform:018-wmaCANHmRsI.md","3.videos/live-uniform/018-wmaCANHmRsI.md",{"_path":211,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":210,"description":1359,"date":1360,"position":1361,"image":1362,"videoId":1363,"body":1364,"_type":1137,"_id":1368,"_source":1139,"_file":1369,"_extension":1141},"Livestream guest: Marc Backes, DevRel Lead @WeAreDevelopers\nhttps://twitter.com/themarcba\nhttps://twitter.com/WeAreDevs\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:33Z","019","https://i.ytimg.com/vi/axqVBrV_Xc8/maxresdefault.jpg","axqVBrV_Xc8",{"type":1132,"children":1365,"toc":1366},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1367},[],"content:3.videos:live-uniform:019-axqVBrV_Xc8.md","3.videos/live-uniform/019-axqVBrV_Xc8.md",{"_path":214,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":213,"description":1371,"date":1372,"position":1373,"image":1374,"videoId":1375,"body":1376,"_type":1137,"_id":1380,"_source":1139,"_file":1381,"_extension":1141},"William and Tim discuss Saas companies' different onboarding, upselling, and developer experience approaches.\n\nLivestream guest: William Imoh\nhttps://twitter.com/iChuloo\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:37Z","020","https://i.ytimg.com/vi/gMH8pM-nvL0/maxresdefault.jpg","gMH8pM-nvL0",{"type":1132,"children":1377,"toc":1378},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1379},[],"content:3.videos:live-uniform:020-gMH8pM-nvL0.md","3.videos/live-uniform/020-gMH8pM-nvL0.md",{"_path":217,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":216,"description":1383,"date":1384,"position":1385,"image":1386,"videoId":1387,"body":1388,"_type":1137,"_id":1392,"_source":1139,"_file":1393,"_extension":1141},"Livestream guests: \nMaurizio Pedriale, Co-CTO, Mirahi, https://twitter.com/mpedriale\nBoubacar S. Barry aka Bouba, Co-CTO, Mirahi, https://twitter.com/b_b4rry \nhttps://twitter.com/mirahi_io\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:42Z","021","https://i.ytimg.com/vi/5r8_KIQjk6c/maxresdefault.jpg","5r8_KIQjk6c",{"type":1132,"children":1389,"toc":1390},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1391},[],"content:3.videos:live-uniform:021-5r8_KIQjk6c.md","3.videos/live-uniform/021-5r8_KIQjk6c.md",{"_path":220,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":219,"description":1395,"date":1396,"position":1397,"image":1398,"videoId":1399,"body":1400,"_type":1137,"_id":1404,"_source":1139,"_file":1405,"_extension":1141},"Livestream guest: \nLucie Haberer, Developer Experience Engineer, Prismic\nhttps://twitter.com/li_hbr\nhttps://twitter.com/prismicio\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:49Z","022","https://i.ytimg.com/vi/hvEOqTpoImk/maxresdefault.jpg","hvEOqTpoImk",{"type":1132,"children":1401,"toc":1402},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1403},[],"content:3.videos:live-uniform:022-hvEOqTpoImk.md","3.videos/live-uniform/022-hvEOqTpoImk.md",{"_path":223,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":222,"description":1407,"date":1408,"position":1409,"image":1410,"videoId":1411,"body":1412,"_type":1137,"_id":1416,"_source":1139,"_file":1417,"_extension":1141},"Livestream guest: \nDebbie O'Brien, Senior Program Manager at Microsoft advocating for Playwright Testing\nhttps://twitter.com/debs_obrien\nhttps://twitter.com/playwrightweb\nhttps://twitter.com/Microsoft\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:58Z","023","https://i.ytimg.com/vi/sKUVyVd-nJg/maxresdefault.jpg","sKUVyVd-nJg",{"type":1132,"children":1413,"toc":1414},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1415},[],"content:3.videos:live-uniform:023-sKUVyVd-nJg.md","3.videos/live-uniform/023-sKUVyVd-nJg.md",{"_path":226,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":225,"description":1419,"date":1420,"position":1421,"image":1422,"videoId":1423,"body":1424,"_type":1137,"_id":1428,"_source":1139,"_file":1429,"_extension":1141},"Livestream guest: \nHarshil Agrawal, Developer Advocate, Contentful\nhttps://twitter.com/harshil1712\nhttps://twitter.com/contentful\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:36:07Z","024","https://i.ytimg.com/vi/MnkxTbb3_Vw/maxresdefault.jpg","MnkxTbb3_Vw",{"type":1132,"children":1425,"toc":1426},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1427},[],"content:3.videos:live-uniform:024-MnkxTbb3_Vw.md","3.videos/live-uniform/024-MnkxTbb3_Vw.md",{"_path":229,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":228,"description":1431,"date":1432,"position":1433,"image":1434,"videoId":1435,"body":1436,"_type":1137,"_id":1440,"_source":1139,"_file":1441,"_extension":1141},"Join us live to hear about the latest Uniform features to make content management faster and more efficient for teams. The Component Starter Kit offers open-source, customizable components for building key pages, while improved data connections via Mesh allow for easier setup and fast edge-cached content delivery. \n\nLivestream guest: Richard Bausek, Director of Product Management at Uniform\nhttps://twitter.com/richardbausek\nhttps://uniform.dev/\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:36:13Z","025","https://i.ytimg.com/vi/-hmTWfHON2o/maxresdefault.jpg","-hmTWfHON2o",{"type":1132,"children":1437,"toc":1438},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1439},[],"content:3.videos:live-uniform:025--hmTWfHON2o.md","3.videos/live-uniform/025--hmTWfHON2o.md",{"_path":232,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":231,"description":1443,"date":1444,"position":1445,"image":1446,"videoId":1447,"body":1448,"_type":1137,"_id":1452,"_source":1139,"_file":1453,"_extension":1141},"In this live stream our host Tim Benniks interviews special guest Jonas Ulrich with the following questions:\n\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n2. If you had to advise agency or SaaS company execs, what would it be?\n3. If you could wave a magic wand and change something in our space, what would it be?\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n5. What feature from old technology would you like to bring back?\n6. How would you explain composable architectures to a 15 year old?\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:36:18Z","026","https://i.ytimg.com/vi/DvqvXGgnp5Q/maxresdefault.jpg","DvqvXGgnp5Q",{"type":1132,"children":1449,"toc":1450},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1451},[],"content:3.videos:live-uniform:026-DvqvXGgnp5Q.md","3.videos/live-uniform/026-DvqvXGgnp5Q.md",{"_path":235,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":234,"description":1455,"date":1456,"position":1457,"image":1458,"videoId":1459,"body":1460,"_type":1137,"_id":1464,"_source":1139,"_file":1465,"_extension":1141},"In this live stream our host Tim Benniks interviews special guest Jasmin Guthmann with the following questions:\r\n\r\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\r\n2. If you had to advise agency or SaaS company execs, what would it be?\r\n3. If you could wave a magic wand and change something in our space, what would it be?\r\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\r\n5. What feature from old technology would you like to bring back?\r\n6. How would you explain composable architectures to a 15 year old?\r\n\r\n\r\nLivestream Host: Tim Benniks \r\nhttps://twitter.com/timbenniks\r\nhttps://www.linkedin.com/in/timbenniks/\r\n\r\nJoin us on Discord at https://uniform.to/discord\r\nLearn more at https://uniform.dev\r\n\r\nFollow us on:\r\nFacebook: https://www.facebook.com/people/Uniform/\r\nTwitter: https://twitter.com/UniformDev \r\nLinkedIn: https://www.linkedin.com/company/uniformdev \r\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:36:23Z","027","https://i.ytimg.com/vi/VfeIeragxAc/maxresdefault.jpg","VfeIeragxAc",{"type":1132,"children":1461,"toc":1462},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1463},[],"content:3.videos:live-uniform:027-VfeIeragxAc.md","3.videos/live-uniform/027-VfeIeragxAc.md",{"_path":238,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":237,"description":1467,"date":1468,"position":1469,"image":1470,"videoId":1471,"body":1472,"_type":1137,"_id":1476,"_source":1139,"_file":1477,"_extension":1141},"What Legacy? A uniform Live stream series.","2024-05-31T18:36:30Z","028","https://i.ytimg.com/vi/eKUT1KoA2n8/maxresdefault.jpg","eKUT1KoA2n8",{"type":1132,"children":1473,"toc":1474},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1475},[],"content:3.videos:live-uniform:028-eKUT1KoA2n8.md","3.videos/live-uniform/028-eKUT1KoA2n8.md",{"_path":241,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":240,"description":1479,"date":1480,"position":1481,"image":1482,"videoId":1483,"body":1484,"_type":1137,"_id":1488,"_source":1139,"_file":1489,"_extension":1141},"Mark and Tim explore how the RFP process has improved with composable architectures and how Uniform can help","2024-05-31T18:36:35Z","029","https://i.ytimg.com/vi/OpkLVtnKnCs/maxresdefault.jpg","OpkLVtnKnCs",{"type":1132,"children":1485,"toc":1486},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1487},[],"content:3.videos:live-uniform:029-OpkLVtnKnCs.md","3.videos/live-uniform/029-OpkLVtnKnCs.md",{"_path":244,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":243,"description":1491,"date":1492,"position":1493,"image":1494,"videoId":1495,"body":1496,"_type":1137,"_id":1500,"_source":1139,"_file":1501,"_extension":1141},"We're checking out CMS Delivery APIs and CDNs!","2024-05-31T18:36:43Z","030","https://i.ytimg.com/vi/M-KkUomZG88/maxresdefault.jpg","M-KkUomZG88",{"type":1132,"children":1497,"toc":1498},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1499},[],"content:3.videos:live-uniform:030-M-KkUomZG88.md","3.videos/live-uniform/030-M-KkUomZG88.md",{"_path":247,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":246,"description":1503,"date":1504,"position":1505,"image":1506,"videoId":1507,"body":1508,"_type":1137,"_id":1512,"_source":1139,"_file":1513,"_extension":1141},"Alex and Tim explore migration tactics for monolith to composable architectures.","2024-05-31T18:36:49Z","031","https://i.ytimg.com/vi/JVgiaoTcErQ/maxresdefault.jpg","JVgiaoTcErQ",{"type":1132,"children":1509,"toc":1510},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1511},[],"content:3.videos:live-uniform:031-JVgiaoTcErQ.md","3.videos/live-uniform/031-JVgiaoTcErQ.md",{"_path":250,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":249,"description":1515,"date":1516,"position":1517,"image":1518,"videoId":1519,"body":1520,"_type":1137,"_id":1524,"_source":1139,"_file":1525,"_extension":1141},"In this episode, we discuss SDKs and how to interact with CMSs. Choose wisely!","2024-05-31T18:36:56Z","032","https://i.ytimg.com/vi/IsXYI-5Do5o/maxresdefault.jpg","IsXYI-5Do5o",{"type":1132,"children":1521,"toc":1522},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1523},[],"content:3.videos:live-uniform:032-IsXYI-5Do5o.md","3.videos/live-uniform/032-IsXYI-5Do5o.md",1718484380245] \ No newline at end of file +[{"data":1,"prerenderedAt":1526},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-aI7PA1PA2m":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202,1214,1226,1238,1250,1262,1274,1286,1298,1310,1322,1334,1346,1358,1370,1382,1394,1406,1418,1430,1442,1454,1466,1478,1490,1502,1514],{"_path":154,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":153,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"live-uniform",false,"","Personalization Basics: Intents and signals","2024-05-31T18:33:26Z","000","https://i.ytimg.com/vi/5qX4fmKKh_M/maxresdefault.jpg","5qX4fmKKh_M",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:live-uniform:000-5qX4fmKKh_M.md","content","3.videos/live-uniform/000-5qX4fmKKh_M.md","md",{"_path":157,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":156,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"Tony & Tim have invited Alex Shyba to talk about the Jamstack and beyond!\n\nFollow us here:\nhttps://twitter.com/uniformdev\nhttps://twitter.com/timbenniks\nhttps://twitter.com/tmamedbekov","2024-05-31T18:33:33Z","001","https://i.ytimg.com/vi/ZdQk9zql3zA/maxresdefault.jpg","ZdQk9zql3zA",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:live-uniform:001-ZdQk9zql3zA.md","3.videos/live-uniform/001-ZdQk9zql3zA.md",{"_path":160,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":159,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"In this instalment we look into more complex use cases for personalisation. Search results and indexation can generate amazing results when personalised properly. Adam Lamarre shows how to integrate Uniform with Algolia for great results on Jamstack websites!","2024-05-31T18:33:37Z","002","https://i.ytimg.com/vi/Tngn1E4HEFI/maxresdefault.jpg","Tngn1E4HEFI",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:live-uniform:002-Tngn1E4HEFI.md","3.videos/live-uniform/002-Tngn1E4HEFI.md",{"_path":163,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":162,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"In this stream Tim from Uniform is accompanied by Samuel and Alba to help him set up Storyblok from scratch. After that they dive into how to integrate Uniform with Storyblok as a custom field type to show off how to personalize Storyblok.","2024-05-31T18:33:43Z","003","https://i.ytimg.com/vi/vkFASdFdUF8/maxresdefault.jpg","vkFASdFdUF8",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:live-uniform:003-vkFASdFdUF8.md","3.videos/live-uniform/003-vkFASdFdUF8.md",{"_path":166,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":165,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"Cable management in Next.js: creating compositions with different headless sources with Uniform Canvas in Next.js.","2024-05-31T18:33:51Z","004","https://i.ytimg.com/vi/BAIBxSoAgdw/maxresdefault.jpg","BAIBxSoAgdw",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:live-uniform:004-BAIBxSoAgdw.md","3.videos/live-uniform/004-BAIBxSoAgdw.md",{"_path":169,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":168,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"In this Livestream we are unpacking how Tim created a Cloudinary shoppable video player based on Uniform Canvas data from Contentful and BigCommerce","2024-05-31T18:33:58Z","005","https://i.ytimg.com/vi/RV4wZkhJp7k/maxresdefault.jpg","RV4wZkhJp7k",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:live-uniform:005-RV4wZkhJp7k.md","3.videos/live-uniform/005-RV4wZkhJp7k.md",{"_path":172,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":171,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"Nowadays we are faced with an ever-expanding landscape of headless technologies like commerce engines, CMS, asset management, payments and many more. All these services are API-first and this comes with a new paradigm: there is no more origin server.\r\n\r\nIn this livestream we will use Nuxt 3 to wire up a modern Jamstack site (in a few flavours, including SSR at the egde) that uses many different headless sources. The goal: high performance, great DX, freedom of choice and never re-platforming again...","2024-05-31T18:34:04Z","006","https://i.ytimg.com/vi/R2LwjMEhkmo/maxresdefault.jpg","R2LwjMEhkmo",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:live-uniform:006-R2LwjMEhkmo.md","3.videos/live-uniform/006-R2LwjMEhkmo.md",{"_path":175,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":174,"description":1215,"date":1216,"position":1217,"image":1218,"videoId":1219,"body":1220,"_type":1137,"_id":1224,"_source":1139,"_file":1225,"_extension":1141},"Kicking off our first Composable without Compromise livestream w/ Natalia Venditto. \nIn these live streams we talk about composability. From architectures, to design approaches, to tech organization and governance. Anything MACH Alliance, DXC or headless composition related is a valid subject. Monolith to composable stories. How to deal with composability as a developer, or as a leader. \n\nNatalia worked in the roles of frontend and full-stack developer, technical lead and software architect leading enterprise implementations and as a solutions architect advising on data intensive implementations. Now she leads the end-to-end DX for JavaScript devs on Azure. \nhttps://twitter.com/AnfibiaCreativa\n\nBack in the days when Natalia started working as a developer, the frontend was nothing but a couple of CSS and JavaScript files or lines injected to the HTML. But the whole JavaScript ecosystem has evolved at a very dynamic fast pace. The role of frontend technologies and patterns when designing new web architectures, has never been so influential as it is today. Let's talk about the multiple challenges, but also opportunities, that the cloud offers to build lightning fast and super performant user interfaces, on top of cutting-edge cloud tech!\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:11Z","007","https://i.ytimg.com/vi/7-eBCQiP9Ec/maxresdefault.jpg","7-eBCQiP9Ec",{"type":1132,"children":1221,"toc":1222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1223},[],"content:3.videos:live-uniform:007-7-eBCQiP9Ec.md","3.videos/live-uniform/007-7-eBCQiP9Ec.md",{"_path":178,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":177,"description":1227,"date":1228,"position":1229,"image":1230,"videoId":1231,"body":1232,"_type":1137,"_id":1236,"_source":1139,"_file":1237,"_extension":1141},"Kicking off our first Unpack the Stack livestream w/ Daniel Roe.\nIn these live streams we unpack a stack. As in, a technical person explains how they built something or we talk about something technical that excites them. \n\nDaniel is a core team member of Nuxt - previously a CTO of a SaaS startup. His open-source work has a focus in the Vue.js and Nuxt ecosystems and he's involved in consultancy with companies around the world, particularly around JAMstack, serverless and software architecture. He's based in the North East of England where he lives with his family, three cats, and a dog.\nhttps://twitter.com/danielcroe\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:18Z","008","https://i.ytimg.com/vi/1h0jR_vBZ7M/maxresdefault.jpg","1h0jR_vBZ7M",{"type":1132,"children":1233,"toc":1234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1235},[],"content:3.videos:live-uniform:008-1h0jR_vBZ7M.md","3.videos/live-uniform/008-1h0jR_vBZ7M.md",{"_path":181,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":180,"description":1239,"date":1240,"position":1241,"image":1242,"videoId":1243,"body":1244,"_type":1137,"_id":1248,"_source":1139,"_file":1249,"_extension":1141},"Composable without Compromise livestream with Matt Webb. \nIn these live streams we talk about composability. From architectures, to design approaches, to tech organization and governance. Anything MACH Alliance, DXC or headless composition related is a valid subject. Monolith to composable stories. How to deal with composability as a developer, or as a leader. \n\nA technology lead with over 20 years experience at global CTO level for large digital agencies, delivering projects in the field of global enterprise CMS, eCommerce, data, composable/MACH architectures, through to Internet of things, Augmented/Virtual reality, and Artificial Intelligence. \nBIMA 100 Tech trailblazer 2021, MACH Alliance ambassador.\nhttps://twitter.com/webgeekwebb\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:23Z","009","https://i.ytimg.com/vi/sitBLjdTBJY/maxresdefault.jpg","sitBLjdTBJY",{"type":1132,"children":1245,"toc":1246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1247},[],"content:3.videos:live-uniform:009-sitBLjdTBJY.md","3.videos/live-uniform/009-sitBLjdTBJY.md",{"_path":184,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":183,"description":1251,"date":1252,"position":1253,"image":1254,"videoId":1255,"body":1256,"_type":1137,"_id":1260,"_source":1139,"_file":1261,"_extension":1141},"Unpack the Stack livestream with Colby Fayock, Senior Developer Experience Engineer at Cloudinary. \nIn these live streams we unpack a stack. As in, a technical person explains how they built something or we talk about something technical that excites them. \n\nAstrocoder, Developer Experience Engineer, Space Jelly Commander\nColby Fayock helps others get the tech out of the way to solve real problems with the tools of the web. He works with the dev community at Cloudinary and is a prolific creator of educational content teaching others through learning by doing one Star Wars plush cuddle at a time. \nhttps://twitter.com/colbyfayock\nhttps://twitter.com/cloudinary\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif...","2024-05-31T18:34:29Z","010","https://i.ytimg.com/vi/RbJCcl9qaTE/maxresdefault.jpg","RbJCcl9qaTE",{"type":1132,"children":1257,"toc":1258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1259},[],"content:3.videos:live-uniform:010-RbJCcl9qaTE.md","3.videos/live-uniform/010-RbJCcl9qaTE.md",{"_path":187,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":186,"description":1263,"date":1264,"position":1265,"image":1266,"videoId":1267,"body":1268,"_type":1137,"_id":1272,"_source":1139,"_file":1273,"_extension":1141},"Composable without Compromise livestream with Casper Rasmussen.\nCasper and Tim discussed why MACH and Composable matter and how it can help business and developer team be more relevant and agile. Having a composable mindset and MACH tech enables companies to win, but there are typical pitfalls to watch out for which can compromise the potentials on MACH.\n\nSeasoned speaker, technology leader and MACH evangelist.\nCasper acts as the Global business lead for MACH and Composable Enterprise at Valtech. \nCasper is elected President at the MACH Alliance and thereby leads the organization along with the Executive Board.\nhttps://twitter.com/valtech\n\nHis portfolio is focused on complex enterprise transformations and acts as the principle for technical strategy, system architecture and integration approach within his client’s technical landscape. He leads technology engagements by analyzing business goals and requirements, aligning these priorities with a viable technological approach, and leading teams to drive business value for clients. ​ \n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:36Z","011","https://i.ytimg.com/vi/yjc8gvaRvGE/maxresdefault.jpg","yjc8gvaRvGE",{"type":1132,"children":1269,"toc":1270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1271},[],"content:3.videos:live-uniform:011-yjc8gvaRvGE.md","3.videos/live-uniform/011-yjc8gvaRvGE.md",{"_path":190,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":189,"description":1275,"date":1276,"position":1277,"image":1278,"videoId":1279,"body":1280,"_type":1137,"_id":1284,"_source":1139,"_file":1285,"_extension":1141},"Unpack the Stack livestream with Brittney Postma.\nCheck out how Tim and Brittany are unpacking Svelte and SvelteKit live.\n\nBrittney Postma is a self-taught developer and mom of three currently employed at Netlify as a Developer Experience Engineer. She also does podcasts and livestreams with CodingCat.dev and am the co-founder of the Svelte Sirens, a group for women, non-binary people, and allies in the Svelte community.\nhttps://twitter.com/brittneypostma\nhttps://twitter.com/netlify\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:42Z","012","https://i.ytimg.com/vi/6ek_bv2YrF8/maxresdefault.jpg","6ek_bv2YrF8",{"type":1132,"children":1281,"toc":1282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1283},[],"content:3.videos:live-uniform:012-6ek_bv2YrF8.md","3.videos/live-uniform/012-6ek_bv2YrF8.md",{"_path":193,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":192,"description":1287,"date":1288,"position":1289,"image":1290,"videoId":1291,"body":1292,"_type":1137,"_id":1296,"_source":1139,"_file":1297,"_extension":1141},"In this livestream our host Tim Benniks interviews our guest Filip and the questions are listed as below. \n\n1:23 Introduction \n3:17 What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n5:47 If you had to advise agency or SaaS company execs, what would it be?\n10:53 If you could wave a magic wand and change something in our space, what would it be?\n15:00 What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n18:28 What feature from old technology would you like to bring back?\n22:48 How would you explain composable architectures to a 15 year old? \n25:41 What is a question for the next person?\n\nCo-founder & CTO of Vue Storefront - biggest Open Source eCommerce frontend project, co-organizer of Wrocław, Vue.js meetups, web perf geek since 2017, proud cat owner.\nhttps://twitter.com/filrakowski\nhttps://twitter.com/VueStorefront\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif...\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:34:52Z","013","https://i.ytimg.com/vi/TRISovjciVw/maxresdefault.jpg","TRISovjciVw",{"type":1132,"children":1293,"toc":1294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1295},[],"content:3.videos:live-uniform:013-TRISovjciVw.md","3.videos/live-uniform/013-TRISovjciVw.md",{"_path":196,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":195,"description":1299,"date":1300,"position":1301,"image":1302,"videoId":1303,"body":1304,"_type":1137,"_id":1308,"_source":1139,"_file":1309,"_extension":1141},"Livestream guest: Tomasz Juranek, CTO of Include Agency\nhttps://twitter.com/tjWhuu\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:03Z","014","https://i.ytimg.com/vi/0XSG-apDT6c/maxresdefault.jpg","0XSG-apDT6c",{"type":1132,"children":1305,"toc":1306},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1307},[],"content:3.videos:live-uniform:014-0XSG-apDT6c.md","3.videos/live-uniform/014-0XSG-apDT6c.md",{"_path":199,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":198,"description":1311,"date":1312,"position":1313,"image":1314,"videoId":1315,"body":1316,"_type":1137,"_id":1320,"_source":1139,"_file":1321,"_extension":1141},"In this live stream our host Tim Benniks interviews special guest Dom Selvon with the following questions:\n\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n2. If you had to advise agency or SaaS company execs, what would it be?\n3. If you could wave a magic wand and change something in our space, what would it be?\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n5. What feature from old technology would you like to bring back?\n6. How would you explain composable architectures to a 15 year old?\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:11Z","015","https://i.ytimg.com/vi/HsiRsJtqgS8/maxresdefault.jpg","HsiRsJtqgS8",{"type":1132,"children":1317,"toc":1318},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1319},[],"content:3.videos:live-uniform:015-HsiRsJtqgS8.md","3.videos/live-uniform/015-HsiRsJtqgS8.md",{"_path":202,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":201,"description":1323,"date":1324,"position":1325,"image":1326,"videoId":1327,"body":1328,"_type":1137,"_id":1332,"_source":1139,"_file":1333,"_extension":1141},"Livestream guests:\nSybren Willemot, Front-end developer, Euricom NV / Chakra UI, https://twitter.com/carwack\nJonathan Bakebwa, CTO, Mirror World, https://twitter.com/codebender828\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:17Z","016","https://i.ytimg.com/vi/UUHUL0tpEZY/maxresdefault.jpg","UUHUL0tpEZY",{"type":1132,"children":1329,"toc":1330},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1331},[],"content:3.videos:live-uniform:016-UUHUL0tpEZY.md","3.videos/live-uniform/016-UUHUL0tpEZY.md",{"_path":205,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":204,"description":1335,"date":1336,"position":1337,"image":1338,"videoId":1339,"body":1340,"_type":1137,"_id":1344,"_source":1139,"_file":1345,"_extension":1141},"In this stream, we dive into the new Next JS app directory to see what it is all about. We discuss the new approach to building websites with Next, and we show off how Uniform fits into this new shiny way of working!\nLivestream guest: Steven Tey, Senior Developer Advocate, Vercel\nhttps://twitter.com/steventey\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:22Z","017","https://i.ytimg.com/vi/8Ju8znzJoH4/maxresdefault.jpg","8Ju8znzJoH4",{"type":1132,"children":1341,"toc":1342},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1343},[],"content:3.videos:live-uniform:017-8Ju8znzJoH4.md","3.videos/live-uniform/017-8Ju8znzJoH4.md",{"_path":208,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":207,"description":1347,"date":1348,"position":1349,"image":1350,"videoId":1351,"body":1352,"_type":1137,"_id":1356,"_source":1139,"_file":1357,"_extension":1141},"Livestream guest: Elian Van Cutsem, Software Engineer | Astro Ambassador, vBridge\nhttps://twitter.com/ElianCodes\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:28Z","018","https://i.ytimg.com/vi/wmaCANHmRsI/maxresdefault.jpg","wmaCANHmRsI",{"type":1132,"children":1353,"toc":1354},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1355},[],"content:3.videos:live-uniform:018-wmaCANHmRsI.md","3.videos/live-uniform/018-wmaCANHmRsI.md",{"_path":211,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":210,"description":1359,"date":1360,"position":1361,"image":1362,"videoId":1363,"body":1364,"_type":1137,"_id":1368,"_source":1139,"_file":1369,"_extension":1141},"Livestream guest: Marc Backes, DevRel Lead @WeAreDevelopers\nhttps://twitter.com/themarcba\nhttps://twitter.com/WeAreDevs\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:33Z","019","https://i.ytimg.com/vi/axqVBrV_Xc8/maxresdefault.jpg","axqVBrV_Xc8",{"type":1132,"children":1365,"toc":1366},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1367},[],"content:3.videos:live-uniform:019-axqVBrV_Xc8.md","3.videos/live-uniform/019-axqVBrV_Xc8.md",{"_path":214,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":213,"description":1371,"date":1372,"position":1373,"image":1374,"videoId":1375,"body":1376,"_type":1137,"_id":1380,"_source":1139,"_file":1381,"_extension":1141},"William and Tim discuss Saas companies' different onboarding, upselling, and developer experience approaches.\n\nLivestream guest: William Imoh\nhttps://twitter.com/iChuloo\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:37Z","020","https://i.ytimg.com/vi/gMH8pM-nvL0/maxresdefault.jpg","gMH8pM-nvL0",{"type":1132,"children":1377,"toc":1378},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1379},[],"content:3.videos:live-uniform:020-gMH8pM-nvL0.md","3.videos/live-uniform/020-gMH8pM-nvL0.md",{"_path":217,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":216,"description":1383,"date":1384,"position":1385,"image":1386,"videoId":1387,"body":1388,"_type":1137,"_id":1392,"_source":1139,"_file":1393,"_extension":1141},"Livestream guests: \nMaurizio Pedriale, Co-CTO, Mirahi, https://twitter.com/mpedriale\nBoubacar S. Barry aka Bouba, Co-CTO, Mirahi, https://twitter.com/b_b4rry \nhttps://twitter.com/mirahi_io\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:42Z","021","https://i.ytimg.com/vi/5r8_KIQjk6c/maxresdefault.jpg","5r8_KIQjk6c",{"type":1132,"children":1389,"toc":1390},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1391},[],"content:3.videos:live-uniform:021-5r8_KIQjk6c.md","3.videos/live-uniform/021-5r8_KIQjk6c.md",{"_path":220,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":219,"description":1395,"date":1396,"position":1397,"image":1398,"videoId":1399,"body":1400,"_type":1137,"_id":1404,"_source":1139,"_file":1405,"_extension":1141},"Livestream guest: \nLucie Haberer, Developer Experience Engineer, Prismic\nhttps://twitter.com/li_hbr\nhttps://twitter.com/prismicio\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:49Z","022","https://i.ytimg.com/vi/hvEOqTpoImk/maxresdefault.jpg","hvEOqTpoImk",{"type":1132,"children":1401,"toc":1402},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1403},[],"content:3.videos:live-uniform:022-hvEOqTpoImk.md","3.videos/live-uniform/022-hvEOqTpoImk.md",{"_path":223,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":222,"description":1407,"date":1408,"position":1409,"image":1410,"videoId":1411,"body":1412,"_type":1137,"_id":1416,"_source":1139,"_file":1417,"_extension":1141},"Livestream guest: \nDebbie O'Brien, Senior Program Manager at Microsoft advocating for Playwright Testing\nhttps://twitter.com/debs_obrien\nhttps://twitter.com/playwrightweb\nhttps://twitter.com/Microsoft\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:35:58Z","023","https://i.ytimg.com/vi/sKUVyVd-nJg/maxresdefault.jpg","sKUVyVd-nJg",{"type":1132,"children":1413,"toc":1414},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1415},[],"content:3.videos:live-uniform:023-sKUVyVd-nJg.md","3.videos/live-uniform/023-sKUVyVd-nJg.md",{"_path":226,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":225,"description":1419,"date":1420,"position":1421,"image":1422,"videoId":1423,"body":1424,"_type":1137,"_id":1428,"_source":1139,"_file":1429,"_extension":1141},"Livestream guest: \nHarshil Agrawal, Developer Advocate, Contentful\nhttps://twitter.com/harshil1712\nhttps://twitter.com/contentful\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:36:07Z","024","https://i.ytimg.com/vi/MnkxTbb3_Vw/maxresdefault.jpg","MnkxTbb3_Vw",{"type":1132,"children":1425,"toc":1426},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1427},[],"content:3.videos:live-uniform:024-MnkxTbb3_Vw.md","3.videos/live-uniform/024-MnkxTbb3_Vw.md",{"_path":229,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":228,"description":1431,"date":1432,"position":1433,"image":1434,"videoId":1435,"body":1436,"_type":1137,"_id":1440,"_source":1139,"_file":1441,"_extension":1141},"Join us live to hear about the latest Uniform features to make content management faster and more efficient for teams. The Component Starter Kit offers open-source, customizable components for building key pages, while improved data connections via Mesh allow for easier setup and fast edge-cached content delivery. \n\nLivestream guest: Richard Bausek, Director of Product Management at Uniform\nhttps://twitter.com/richardbausek\nhttps://uniform.dev/\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:36:13Z","025","https://i.ytimg.com/vi/-hmTWfHON2o/maxresdefault.jpg","-hmTWfHON2o",{"type":1132,"children":1437,"toc":1438},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1439},[],"content:3.videos:live-uniform:025--hmTWfHON2o.md","3.videos/live-uniform/025--hmTWfHON2o.md",{"_path":232,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":231,"description":1443,"date":1444,"position":1445,"image":1446,"videoId":1447,"body":1448,"_type":1137,"_id":1452,"_source":1139,"_file":1453,"_extension":1141},"In this live stream our host Tim Benniks interviews special guest Jonas Ulrich with the following questions:\n\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\n2. If you had to advise agency or SaaS company execs, what would it be?\n3. If you could wave a magic wand and change something in our space, what would it be?\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\n5. What feature from old technology would you like to bring back?\n6. How would you explain composable architectures to a 15 year old?\n\n\nLivestream Host: Tim Benniks \nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\nJoin us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev \nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:36:18Z","026","https://i.ytimg.com/vi/DvqvXGgnp5Q/maxresdefault.jpg","DvqvXGgnp5Q",{"type":1132,"children":1449,"toc":1450},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1451},[],"content:3.videos:live-uniform:026-DvqvXGgnp5Q.md","3.videos/live-uniform/026-DvqvXGgnp5Q.md",{"_path":235,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":234,"description":1455,"date":1456,"position":1457,"image":1458,"videoId":1459,"body":1460,"_type":1137,"_id":1464,"_source":1139,"_file":1465,"_extension":1141},"In this live stream our host Tim Benniks interviews special guest Jasmin Guthmann with the following questions:\r\n\r\n1. What is an unexpected or surprising outcome of transitioning from a monolithic to a composable architecture?\r\n2. If you had to advise agency or SaaS company execs, what would it be?\r\n3. If you could wave a magic wand and change something in our space, what would it be?\r\n4. What bottlenecks have you seen in composable architectures? This could be any bottleneck, from tech to process.\r\n5. What feature from old technology would you like to bring back?\r\n6. How would you explain composable architectures to a 15 year old?\r\n\r\n\r\nLivestream Host: Tim Benniks \r\nhttps://twitter.com/timbenniks\r\nhttps://www.linkedin.com/in/timbenniks/\r\n\r\nJoin us on Discord at https://uniform.to/discord\r\nLearn more at https://uniform.dev\r\n\r\nFollow us on:\r\nFacebook: https://www.facebook.com/people/Uniform/\r\nTwitter: https://twitter.com/UniformDev \r\nLinkedIn: https://www.linkedin.com/company/uniformdev \r\nInstagram: https://www.instagram.com/uniform.dev/","2024-05-31T18:36:23Z","027","https://i.ytimg.com/vi/VfeIeragxAc/maxresdefault.jpg","VfeIeragxAc",{"type":1132,"children":1461,"toc":1462},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1463},[],"content:3.videos:live-uniform:027-VfeIeragxAc.md","3.videos/live-uniform/027-VfeIeragxAc.md",{"_path":238,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":237,"description":1467,"date":1468,"position":1469,"image":1470,"videoId":1471,"body":1472,"_type":1137,"_id":1476,"_source":1139,"_file":1477,"_extension":1141},"What Legacy? A uniform Live stream series.","2024-05-31T18:36:30Z","028","https://i.ytimg.com/vi/eKUT1KoA2n8/maxresdefault.jpg","eKUT1KoA2n8",{"type":1132,"children":1473,"toc":1474},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1475},[],"content:3.videos:live-uniform:028-eKUT1KoA2n8.md","3.videos/live-uniform/028-eKUT1KoA2n8.md",{"_path":241,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":240,"description":1479,"date":1480,"position":1481,"image":1482,"videoId":1483,"body":1484,"_type":1137,"_id":1488,"_source":1139,"_file":1489,"_extension":1141},"Mark and Tim explore how the RFP process has improved with composable architectures and how Uniform can help","2024-05-31T18:36:35Z","029","https://i.ytimg.com/vi/OpkLVtnKnCs/maxresdefault.jpg","OpkLVtnKnCs",{"type":1132,"children":1485,"toc":1486},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1487},[],"content:3.videos:live-uniform:029-OpkLVtnKnCs.md","3.videos/live-uniform/029-OpkLVtnKnCs.md",{"_path":244,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":243,"description":1491,"date":1492,"position":1493,"image":1494,"videoId":1495,"body":1496,"_type":1137,"_id":1500,"_source":1139,"_file":1501,"_extension":1141},"We're checking out CMS Delivery APIs and CDNs!","2024-05-31T18:36:43Z","030","https://i.ytimg.com/vi/M-KkUomZG88/maxresdefault.jpg","M-KkUomZG88",{"type":1132,"children":1497,"toc":1498},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1499},[],"content:3.videos:live-uniform:030-M-KkUomZG88.md","3.videos/live-uniform/030-M-KkUomZG88.md",{"_path":247,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":246,"description":1503,"date":1504,"position":1505,"image":1506,"videoId":1507,"body":1508,"_type":1137,"_id":1512,"_source":1139,"_file":1513,"_extension":1141},"Alex and Tim explore migration tactics for monolith to composable architectures.","2024-05-31T18:36:49Z","031","https://i.ytimg.com/vi/JVgiaoTcErQ/maxresdefault.jpg","JVgiaoTcErQ",{"type":1132,"children":1509,"toc":1510},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1511},[],"content:3.videos:live-uniform:031-JVgiaoTcErQ.md","3.videos/live-uniform/031-JVgiaoTcErQ.md",{"_path":250,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":249,"description":1515,"date":1516,"position":1517,"image":1518,"videoId":1519,"body":1520,"_type":1137,"_id":1524,"_source":1139,"_file":1525,"_extension":1141},"In this episode, we discuss SDKs and how to interact with CMSs. Choose wisely!","2024-05-31T18:36:56Z","032","https://i.ytimg.com/vi/IsXYI-5Do5o/maxresdefault.jpg","IsXYI-5Do5o",{"type":1132,"children":1521,"toc":1522},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1523},[],"content:3.videos:live-uniform:032-IsXYI-5Do5o.md","3.videos/live-uniform/032-IsXYI-5Do5o.md",1718484820969] \ No newline at end of file diff --git a/videos/live-uniform/index.html b/videos/live-uniform/index.html index 80695f7c..c6e0da86 100644 --- a/videos/live-uniform/index.html +++ b/videos/live-uniform/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -

Uniform live streams

- \ No newline at end of file + + +

Uniform live streams

+ \ No newline at end of file diff --git a/videos/misc-streams/_payload.json b/videos/misc-streams/_payload.json index 4d3a073f..2f5149c7 100644 --- a/videos/misc-streams/_payload.json +++ b/videos/misc-streams/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1214},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-aZUMfAUuoc":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202],{"_path":257,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":256,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"misc-streams",false,"","Tim Benniks and Sonja Keerl will dive into the findings of the latest Forrester Wave™ for B2C Commerce, unveiling something noteworthy: the leader quadrant remained empty.","2024-06-15T10:46:55Z","000","https://i.ytimg.com/vi/1TJMq5b0fMc/maxresdefault.jpg","1TJMq5b0fMc",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:misc-streams:000-1TJMq5b0fMc.md","content","3.videos/misc-streams/000-1TJMq5b0fMc.md","md",{"_path":260,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":259,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"Have you ever been to the summit of Mount Stupid? No need to answer: you likely climbed it a few times! Today we discuss the Dunning-Kruger Effect and our personal experiences with it.","2024-06-15T10:46:51Z","001","https://i.ytimg.com/vi/TvPdZPL2pvM/maxresdefault.jpg","TvPdZPL2pvM",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:misc-streams:001-TvPdZPL2pvM.md","3.videos/misc-streams/001-TvPdZPL2pvM.md",{"_path":263,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":262,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"Videos are a highly engaging and dynamic medium that can effectively capture and retain the attention of B2B audiences—allowing businesses to convey complex information visually appealing and concisely, making it easier for customers to understand their products or services. They also help build trust, as B2B purchases often involve significant investments and long-term commitments. Video marketing enables companies to showcase their expertise, demonstrate their products in action, and provide customer testimonials, which help build trust and credibility with potential buyers.\nHeyGen is a b2b solution that allows customers to create AI videos at scale. Fast and affordable, saving your team time and money. No camera, no crew, no problem.\n\nThe webinar will be a live interview where our CEO and Co-Founder, Josh Xu, will discuss a customer success story with Tim Benniks, who created an Avatar Lite using HeyGen AI technology, became a brand ambassador, and developed a b2b marketing strategy for his company. \n\nTake advantage of this exciting and informative live and interactive webinar. We will also be giving a five-minute credit to attendees to start creating AI videos at scale. Join us and discover the power of HeyGen AI.\n\nWhen: Thursday, July 27, 11:00 am PST/ 2:00 pm EST","2023-07-27T18:45:56Z","002","https://i.ytimg.com/vi/rjjyHwSO1gg/maxresdefault.jpg","rjjyHwSO1gg",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:misc-streams:002-rjjyHwSO1gg.md","3.videos/misc-streams/002-rjjyHwSO1gg.md",{"_path":265,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":246,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"Alex and Tim explore migration tactics for monolith to composable architectures.","2023-07-25T11:36:51Z","003","https://i.ytimg.com/vi/JVgiaoTcErQ/maxresdefault.jpg","JVgiaoTcErQ",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:misc-streams:003-JVgiaoTcErQ.md","3.videos/misc-streams/003-JVgiaoTcErQ.md",{"_path":267,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":237,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"What Legacy? A uniform Live stream series.","2023-07-25T11:37:10Z","004","https://i.ytimg.com/vi/eKUT1KoA2n8/maxresdefault.jpg","eKUT1KoA2n8",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:misc-streams:004-eKUT1KoA2n8.md","3.videos/misc-streams/004-eKUT1KoA2n8.md",{"_path":270,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":269,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"TresJS brings Three to the Vue ecosystem. This is the #timtries Series. Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time.","2023-03-19T15:52:33Z","005","https://i.ytimg.com/vi/D8AhNcXgrYg/maxresdefault.jpg","D8AhNcXgrYg",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:misc-streams:005-D8AhNcXgrYg.md","3.videos/misc-streams/005-D8AhNcXgrYg.md",{"_path":273,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":272,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"So you like keyboards right? Me too! I have a ton of questions so I have asked keyboard experts Janos and Konstantin to join me on a live stream and answer all of them 🔥🌶️🥳","2023-03-19T15:52:17Z","006","https://i.ytimg.com/vi/UmfRj32Jle0/maxresdefault.jpg","UmfRj32Jle0",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:misc-streams:006-UmfRj32Jle0.md","3.videos/misc-streams/006-UmfRj32Jle0.md",1718484380241] \ No newline at end of file +[{"data":1,"prerenderedAt":1214},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-aZUMfAUuoc":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202],{"_path":257,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":256,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"misc-streams",false,"","Tim Benniks and Sonja Keerl will dive into the findings of the latest Forrester Wave™ for B2C Commerce, unveiling something noteworthy: the leader quadrant remained empty.","2024-06-15T10:46:55Z","000","https://i.ytimg.com/vi/1TJMq5b0fMc/maxresdefault.jpg","1TJMq5b0fMc",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:misc-streams:000-1TJMq5b0fMc.md","content","3.videos/misc-streams/000-1TJMq5b0fMc.md","md",{"_path":260,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":259,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"Have you ever been to the summit of Mount Stupid? No need to answer: you likely climbed it a few times! Today we discuss the Dunning-Kruger Effect and our personal experiences with it.","2024-06-15T10:46:51Z","001","https://i.ytimg.com/vi/TvPdZPL2pvM/maxresdefault.jpg","TvPdZPL2pvM",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:misc-streams:001-TvPdZPL2pvM.md","3.videos/misc-streams/001-TvPdZPL2pvM.md",{"_path":263,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":262,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"Videos are a highly engaging and dynamic medium that can effectively capture and retain the attention of B2B audiences—allowing businesses to convey complex information visually appealing and concisely, making it easier for customers to understand their products or services. They also help build trust, as B2B purchases often involve significant investments and long-term commitments. Video marketing enables companies to showcase their expertise, demonstrate their products in action, and provide customer testimonials, which help build trust and credibility with potential buyers.\nHeyGen is a b2b solution that allows customers to create AI videos at scale. Fast and affordable, saving your team time and money. No camera, no crew, no problem.\n\nThe webinar will be a live interview where our CEO and Co-Founder, Josh Xu, will discuss a customer success story with Tim Benniks, who created an Avatar Lite using HeyGen AI technology, became a brand ambassador, and developed a b2b marketing strategy for his company. \n\nTake advantage of this exciting and informative live and interactive webinar. We will also be giving a five-minute credit to attendees to start creating AI videos at scale. Join us and discover the power of HeyGen AI.\n\nWhen: Thursday, July 27, 11:00 am PST/ 2:00 pm EST","2023-07-27T18:45:56Z","002","https://i.ytimg.com/vi/rjjyHwSO1gg/maxresdefault.jpg","rjjyHwSO1gg",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:misc-streams:002-rjjyHwSO1gg.md","3.videos/misc-streams/002-rjjyHwSO1gg.md",{"_path":265,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":246,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"Alex and Tim explore migration tactics for monolith to composable architectures.","2023-07-25T11:36:51Z","003","https://i.ytimg.com/vi/JVgiaoTcErQ/maxresdefault.jpg","JVgiaoTcErQ",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:misc-streams:003-JVgiaoTcErQ.md","3.videos/misc-streams/003-JVgiaoTcErQ.md",{"_path":267,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":237,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"What Legacy? A uniform Live stream series.","2023-07-25T11:37:10Z","004","https://i.ytimg.com/vi/eKUT1KoA2n8/maxresdefault.jpg","eKUT1KoA2n8",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:misc-streams:004-eKUT1KoA2n8.md","3.videos/misc-streams/004-eKUT1KoA2n8.md",{"_path":270,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":269,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"TresJS brings Three to the Vue ecosystem. This is the #timtries Series. Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time.","2023-03-19T15:52:33Z","005","https://i.ytimg.com/vi/D8AhNcXgrYg/maxresdefault.jpg","D8AhNcXgrYg",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:misc-streams:005-D8AhNcXgrYg.md","3.videos/misc-streams/005-D8AhNcXgrYg.md",{"_path":273,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":272,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"So you like keyboards right? Me too! I have a ton of questions so I have asked keyboard experts Janos and Konstantin to join me on a live stream and answer all of them 🔥🌶️🥳","2023-03-19T15:52:17Z","006","https://i.ytimg.com/vi/UmfRj32Jle0/maxresdefault.jpg","UmfRj32Jle0",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:misc-streams:006-UmfRj32Jle0.md","3.videos/misc-streams/006-UmfRj32Jle0.md",1718484820964] \ No newline at end of file diff --git a/videos/misc-streams/index.html b/videos/misc-streams/index.html index 5f495a8d..2b2f2ead 100644 --- a/videos/misc-streams/index.html +++ b/videos/misc-streams/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -
- \ No newline at end of file + + +
+ \ No newline at end of file diff --git a/videos/mp/_payload.json b/videos/mp/_payload.json index 8b241fe3..3abae37b 100644 --- a/videos/mp/_payload.json +++ b/videos/mp/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1201},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-aRC2IOP0bU":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1189],{"_path":280,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":279,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"mp",false,"","At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2024-03-01T11:20:13Z","000","https://i.ytimg.com/vi/ubGZoaWMqLw/maxresdefault.jpg","ubGZoaWMqLw",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:mp:000-ubGZoaWMqLw.md","content","3.videos/mp/000-ubGZoaWMqLw.md","md",{"_path":283,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":282,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2023-02-13T08:34:01Z","001","https://i.ytimg.com/vi/zX6_Fi0sDMY/maxresdefault.jpg","zX6_Fi0sDMY",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:mp:001-zX6_Fi0sDMY.md","3.videos/mp/001-zX6_Fi0sDMY.md",{"_path":286,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":285,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"Marc and Tim explored backstage at the JSWorld conference, one of the biggest JS conferences in the world. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video-edit, and sound-edit, and publish the video on the day. Film in the morning, show in the afternoon.","2023-02-13T08:19:14Z","002","https://i.ytimg.com/vi/D4RaI10P9m4/maxresdefault.jpg","D4RaI10P9m4",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:mp:002-D4RaI10P9m4.md","3.videos/mp/002-D4RaI10P9m4.md",{"_path":289,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":288,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"At the biggest Vue.js event in the world, Tim & Marc explored backstage. Camera in one hand, microphone in the other, they captured the vibe of the conference in perfect light. This is how \"Intervues\" was born.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2022-07-27T08:40:09Z","003","https://i.ytimg.com/vi/TMf2WznToOA/maxresdefault.jpg","TMf2WznToOA",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:mp:003-TMf2WznToOA.md","3.videos/mp/003-TMf2WznToOA.md",{"_path":292,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":291,"description":1167,"date":1179,"position":1180,"image":1181,"videoId":1182,"body":1183,"_type":1137,"_id":1187,"_source":1139,"_file":1188,"_extension":1141},"2022-07-19T09:06:13Z","004","https://i.ytimg.com/vi/XHBwUK0qlUE/maxresdefault.jpg","XHBwUK0qlUE",{"type":1132,"children":1184,"toc":1185},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1186},[],"content:3.videos:mp:004-XHBwUK0qlUE.md","3.videos/mp/004-XHBwUK0qlUE.md",{"_path":295,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":294,"description":1190,"date":1191,"position":1192,"image":1193,"videoId":1194,"body":1195,"_type":1137,"_id":1199,"_source":1139,"_file":1200,"_extension":1141},"In beautiful Barcelona, Tim & Marc joined a warm chapter of Vue.js Roadtrips organized by Passionate People. They interviewed speakers and captured the vibe around the event.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2022-07-11T07:12:16Z","005","https://i.ytimg.com/vi/2E_kK9mqRwM/maxresdefault.jpg","2E_kK9mqRwM",{"type":1132,"children":1196,"toc":1197},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1198},[],"content:3.videos:mp:005-2E_kK9mqRwM.md","3.videos/mp/005-2E_kK9mqRwM.md",1718484380301] \ No newline at end of file +[{"data":1,"prerenderedAt":1201},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-aRC2IOP0bU":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1189],{"_path":280,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":279,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"mp",false,"","At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2024-03-01T11:20:13Z","000","https://i.ytimg.com/vi/ubGZoaWMqLw/maxresdefault.jpg","ubGZoaWMqLw",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:mp:000-ubGZoaWMqLw.md","content","3.videos/mp/000-ubGZoaWMqLw.md","md",{"_path":283,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":282,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"At the biggest Vue.js event in the world, @themarcba and @timbenniks explored backstage. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2023-02-13T08:34:01Z","001","https://i.ytimg.com/vi/zX6_Fi0sDMY/maxresdefault.jpg","zX6_Fi0sDMY",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:mp:001-zX6_Fi0sDMY.md","3.videos/mp/001-zX6_Fi0sDMY.md",{"_path":286,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":285,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"Marc and Tim explored backstage at the JSWorld conference, one of the biggest JS conferences in the world. Camera in one hand, microphone in the other, capturing the vibe, the technology used, and how the speakers feel about their talks.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, video-edit, and sound-edit, and publish the video on the day. Film in the morning, show in the afternoon.","2023-02-13T08:19:14Z","002","https://i.ytimg.com/vi/D4RaI10P9m4/maxresdefault.jpg","D4RaI10P9m4",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:mp:002-D4RaI10P9m4.md","3.videos/mp/002-D4RaI10P9m4.md",{"_path":289,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":288,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"At the biggest Vue.js event in the world, Tim & Marc explored backstage. Camera in one hand, microphone in the other, they captured the vibe of the conference in perfect light. This is how \"Intervues\" was born.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2022-07-27T08:40:09Z","003","https://i.ytimg.com/vi/TMf2WznToOA/maxresdefault.jpg","TMf2WznToOA",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:mp:003-TMf2WznToOA.md","3.videos/mp/003-TMf2WznToOA.md",{"_path":292,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":291,"description":1167,"date":1179,"position":1180,"image":1181,"videoId":1182,"body":1183,"_type":1137,"_id":1187,"_source":1139,"_file":1188,"_extension":1141},"2022-07-19T09:06:13Z","004","https://i.ytimg.com/vi/XHBwUK0qlUE/maxresdefault.jpg","XHBwUK0qlUE",{"type":1132,"children":1184,"toc":1185},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1186},[],"content:3.videos:mp:004-XHBwUK0qlUE.md","3.videos/mp/004-XHBwUK0qlUE.md",{"_path":295,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":294,"description":1190,"date":1191,"position":1192,"image":1193,"videoId":1194,"body":1195,"_type":1137,"_id":1199,"_source":1139,"_file":1200,"_extension":1141},"In beautiful Barcelona, Tim & Marc joined a warm chapter of Vue.js Roadtrips organized by Passionate People. They interviewed speakers and captured the vibe around the event.\n\nThis is Middleware Productions: we film interviews, shoot b-roll, create story arcs, edit, sound edit, and publish the video on the day itself. Film in the morning, show in the afternoon.","2022-07-11T07:12:16Z","005","https://i.ytimg.com/vi/2E_kK9mqRwM/maxresdefault.jpg","2E_kK9mqRwM",{"type":1132,"children":1196,"toc":1197},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1198},[],"content:3.videos:mp:005-2E_kK9mqRwM.md","3.videos/mp/005-2E_kK9mqRwM.md",1718484821233] \ No newline at end of file diff --git a/videos/mp/index.html b/videos/mp/index.html index da6d24b5..47759f3c 100644 --- a/videos/mp/index.html +++ b/videos/mp/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -
- \ No newline at end of file + + +
+ \ No newline at end of file diff --git a/videos/tim/_payload.json b/videos/tim/_payload.json index aaf81fa1..a0eedb10 100644 --- a/videos/tim/_payload.json +++ b/videos/tim/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":2430},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-6Uvc9RWyfL":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202,1214,1226,1238,1250,1262,1274,1286,1298,1310,1322,1334,1346,1358,1370,1382,1394,1405,1416,1427,1438,1449,1460,1471,1483,1494,1506,1518,1530,1542,1554,1566,1578,1590,1602,1614,1626,1638,1650,1662,1674,1686,1698,1710,1722,1734,1746,1758,1770,1782,1794,1806,1818,1830,1842,1854,1866,1878,1890,1902,1914,1926,1938,1950,1962,1974,1986,1998,2010,2022,2034,2046,2058,2070,2082,2094,2106,2118,2130,2142,2154,2166,2178,2190,2202,2214,2226,2238,2250,2262,2274,2286,2298,2310,2322,2334,2346,2358,2370,2382,2394,2406,2418],{"_path":301,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":19,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"tim",false,"","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-10T07:13:06Z","000","https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","mvq-_s20NDk",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:tim:000-mvq-_s20NDk.md","content","3.videos/tim/000-mvq-_s20NDk.md","md",{"_path":304,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":303,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"Jake Ward, the co-founder and CEO of Data Protocol, and I discuss the current state of developer advocacy in 2024 and share insights on how dev rel teams can measure their impact.\n\nFollow Jake here:\nhttps://twitter.com/Jacobmward\nhttps://dataprotocol.com\nhttps://www.linkedin.com/in/jacobmward/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://linkedin.com/in/timbenniks","2024-04-15T13:00:24Z","001","https://i.ytimg.com/vi/VEX0KtITib4/maxresdefault.jpg","VEX0KtITib4",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:tim:001-VEX0KtITib4.md","3.videos/tim/001-VEX0KtITib4.md",{"_path":307,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":306,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"Developer relations is having a bit of a rough time right now and in this video I explain my vision on how to succeed in 2024. \n\nTL/DR: focus on developer success while they are on your platform. Set up KPIs that measure their success, so you can show impact on the potential revenue these developers might bring. \n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nLinkedIn: https://linkedin.com/in/timbenniks\nGithub: https://github.com/timbenniks","2024-04-05T06:50:24Z","002","https://i.ytimg.com/vi/196iQP-lHLw/maxresdefault.jpg","196iQP-lHLw",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:tim:002-196iQP-lHLw.md","3.videos/tim/002-196iQP-lHLw.md",{"_path":310,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":309,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"Use Cloudinary's AI features to remove items or fill out backgrounds. This is amazing!\n\nhttps://cloudinary.com/blog/generative-fill-ai-powered-outpainting\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-10-11T09:49:25Z","003","https://i.ytimg.com/vi/YuTF3yVsDco/maxresdefault.jpg","YuTF3yVsDco",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:tim:003-YuTF3yVsDco.md","3.videos/tim/003-YuTF3yVsDco.md",{"_path":313,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":312,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"In this video, I'll show you how to revolutionize your sales outreach game using personalized videos, made possible by using HeyGen's API.\n\nGone are the days of generic cold emails and phone calls. With HeyGen, Sales Development Representatives (SDRs) can now scale up their outreach efforts like never before. Imagine sending out dozens, even hundreds of personalized videos to your prospects, all with just a few clicks.\n\nIn this video, I break down the key benefits of incorporating personalized videos into your sales outreach strategy. You'll discover how HeyGen AI enables SDRs to add personalized data into the video scripts, making each outreach feel tailor-made for the recipient. I created a proof of concept app to show how you can do this.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-09-25T07:34:24Z","004","https://i.ytimg.com/vi/iip2anHIEtg/maxresdefault.jpg","iip2anHIEtg",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:tim:004-iip2anHIEtg.md","3.videos/tim/004-iip2anHIEtg.md",{"_path":316,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":315,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"In this video I explain tips and tricks to make the best @heygen_official #AI #avatar possible.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-09-08T09:26:33Z","005","https://i.ytimg.com/vi/_WRTDVV37Y0/maxresdefault.jpg","_WRTDVV37Y0",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:tim:005-_WRTDVV37Y0.md","3.videos/tim/005-_WRTDVV37Y0.md",{"_path":319,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":318,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"Annoyed as a developer? This is a good sign. It means you are getting more senior!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-09-04T08:36:27Z","006","https://i.ytimg.com/vi/J7Jsa49ZQjA/maxresdefault.jpg","J7Jsa49ZQjA",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:tim:006-J7Jsa49ZQjA.md","3.videos/tim/006-J7Jsa49ZQjA.md",{"_path":322,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":321,"description":1215,"date":1216,"position":1217,"image":1218,"videoId":1219,"body":1220,"_type":1137,"_id":1224,"_source":1139,"_file":1225,"_extension":1141},"I rebuilt my website recently and I used Hygraph’s Content Federation platform to create a unified API layer from all the different sources that serve my blog posts, live streams and videos. \n\nIn this video I explain content federation and I show how my website was built. \n\nGo create a free Hygraph account now at http://hygraph.com\n\nThe best Nuxt GraphQL setup: https://www.youtube.com/watch?v=q282BIqYJ6A\n\n00:00 Introduction\n00:55 Content Federation Platform\n06:09 How I built my website\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-08-29T07:53:53Z","007","https://i.ytimg.com/vi/eD1tiPZXZR8/maxresdefault.jpg","eD1tiPZXZR8",{"type":1132,"children":1221,"toc":1222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1223},[],"content:3.videos:tim:007-eD1tiPZXZR8.md","3.videos/tim/007-eD1tiPZXZR8.md",{"_path":325,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":324,"description":1227,"date":1228,"position":1229,"image":1230,"videoId":1231,"body":1232,"_type":1137,"_id":1236,"_source":1139,"_file":1237,"_extension":1141},"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. Agencies need specific features in the CMS they use for clients. caisy CMS seems to have all of them. In this Tim Tries video I'm looking at caisy to see if they indeed delivers.\n\ncaisy CMS: https://caisy.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-08-03T07:47:01Z","008","https://i.ytimg.com/vi/-3tbdMF1PWE/maxresdefault.jpg","-3tbdMF1PWE",{"type":1132,"children":1233,"toc":1234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1235},[],"content:3.videos:tim:008--3tbdMF1PWE.md","3.videos/tim/008--3tbdMF1PWE.md",{"_path":328,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":327,"description":1239,"date":1240,"position":1241,"image":1242,"videoId":1243,"body":1244,"_type":1137,"_id":1248,"_source":1139,"_file":1249,"_extension":1141},"This is the best GraphQL setup for Nuxt 3. It's simple and effective. It features automatic code generation and typing of schemas. This is awesome.\n\nFind the module here: https://github.com/Diizzayy/nuxt-graphql-client\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-07-31T02:00:15Z","009","https://i.ytimg.com/vi/q282BIqYJ6A/maxresdefault.jpg","q282BIqYJ6A",{"type":1132,"children":1245,"toc":1246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1247},[],"content:3.videos:tim:009-q282BIqYJ6A.md","3.videos/tim/009-q282BIqYJ6A.md",{"_path":331,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":330,"description":1251,"date":1252,"position":1253,"image":1254,"videoId":1255,"body":1256,"_type":1137,"_id":1260,"_source":1139,"_file":1261,"_extension":1141},"Learn how to use Browser Client Hints and Cloudinary to serve responsive images with minimal markup and maximum performance. Browser Client Hints tell Cloudinary the optimal size and resolution of each image request, and Cloudinary delivers it on the fly!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-07-24T14:00:11Z","010","https://i.ytimg.com/vi/H3rLwN27Ga8/maxresdefault.jpg","H3rLwN27Ga8",{"type":1132,"children":1257,"toc":1258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1259},[],"content:3.videos:tim:010-H3rLwN27Ga8.md","3.videos/tim/010-H3rLwN27Ga8.md",{"_path":334,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":333,"description":1263,"date":1264,"position":1265,"image":1266,"videoId":1267,"body":1268,"_type":1137,"_id":1272,"_source":1139,"_file":1273,"_extension":1141},"This is Headless 2.0. Say goodbye to glue code and hello to seamless collaboration between content editors & developers without losing great technical architecture. Embrace a transparent platform that streamlines workflows while empowering content editors to visually edit across various headless sources.\n\nRead more here: https://dev.to/timbenniks/this-is-headless-20-4n4d\n\n00:00 What is Headless 1.0\n01:05 Headless 1.0 problems\n02:50 What is Headless 2.0\n03:23 The how\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-07-17T11:26:04Z","011","https://i.ytimg.com/vi/ERGKTbS0woE/maxresdefault.jpg","ERGKTbS0woE",{"type":1132,"children":1269,"toc":1270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1271},[],"content:3.videos:tim:011-ERGKTbS0woE.md","3.videos/tim/011-ERGKTbS0woE.md",{"_path":337,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":336,"description":1275,"date":1276,"position":1277,"image":1278,"videoId":1279,"body":1280,"_type":1137,"_id":1284,"_source":1139,"_file":1285,"_extension":1141},"Learn about how to integrate Pinia into Nuxt 3. This tutorial covers integration tips and tricks and Pinia basics.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-06-13T23:23:43Z","012","https://i.ytimg.com/vi/zsCc8-0-DIs/maxresdefault.jpg","zsCc8-0-DIs",{"type":1132,"children":1281,"toc":1282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1283},[],"content:3.videos:tim:012-zsCc8-0-DIs.md","3.videos/tim/012-zsCc8-0-DIs.md",{"_path":340,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":339,"description":1287,"date":1288,"position":1289,"image":1290,"videoId":1291,"body":1292,"_type":1137,"_id":1296,"_source":1139,"_file":1297,"_extension":1141},"Ever felt overwhelmed by the amount of video content you need to create as a professional content creator, marketer, or developer relations team member? What if you could clone yourself and let AI handle the scripting and video production? 🤯\n\nIn this video, I reveal how I used a tool called HeyGen to do just that! Watch as I walk you through creating an AI-generated video with my own avatar and voice. This is not just a gimmick – the results are surprisingly close to reality and improving daily! 🤩\n\n📌 What's covered in this video:\n\nThe challenges of being a content creator in the fast-paced world of marketing and developer relations\n\nHow HeyGen can help you create AI-generated videos with your own avatar and voice\n\nA step-by-step walkthrough of the HeyGen dashboard and the process of creating an AI-generated video\n\nHow to use your own voice or choose from different voices and accents in HeyGen\n\nDon't miss out on this game-changing tool to help you level up your video content production! Try HeyGen for yourself and witness the power of AI in action. 🚀\n\n#AI #HeyGen #VideoProduction\n\nhttps://heygen.com\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-06-09T07:00:23Z","013","https://i.ytimg.com/vi/zn2zXyVW4hY/maxresdefault.jpg","zn2zXyVW4hY",{"type":1132,"children":1293,"toc":1294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1295},[],"content:3.videos:tim:013-zn2zXyVW4hY.md","3.videos/tim/013-zn2zXyVW4hY.md",{"_path":343,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":342,"description":1299,"date":1300,"position":1301,"image":1302,"videoId":1303,"body":1304,"_type":1137,"_id":1308,"_source":1139,"_file":1309,"_extension":1141},"Vue.js London was as great as we all expected, with a fantastic venue, and a great hotel! The speaker's family got back together for yet another event! \n\nI got to play my guitar for Alive and Kicking. Check out more here: https://timbenniks.dev/alive-and-kicking\n\nFollow me:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-05-22T09:03:13Z","014","https://i.ytimg.com/vi/DYq17R5C9-s/maxresdefault.jpg","DYq17R5C9-s",{"type":1132,"children":1305,"toc":1306},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1307},[],"content:3.videos:tim:014-DYq17R5C9-s.md","3.videos/tim/014-DYq17R5C9-s.md",{"_path":346,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":345,"description":1311,"date":1312,"position":1313,"image":1314,"videoId":1315,"body":1316,"_type":1137,"_id":1320,"_source":1139,"_file":1321,"_extension":1141},"Are you tired of spending hours editing audio to achieve that perfect sound? Look no further! Using Adobe Podcasts, I demonstrate how artificial intelligence can enhance your audio quality effortlessly, giving you more time to focus on your content. Don't miss out on this game changer for dev rels and content creators.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-04-05T14:00:13Z","015","https://i.ytimg.com/vi/OQ050_YtYLk/maxresdefault.jpg","OQ050_YtYLk",{"type":1132,"children":1317,"toc":1318},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1319},[],"content:3.videos:tim:015-OQ050_YtYLk.md","3.videos/tim/015-OQ050_YtYLk.md",{"_path":349,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":348,"description":1323,"date":1324,"position":1325,"image":1326,"videoId":1327,"body":1328,"_type":1137,"_id":1332,"_source":1139,"_file":1333,"_extension":1141},"Supabase was kind enough to invite me into their Supasquad ambassador program, and I'm super excited about it!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-04-03T13:35:45Z","016","https://i.ytimg.com/vi/RWRZovC5oc4/maxresdefault.jpg","RWRZovC5oc4",{"type":1132,"children":1329,"toc":1330},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1331},[],"content:3.videos:tim:016-RWRZovC5oc4.md","3.videos/tim/016-RWRZovC5oc4.md",{"_path":351,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":22,"description":1335,"date":1336,"position":1337,"image":1338,"videoId":1339,"body":1340,"_type":1137,"_id":1344,"_source":1139,"_file":1345,"_extension":1141},"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-03-20T06:10:23Z","017","https://i.ytimg.com/vi/M0MrLIGs6I0/maxresdefault.jpg","M0MrLIGs6I0",{"type":1132,"children":1341,"toc":1342},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1343},[],"content:3.videos:tim:017-M0MrLIGs6I0.md","3.videos/tim/017-M0MrLIGs6I0.md",{"_path":353,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":16,"description":1347,"date":1348,"position":1349,"image":1350,"videoId":1351,"body":1352,"_type":1137,"_id":1356,"_source":1139,"_file":1357,"_extension":1141},"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-03-02T15:00:09Z","018","https://i.ytimg.com/vi/hhPiTREYobI/maxresdefault.jpg","hhPiTREYobI",{"type":1132,"children":1353,"toc":1354},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1355},[],"content:3.videos:tim:018-hhPiTREYobI.md","3.videos/tim/018-hhPiTREYobI.md",{"_path":356,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":355,"description":1359,"date":1360,"position":1361,"image":1362,"videoId":1363,"body":1364,"_type":1137,"_id":1368,"_source":1139,"_file":1369,"_extension":1141},"Sitecore has been career-defining for me, we lost touch for a while, but recently, we fell back in love...\n\n#Sitecore is an excellent CMS but with a few flaws due to its monolithic nature and, more recently, due to its pseudo-composable approach. I found a way to love Sitecore again by decoupling its content management and front-end rendering parts. You can use @UniformVisualWorkspace to select content from a Sitecore instance and funnel it into any front end you desire. \n\nThis approach gives you developer freedom, a way to add any other headless source without worry, and you can host anywhere you want. Say goodbye to your slow and expensive CD servers! \n\nIn this video, I use Nuxt 3 for the rendering - because why not!?\n\nFind out more about #Uniform at https://uniform.dev\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-11-23T16:58:55Z","019","https://i.ytimg.com/vi/e64EyULAoMk/maxresdefault.jpg","e64EyULAoMk",{"type":1132,"children":1365,"toc":1366},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1367},[],"content:3.videos:tim:019-e64EyULAoMk.md","3.videos/tim/019-e64EyULAoMk.md",{"_path":359,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":358,"description":1371,"date":1372,"position":1373,"image":1374,"videoId":1375,"body":1376,"_type":1137,"_id":1380,"_source":1139,"_file":1381,"_extension":1141},"This is my JamstackConf talk\n\nYour tools are holding you back. DXC is the solution that gives developers and business teams access to the tools they need to do their best work and deliver faster than ever. Let's kill the glue code monster!\n\nLearn more: https://uniform.dev/what-is-dxc\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-11-16T09:38:50Z","020","https://i.ytimg.com/vi/xeTYkE98MP0/maxresdefault.jpg","xeTYkE98MP0",{"type":1132,"children":1377,"toc":1378},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1379},[],"content:3.videos:tim:020-xeTYkE98MP0.md","3.videos/tim/020-xeTYkE98MP0.md",{"_path":362,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":361,"description":1383,"date":1384,"position":1385,"image":1386,"videoId":1387,"body":1388,"_type":1137,"_id":1392,"_source":1139,"_file":1393,"_extension":1141},"Learn how to make a Vue 3 composable.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Vue3-turbos/tree/main/vue3-how-to-make-a-composable\n\nVisit https://turbo-tutorials.dev/tutorials/vue-3-learn-how-to-make-a-composable/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","2022-10-31T16:04:48Z","021","https://i.ytimg.com/vi/0xO0BNZqUf4/maxresdefault.jpg","0xO0BNZqUf4",{"type":1132,"children":1389,"toc":1390},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1391},[],"content:3.videos:tim:021-0xO0BNZqUf4.md","3.videos/tim/021-0xO0BNZqUf4.md",{"_path":365,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":364,"description":1395,"date":1384,"position":1396,"image":1397,"videoId":1398,"body":1399,"_type":1137,"_id":1403,"_source":1139,"_file":1404,"_extension":1141},"Learn how to use client and server components in Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-clientside-serverside-components\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-add-client-only-components/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","022","https://i.ytimg.com/vi/CwkJY7RaonY/maxresdefault.jpg","CwkJY7RaonY",{"type":1132,"children":1400,"toc":1401},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1402},[],"content:3.videos:tim:022-CwkJY7RaonY.md","3.videos/tim/022-CwkJY7RaonY.md",{"_path":368,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":367,"description":1406,"date":1384,"position":1407,"image":1408,"videoId":1409,"body":1410,"_type":1137,"_id":1414,"_source":1139,"_file":1415,"_extension":1141},"Learn how to query an internal Nuxt API route from your front end using useFetch(). \n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/nuxt3-query-from-api-route\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-query-from-a-nuxt-api-route/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","023","https://i.ytimg.com/vi/Lsf2rhZSYKg/maxresdefault.jpg","Lsf2rhZSYKg",{"type":1132,"children":1411,"toc":1412},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1413},[],"content:3.videos:tim:023-Lsf2rhZSYKg.md","3.videos/tim/023-Lsf2rhZSYKg.md",{"_path":371,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":370,"description":1417,"date":1384,"position":1418,"image":1419,"videoId":1420,"body":1421,"_type":1137,"_id":1425,"_source":1139,"_file":1426,"_extension":1141},"Learn how to apply Vue components into markdown with MDC and Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-vue-components-in-content-v2\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-use-vue-components-in-nuxt-content-v2/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","024","https://i.ytimg.com/vi/Mg0feVWNUE0/maxresdefault.jpg","Mg0feVWNUE0",{"type":1132,"children":1422,"toc":1423},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1424},[],"content:3.videos:tim:024-Mg0feVWNUE0.md","3.videos/tim/024-Mg0feVWNUE0.md",{"_path":374,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":373,"description":1428,"date":1384,"position":1429,"image":1430,"videoId":1431,"body":1432,"_type":1137,"_id":1436,"_source":1139,"_file":1437,"_extension":1141},"Learn about the basics of responsive images\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Html-turbos/tree/main/responsive-image\n\nVisit https://turbo-tutorials.dev/tutorials/learn-about-responsive-image-basics/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","025","https://i.ytimg.com/vi/NPSe6yqQzKI/maxresdefault.jpg","NPSe6yqQzKI",{"type":1132,"children":1433,"toc":1434},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1435},[],"content:3.videos:tim:025-NPSe6yqQzKI.md","3.videos/tim/025-NPSe6yqQzKI.md",{"_path":377,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":376,"description":1439,"date":1384,"position":1440,"image":1441,"videoId":1442,"body":1443,"_type":1137,"_id":1447,"_source":1139,"_file":1448,"_extension":1141},"Learn how to add information to the head of the page with Nuxt 3.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-head\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-head-management/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","026","https://i.ytimg.com/vi/Rh6HJO9xK-o/maxresdefault.jpg","Rh6HJO9xK-o",{"type":1132,"children":1444,"toc":1445},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1446},[],"content:3.videos:tim:026-Rh6HJO9xK-o.md","3.videos/tim/026-Rh6HJO9xK-o.md",{"_path":380,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":379,"description":1450,"date":1384,"position":1451,"image":1452,"videoId":1453,"body":1454,"_type":1137,"_id":1458,"_source":1139,"_file":1459,"_extension":1141},"Learn how to add schema.org microdata to your Nuxt 3 pages. \n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-schema-org\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-schema-org/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","027","https://i.ytimg.com/vi/rtH3OIkJp2k/maxresdefault.jpg","rtH3OIkJp2k",{"type":1132,"children":1455,"toc":1456},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1457},[],"content:3.videos:tim:027-rtH3OIkJp2k.md","3.videos/tim/027-rtH3OIkJp2k.md",{"_path":383,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":382,"description":1461,"date":1384,"position":1462,"image":1463,"videoId":1464,"body":1465,"_type":1137,"_id":1469,"_source":1139,"_file":1470,"_extension":1141},"Learn how to query an external API and how to implement \"read more\" functionality.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-query-from-external-api\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-query-from-an-external-api-read-more/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","028","https://i.ytimg.com/vi/zAd7s01LfIc/maxresdefault.jpg","zAd7s01LfIc",{"type":1132,"children":1466,"toc":1467},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1468},[],"content:3.videos:tim:028-zAd7s01LfIc.md","3.videos/tim/028-zAd7s01LfIc.md",{"_path":386,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":385,"description":1472,"date":1473,"position":1474,"image":1475,"videoId":1476,"body":1477,"_type":1137,"_id":1481,"_source":1139,"_file":1482,"_extension":1141},"Learn about Nuxt 3's Nitro engine and how it can do hybrid rendering between SSG and SSR.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-hybrid-mode\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-learn-about-hybrid-rendering/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","2022-10-31T16:04:47Z","029","https://i.ytimg.com/vi/5i1Zqfu6Xtw/maxresdefault.jpg","5i1Zqfu6Xtw",{"type":1132,"children":1478,"toc":1479},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1480},[],"content:3.videos:tim:029-5i1Zqfu6Xtw.md","3.videos/tim/029-5i1Zqfu6Xtw.md",{"_path":389,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":388,"description":1484,"date":1473,"position":1485,"image":1486,"videoId":1487,"body":1488,"_type":1137,"_id":1492,"_source":1139,"_file":1493,"_extension":1141},"Learn how to pick and transform data coming back from an API call in Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-fetch-pick-transform\n\nVisit https://turbo-tutorials.dev/tutorials/turbo-tutorial-or-nuxt-3-pick-and-transform/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","030","https://i.ytimg.com/vi/D33YNlhvHXM/maxresdefault.jpg","D33YNlhvHXM",{"type":1132,"children":1489,"toc":1490},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1491},[],"content:3.videos:tim:030-D33YNlhvHXM.md","3.videos/tim/030-D33YNlhvHXM.md",{"_path":392,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":391,"description":1495,"date":1496,"position":1497,"image":1498,"videoId":1499,"body":1500,"_type":1137,"_id":1504,"_source":1139,"_file":1505,"_extension":1141},"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. In this episode, I try out #Medusajs, an open-source #ecommerce alternative to Shopify.\n\nConclusion: excellent, great, awesome, composable, performant. But why is this not a Saas? I'd happily pay a few bucks a month for this!\n\nFollow medusa: \nhttps://medusajs.com\nhttps://github.com/medusajs/medusa\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGitHub: https://github.com/timbenniks","2022-09-19T09:39:20Z","031","https://i.ytimg.com/vi/c1jDUhsh1aE/maxresdefault.jpg","c1jDUhsh1aE",{"type":1132,"children":1501,"toc":1502},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1503},[],"content:3.videos:tim:031-c1jDUhsh1aE.md","3.videos/tim/031-c1jDUhsh1aE.md",{"_path":395,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":394,"description":1507,"date":1508,"position":1509,"image":1510,"videoId":1511,"body":1512,"_type":1137,"_id":1516,"_source":1139,"_file":1517,"_extension":1141},"I've been away for a bit, but I'm back! I've built a new set in my studio, plug 'n play. I sit down, hit record, and I'm ready to rock! Content creators often have lots of setup and tear down, which makes creating slow. \n\n\nThe tools I use in this setup:\nCamera: Sony ZV e10\nLens: Sigma 16mm f1.4\nLights: Amaran 100d + Godox softbox, Godox TL60, Filtrox VL500\nMic: Rode NTG 4+\nAudio Interface: Comica Linkflex AD2\nPreview screen: Feelworld FW568V2\nStands: Neewer C-stand\nRemote: JJC Bluetooth for Sony Cameras\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks","2022-09-02T11:24:19Z","032","https://i.ytimg.com/vi/-8Z1npiG-YA/maxresdefault.jpg","-8Z1npiG-YA",{"type":1132,"children":1513,"toc":1514},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1515},[],"content:3.videos:tim:032--8Z1npiG-YA.md","3.videos/tim/032--8Z1npiG-YA.md",{"_path":398,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":397,"description":1519,"date":1520,"position":1521,"image":1522,"videoId":1523,"body":1524,"_type":1137,"_id":1528,"_source":1139,"_file":1529,"_extension":1141},"In this video, I'm interviewing Szymon Licau, Frontend Principal Engineer at Monterail, about the State of #Vue in 2022. Monterail has created this report for the last four years, and they are always on the top of their game. It's an exciting read!\n\nGet the report here: https://hi.monterail.co/3NuLjRr\n\nFollow Szymon here:\nhttps://twitter.com/szymon_licau\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-07-24T19:36:08Z","033","https://i.ytimg.com/vi/8wXDFiXXkTw/maxresdefault.jpg","8wXDFiXXkTw",{"type":1132,"children":1525,"toc":1526},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1527},[],"content:3.videos:tim:033-8wXDFiXXkTw.md","3.videos/tim/033-8wXDFiXXkTw.md",{"_path":401,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":400,"description":1531,"date":1532,"position":1533,"image":1534,"videoId":1535,"body":1536,"_type":1137,"_id":1540,"_source":1139,"_file":1541,"_extension":1141},"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. In this episode, I try out the Algolia #Nuxt3 module made by Jakub Andrzejewski.\n\nConclusion: Being a release candidate, Nuxt 3 is surprisingly stable, however, the ecosystem around it is not fully there yet. With some hiccups along the way, this Nuxt 3 module makes Algolia work great and super easy to use!\n\nDisclaimer: For this video my opinions are honest and real time. This is truly the first time I tried the Algolia module for Nuxt 3.\n\nJakub Andrzejewski:\nhttps://twitter.com/jacobandrewsky\n\nAlgolia module for Nuxt 3:\nhttps://algolia.nuxtjs.org\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks","2022-07-09T12:46:18Z","034","https://i.ytimg.com/vi/yZh1l740tNo/maxresdefault.jpg","yZh1l740tNo",{"type":1132,"children":1537,"toc":1538},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1539},[],"content:3.videos:tim:034-yZh1l740tNo.md","3.videos/tim/034-yZh1l740tNo.md",{"_path":404,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":403,"description":1543,"date":1544,"position":1545,"image":1546,"videoId":1547,"body":1548,"_type":1137,"_id":1552,"_source":1139,"_file":1553,"_extension":1141},"I just bought a new studio light and the experience made me record this video. It gives general advice on what type of price range to look for in gear for content creators like me. Enjoy!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-03-28T12:44:57Z","035","https://i.ytimg.com/vi/MdzKgC1Pgbc/maxresdefault.jpg","MdzKgC1Pgbc",{"type":1132,"children":1549,"toc":1550},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1551},[],"content:3.videos:tim:035-MdzKgC1Pgbc.md","3.videos/tim/035-MdzKgC1Pgbc.md",{"_path":407,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":406,"description":1555,"date":1556,"position":1557,"image":1558,"videoId":1559,"body":1560,"_type":1137,"_id":1564,"_source":1139,"_file":1565,"_extension":1141},"After months of hard work, I finally finished my very own YouTube studio! We transformed a leaky old countryside garage with no windows into the ultimate workspace for a content creator, conference speaker and developer advocate.\n\nThis is a space where I film videos, do live streams, speak at virtual conferences and have colleagues over for work sessions. \n\n00:00 Intro sequence\n00:33 Introduction to the project\n01:52 Getting started\n04:00 Custom oak windows and doors\n05:13 Delivery of supplies\n06:06 Water damage and leakage\n08:40 More water issues\n10:30 Ceilings and walls\n11:50 Pragmatic solutions\n13:05 Electronics and plaster\n15:15 Painting\n16:27 Final reveal\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-03-10T11:06:58Z","036","https://i.ytimg.com/vi/dlI7uZzDDx8/maxresdefault.jpg","dlI7uZzDDx8",{"type":1132,"children":1561,"toc":1562},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1563},[],"content:3.videos:tim:036-dlI7uZzDDx8.md","3.videos/tim/036-dlI7uZzDDx8.md",{"_path":410,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":409,"description":1567,"date":1568,"position":1569,"image":1570,"videoId":1571,"body":1572,"_type":1137,"_id":1576,"_source":1139,"_file":1577,"_extension":1141},"My conference talk from VueConf Toronto!\n\nCable management for Nuxt 3. Compose pages with multiple headless sources and never re-platform again…\n\nNow that companies are starting to use multiple different headless sources to create their digital experience platforms, a real problem is forming. Content editors need to create pages with products, CMS content, videos and personalisation but all these things come from different vendors.\n\nThey have no overview over what to do and they always have to ask a developer to connect things together in the front-end. Developers generally have no time so frustration kicks in.\n\nWe need a way to compose pages with different headless sources without too much developer involvement. Marketers need to be free to tell their stories when and how they want to. BUT. Developers also need to be happy. They need complete freedom in their tech stack and in how they choose to build a website.\n\nSounds like a dream come true? In this talk I’ll show you how to connect up different headless sources in a very easy to use system and how query them in the front-end without tight coupling. \n\nLet’s Nuxtify the world!\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-11-23T18:16:39Z","037","https://i.ytimg.com/vi/RY60wVg0FZQ/maxresdefault.jpg","RY60wVg0FZQ",{"type":1132,"children":1573,"toc":1574},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1575},[],"content:3.videos:tim:037-RY60wVg0FZQ.md","3.videos/tim/037-RY60wVg0FZQ.md",{"_path":413,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":412,"description":1579,"date":1580,"position":1581,"image":1582,"videoId":1583,"body":1584,"_type":1137,"_id":1588,"_source":1139,"_file":1589,"_extension":1141},"Nuxt 3 is in beta and it’s awesome. I’ve tried it out at length and I have a couple of things to show you. These are my 5 favourite features Nuxt has to offer for your daily developer experience. \n\nhttps://v3.nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-10-21T14:19:13Z","038","https://i.ytimg.com/vi/ek-hhoZLFVg/maxresdefault.jpg","ek-hhoZLFVg",{"type":1132,"children":1585,"toc":1586},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1587},[],"content:3.videos:tim:038-ek-hhoZLFVg.md","3.videos/tim/038-ek-hhoZLFVg.md",{"_path":416,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":415,"description":1591,"date":1592,"position":1593,"image":1594,"videoId":1595,"body":1596,"_type":1137,"_id":1600,"_source":1139,"_file":1601,"_extension":1141},"I had the privilege to speak at DevBreak21: The Ultimate Tech Festival. It's indeed more of a festival than a conference. Held in an ancient castle, the grounds allowed for lot's of activities and multiple talk tracks. \n\nI had a great time!\nSee more here: https://www.devbreak.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-09-13T12:33:22Z","039","https://i.ytimg.com/vi/Kn5U4AHCs_0/maxresdefault.jpg","Kn5U4AHCs_0",{"type":1132,"children":1597,"toc":1598},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1599},[],"content:3.videos:tim:039-Kn5U4AHCs_0.md","3.videos/tim/039-Kn5U4AHCs_0.md",{"_path":419,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":418,"description":1603,"date":1604,"position":1605,"image":1606,"videoId":1607,"body":1608,"_type":1137,"_id":1612,"_source":1139,"_file":1613,"_extension":1141},"Now that we have figured out that #Jamstack sites are the fastest out there, the JavaScript bundles they ship have become the bottleneck. JavaScript bundles need to be downloaded, parsed and executed by the browser. Lot's of people now who have phablets and loading a regular React or Vue app is actually slow due to the JavaScript they output.\n\nWhat if you could build a website with your favourite framework but choose exactly which bits of JavaScript end up on the client?\n\nEnter Astro.\n\nWith the ability to choose what JavaScript the user has to load and when, Astro is paving a new way of web development. In my opinion this is the future.\n\nCheck out my code here: https://github.com/timbenniks/astro-vue\n\nI used Astro, Vue, React, Prismic and Tailwind for the demo.\n\nhttps://astro.build\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-08-25T14:51:16Z","040","https://i.ytimg.com/vi/O8m4cS3o4II/maxresdefault.jpg","O8m4cS3o4II",{"type":1132,"children":1609,"toc":1610},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1611},[],"content:3.videos:tim:040-O8m4cS3o4II.md","3.videos/tim/040-O8m4cS3o4II.md",{"_path":422,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":421,"description":1615,"date":1616,"position":1617,"image":1618,"videoId":1619,"body":1620,"_type":1137,"_id":1624,"_source":1139,"_file":1625,"_extension":1141},"We moved house and now I have the chance to build the ultimate YouTube studio in our garage! In this vlog series you'll see me do everything myself. From fitting windows, to electronics, to insulation.\n\nPlease help, I know nothing about this stuff :)\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-07-28T12:08:29Z","041","https://i.ytimg.com/vi/xba15Vr-kFY/maxresdefault.jpg","xba15Vr-kFY",{"type":1132,"children":1621,"toc":1622},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1623},[],"content:3.videos:tim:041-xba15Vr-kFY.md","3.videos/tim/041-xba15Vr-kFY.md",{"_path":425,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":424,"description":1627,"date":1628,"position":1629,"image":1630,"videoId":1631,"body":1632,"_type":1137,"_id":1636,"_source":1139,"_file":1637,"_extension":1141},"In this video I compare the newly released Nuxt and Next native Image tags to the Next Image. Who wins? \n\nThe rules:\nOutput semantically valid HTML according to web standards.\nNo opinions added to the output.\nShould work out of the box.\n\n00:00 Introduction\n00:47 The rules\n01:50 Nuxt Image\n06:06 Next Image\n11:32 Conclusions\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-06-21T08:31:45Z","042","https://i.ytimg.com/vi/lpK392G10OU/maxresdefault.jpg","lpK392G10OU",{"type":1132,"children":1633,"toc":1634},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1635},[],"content:3.videos:tim:042-lpK392G10OU.md","3.videos/tim/042-lpK392G10OU.md",{"_path":428,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":427,"description":1639,"date":1640,"position":1641,"image":1642,"videoId":1643,"body":1644,"_type":1137,"_id":1648,"_source":1139,"_file":1649,"_extension":1141},"Images are hard. They seem easy to use but there are a lot of ways to use them. In this video I explain the anatomy the img and picture tags. I hope this helps because it frustrates me how hard they are to use.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-06-16T12:29:12Z","043","https://i.ytimg.com/vi/UXjgT2_MF90/maxresdefault.jpg","UXjgT2_MF90",{"type":1132,"children":1645,"toc":1646},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1647},[],"content:3.videos:tim:043-UXjgT2_MF90.md","3.videos/tim/043-UXjgT2_MF90.md",{"_path":431,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":430,"description":1651,"date":1652,"position":1653,"image":1654,"videoId":1655,"body":1656,"_type":1137,"_id":1660,"_source":1139,"_file":1661,"_extension":1141},"Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time. This is the #timtries Series. In this episode I try out the #Storyblok, the headless CMS with NuxtJS as the front-end. \n\nConclusion: It's probably the best headless #CMS editor experience I have seen. The set-up had some hiccups however.\n\nDisclaimer: For this video my opinions are honest and real time. This is truly the first time I tried Storyblok.\n\nStoryblok:\nhttps://www.storyblok.com/\nhttps://twitter.com/storyblok\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks","2021-05-24T13:00:14Z","044","https://i.ytimg.com/vi/d0ra_M3JLSY/maxresdefault.jpg","d0ra_M3JLSY",{"type":1132,"children":1657,"toc":1658},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1659},[],"content:3.videos:tim:044-d0ra_M3JLSY.md","3.videos/tim/044-d0ra_M3JLSY.md",{"_path":434,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":433,"description":1663,"date":1664,"position":1665,"image":1666,"videoId":1667,"body":1668,"_type":1137,"_id":1672,"_source":1139,"_file":1673,"_extension":1141},"Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time. This is the #timtries Series.\n\nIn this episode I try out the Algolia Crawler for #Netlify.\n\nConclusion: you should try this out! I’ll use this on all my Jamstack websites going forward. Wow!\n\nWant to try #Algolia for free yourself? Use my affiliate link: https://utm.io/udjGK\n\nDisclaimer: I'm an Algolia ambassador, for this video my opinions are honest and real time.\n\nFind Algolia here:\nhttps://utm.io/udjGK\nhttps://twitter.com/Algolia\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-05-03T14:00:02Z","045","https://i.ytimg.com/vi/7JK6NYaLHuc/maxresdefault.jpg","7JK6NYaLHuc",{"type":1132,"children":1669,"toc":1670},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1671},[],"content:3.videos:tim:045-7JK6NYaLHuc.md","3.videos/tim/045-7JK6NYaLHuc.md",{"_path":437,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":436,"description":1675,"date":1676,"position":1677,"image":1678,"videoId":1679,"body":1680,"_type":1137,"_id":1684,"_source":1139,"_file":1685,"_extension":1141},"The new Apple M1 is fast. Really fast. I decided to try using Vite and the new Tailwind JIT together to see how fast the developer experience can actually get.\n\nConclusion: it's so fast my brain melted...\n\nThe future is bright for front-end developers. New hardware and software is coming out now that is changing the game.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-04-01T12:45:01Z","046","https://i.ytimg.com/vi/sU22R2W3wEA/maxresdefault.jpg","sU22R2W3wEA",{"type":1132,"children":1681,"toc":1682},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1683},[],"content:3.videos:tim:046-sU22R2W3wEA.md","3.videos/tim/046-sU22R2W3wEA.md",{"_path":440,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":439,"description":1687,"date":1688,"position":1689,"image":1690,"videoId":1691,"body":1692,"_type":1137,"_id":1696,"_source":1139,"_file":1697,"_extension":1141},"After a two year hiatus to Windows land I decided to switch back to Apple. PC parts are not in stock and my current beast of a PC actually isn't as stable as I had hoped.\n\nI opted for the new M1 Mac Mini which I maxed out. I have a 1tb 16gb RAM model. I also bought some other goodies like a Caldigit dock and a portable nvme drive.\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-03-24T16:00:15Z","047","https://i.ytimg.com/vi/6Ub_k4uvz20/maxresdefault.jpg","6Ub_k4uvz20",{"type":1132,"children":1693,"toc":1694},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1695},[],"content:3.videos:tim:047-6Ub_k4uvz20.md","3.videos/tim/047-6Ub_k4uvz20.md",{"_path":443,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":442,"description":1699,"date":1700,"position":1701,"image":1702,"videoId":1703,"body":1704,"_type":1137,"_id":1708,"_source":1139,"_file":1709,"_extension":1141},"In this series Ishan Anand (CTO and co-founder of Moovweb) and I explain Core Web Vitals. In this installment we discuss the basics and we figure out that Lighthouse definitely is not the right tool to do performance tests for websites.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks\n\nFollow Ishan here:\nhttps://moovweb.com\nhttps://corewebvitals.email\nhttps://twitter.com/ianand\nhttps://www.linkedin.com/in/ishananand/","2021-03-22T13:00:10Z","048","https://i.ytimg.com/vi/Ec7pVGy8XsQ/maxresdefault.jpg","Ec7pVGy8XsQ",{"type":1132,"children":1705,"toc":1706},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1707},[],"content:3.videos:tim:048-Ec7pVGy8XsQ.md","3.videos/tim/048-Ec7pVGy8XsQ.md",{"_path":446,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":445,"description":1711,"date":1712,"position":1713,"image":1714,"videoId":1715,"body":1716,"_type":1137,"_id":1720,"_source":1139,"_file":1721,"_extension":1141},"Welcome to the second episode of the DevRel roundtable series where I invite developer relation people to a roundtable discussion to converse on whatever topics we feel are relevant.\n\nIn this episode I invited two titans: Debbie O'brien from Bit and Lucie Haberer from Prismic. We go over what a DevRel is and a lot more.\n\nFollow Debbie here:\nhttps://twitter.com/debs_obrien\nhttps://debbie.codes/\n\nFollow Lucie here:\nhttps://twitter.com/li_hbr\nhttps://lihbr.com/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks","2021-03-08T12:00:15Z","049","https://i.ytimg.com/vi/lSxU_q-8Rrc/maxresdefault.jpg","lSxU_q-8Rrc",{"type":1132,"children":1717,"toc":1718},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1719},[],"content:3.videos:tim:049-lSxU_q-8Rrc.md","3.videos/tim/049-lSxU_q-8Rrc.md",{"_path":449,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":448,"description":1723,"date":1724,"position":1725,"image":1726,"videoId":1727,"body":1728,"_type":1137,"_id":1732,"_source":1139,"_file":1733,"_extension":1141},"This is my talk for my JSWorld Conference! I'm talking about how JAMstack will change the world. I now work at Uniform where we take disrupting the status quo of Digital Experience Platform software seriously :)\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\nUniform: https://uniform.dev","2021-02-25T15:59:46Z","050","https://i.ytimg.com/vi/YEzAod1sDdg/maxresdefault.jpg","YEzAod1sDdg",{"type":1132,"children":1729,"toc":1730},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1731},[],"content:3.videos:tim:050-YEzAod1sDdg.md","3.videos/tim/050-YEzAod1sDdg.md",{"_path":452,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":451,"description":1735,"date":1736,"position":1737,"image":1738,"videoId":1739,"body":1740,"_type":1137,"_id":1744,"_source":1139,"_file":1745,"_extension":1141},"I enjoy making websites super fast, but I also like metrics. These two things do not always combine well. To add metrics, you also need code to provide these metrics. But that slows down your website!\n\nI found a way to remove Google Analytics JavaScript but still provide data to its back-end. I even added web vitals! I did all of it in Nuxt!\n\nCredit: https://twitter.com/DasSurma\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks","2021-02-12T12:00:03Z","051","https://i.ytimg.com/vi/DV5mLxbrTi8/maxresdefault.jpg","DV5mLxbrTi8",{"type":1132,"children":1741,"toc":1742},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1743},[],"content:3.videos:tim:051-DV5mLxbrTi8.md","3.videos/tim/051-DV5mLxbrTi8.md",{"_path":455,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":454,"description":1747,"date":1748,"position":1749,"image":1750,"videoId":1751,"body":1752,"_type":1137,"_id":1756,"_source":1139,"_file":1757,"_extension":1141},"Read more here: https://timbenniks.dev/writings/i-turned-my-career-on-its-head/\n\n2021 is starting well! I have a new Job at a silicon valley startup. In this video I discuss what the job is, why I like it and also why I moved away from the safe career path I was on at Valtech.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","2021-02-01T09:27:12Z","052","https://i.ytimg.com/vi/HCThe5pWhvM/maxresdefault.jpg","HCThe5pWhvM",{"type":1132,"children":1753,"toc":1754},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1755},[],"content:3.videos:tim:052-HCThe5pWhvM.md","3.videos/tim/052-HCThe5pWhvM.md",{"_path":458,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":457,"description":1759,"date":1760,"position":1761,"image":1762,"videoId":1763,"body":1764,"_type":1137,"_id":1768,"_source":1139,"_file":1769,"_extension":1141},"In this video I interview Ishan Anand (co-founder/CTO) and Mark Brocado (VP of Engineering) from Moovweb. Moovweb is an all-in-one JAMstack platform to develop, deploy, preview, split test and monitor your frontend. The cool thing is that Moovweb is able to combine dynamic routing with static serving on the CDN edge. \n\nI'm intrigued by this concept and I wonder why Netlify and Vercel are not doing similar things. Ishan and Mark go deep and explain everything!\n\nFind Ishan, Mark and Moovweb here:\nhttps://moovweb.com\nhttps://twitter.com/moovweb\n\nFollow me here:\nhttps://timbenniks.dev/\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","2021-01-26T10:00:18Z","053","https://i.ytimg.com/vi/Zd7QkGD8Ix8/maxresdefault.jpg","Zd7QkGD8Ix8",{"type":1132,"children":1765,"toc":1766},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1767},[],"content:3.videos:tim:053-Zd7QkGD8Ix8.md","3.videos/tim/053-Zd7QkGD8Ix8.md",{"_path":461,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":460,"description":1771,"date":1772,"position":1773,"image":1774,"videoId":1775,"body":1776,"_type":1137,"_id":1780,"_source":1139,"_file":1781,"_extension":1141},"I created a pretty personal video about how I experienced 2020. It strangely became the best year of my career. Make sure to stick around to the end for a surprising turn of events for 2021.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","2021-01-05T10:00:10Z","054","https://i.ytimg.com/vi/bhFfzM6n3Tw/maxresdefault.jpg","bhFfzM6n3Tw",{"type":1132,"children":1777,"toc":1778},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1779},[],"content:3.videos:tim:054-bhFfzM6n3Tw.md","3.videos/tim/054-bhFfzM6n3Tw.md",{"_path":464,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":463,"description":1783,"date":1784,"position":1785,"image":1786,"videoId":1787,"body":1788,"_type":1137,"_id":1792,"_source":1139,"_file":1793,"_extension":1141},"This video is a webinar I did for my colleagues. Since 2019 I have been creating my online persona. I've failed a bunch and I have learnt a lot. In this session I'm sharing my experience, advice and insights into building your brand and growing your audience. I'll teach you how to get yourself or your employer noticed for all the right reasons.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-12-09T10:00:08Z","055","https://i.ytimg.com/vi/S1oD1u-itKA/maxresdefault.jpg","S1oD1u-itKA",{"type":1132,"children":1789,"toc":1790},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1791},[],"content:3.videos:tim:055-S1oD1u-itKA.md","3.videos/tim/055-S1oD1u-itKA.md",{"_path":467,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":466,"description":1795,"date":1796,"position":1797,"image":1798,"videoId":1799,"body":1800,"_type":1137,"_id":1804,"_source":1139,"_file":1805,"_extension":1141},"After daily questions I decided to work on a huge tips & tricks video for people who pre-record talks or do live streams. This video has 39 tips to get you started! If you follow this guide and combine it with a good subject, you will see great results.\n\nImportant links: \nhttps://timbenniks.dev/writings/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/\nhttps://timbenniks.dev/writings/covid-19-work-from-home-how-to-make-your-webcam-look/\n\nTimestamps:\n00:00 intro\n02:10 General tips\n05:08 Tips while recording\n07:35 The camera & framing\n10:00 Lighting\n12:44 Camera settings\n14:37 Audio\n17:37 Editing & recording\n22:03 Concluding\n\nSponsoring: https://buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-12-02T11:51:27Z","056","https://i.ytimg.com/vi/rm_bameopIY/maxresdefault.jpg","rm_bameopIY",{"type":1132,"children":1801,"toc":1802},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1803},[],"content:3.videos:tim:056-rm_bameopIY.md","3.videos/tim/056-rm_bameopIY.md",{"_path":470,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":469,"description":1807,"date":1808,"position":1809,"image":1810,"videoId":1811,"body":1812,"_type":1137,"_id":1816,"_source":1139,"_file":1817,"_extension":1141},"In this video I interview Alex Shyba, co-founder of Uniform. At work (I'm web development director at a big agency), Alex did some consulting for us and we were always impressed by his skills and excellent manners. In this interview we dive into what Uniform does, why he started it and he even shows us how it works.\n\nEnterprise software vendors better watch out. This startup will disrupt. I would pay close attention to their roadmap in the coming months. Expect a Tim Tries video when their software reaches open beta.\n\nAbout Uniform:\nUniform enables jamstack with your current Enterprise Digital Experience Platform and unlocks edge-based personalization with the tools you already have.\n\nFind Alex and Uniform here:\nhttps://twitter.com/alexshyba\nhttps://twitter.com/UniformDev\nhttps://uniform.dev/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-11-25T13:00:06Z","057","https://i.ytimg.com/vi/DB5jjbwg-zM/maxresdefault.jpg","DB5jjbwg-zM",{"type":1132,"children":1813,"toc":1814},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1815},[],"content:3.videos:tim:057-DB5jjbwg-zM.md","3.videos/tim/057-DB5jjbwg-zM.md",{"_path":473,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":472,"description":1819,"date":1820,"position":1821,"image":1822,"videoId":1823,"body":1824,"_type":1137,"_id":1828,"_source":1139,"_file":1829,"_extension":1141},"Everybody wants smaller JavaScript bundles. In this video Lucie Haberer and I explore a way to reduce bundle sizes in Nuxt.\n\n1. We explore data abstraction and moving data mapping to a data layer that is only accessed by the asyncData or Fetch. \n2. We discuss moving bigger functionality to serverless API's\n3. We show how to make smaller \"named\" webpack chunks\n\nThis video is in-depth (25 mins), have a seat, take your time and enjoy. Happy optimizing!\nBeware, this works best for statically rendered Nuxt projects.\n\nhttps://lihbr.com/blog/pushing-nuxt-js-static-generation-one-step-further\n\nFollow Lucie here: \nWebsite: https://lihbr.com/\nTwitter: https://twitter.com/li_hbr\nGithub: https://github.com/lihbr\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#javascript #bundlesizes #nuxt","2020-11-18T13:39:52Z","058","https://i.ytimg.com/vi/IyKkwy8K2d4/maxresdefault.jpg","IyKkwy8K2d4",{"type":1132,"children":1825,"toc":1826},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1827},[],"content:3.videos:tim:058-IyKkwy8K2d4.md","3.videos/tim/058-IyKkwy8K2d4.md",{"_path":476,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":475,"description":1831,"date":1832,"position":1833,"image":1834,"videoId":1835,"body":1836,"_type":1137,"_id":1840,"_source":1139,"_file":1841,"_extension":1141},"I had the privilege to interview Evan You, the creator of Vue.js. I collaborated with Passionate People, the organizers of the excellent Vue.js Global conference and together we came up with a round table discussion format.\n\nIn this discussion I was joined by Marc Backes and Israel Roldán León. We tend to go into the more personal and behind the scenes questions rather than just being technical. This provides a great look into Evan as a person rather than just talking tech.\n\nEvan You: https://twitter.com/youyuxi\nMarc Backes: https://twitter.com/themarcba\nIsrael Roldán León: https://twitter.com/isro_me\nPassionate People: https://twitter.com/passionpeopleNL\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nPoster image taken from Github.\n\n#vue #evanyou #interview","2020-11-10T10:05:08Z","059","https://i.ytimg.com/vi/NR_aohhgl3s/maxresdefault.jpg","NR_aohhgl3s",{"type":1132,"children":1837,"toc":1838},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1839},[],"content:3.videos:tim:059-NR_aohhgl3s.md","3.videos/tim/059-NR_aohhgl3s.md",{"_path":479,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":478,"description":1843,"date":1844,"position":1845,"image":1846,"videoId":1847,"body":1848,"_type":1137,"_id":1852,"_source":1139,"_file":1853,"_extension":1141},"https://timbenniks.dev/writings/easy-dynamic-routes-in-your-nuxt-sitemap/ This is a cool way to add dynamic routes to your sitemap! I think this should be a part of the official Sitemap module.\n\nBy default the Nuxt sitemap module does not support dynamic routes. In this video I show you an easy and effortless way to dynamically add all #NuxtJS routes to your #sitemap xml file. \n\nIf you want you can buy me a coffee: https://www.buymeacoffee.com/timbenniks\n\nProps for this idea go to https://dev.to/andynoir.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#SEO","2020-11-08T15:30:41Z","060","https://i.ytimg.com/vi/oXJHEw-10aQ/maxresdefault.jpg","oXJHEw-10aQ",{"type":1132,"children":1849,"toc":1850},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1851},[],"content:3.videos:tim:060-oXJHEw-10aQ.md","3.videos/tim/060-oXJHEw-10aQ.md",{"_path":482,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":481,"description":1855,"date":1856,"position":1857,"image":1858,"videoId":1859,"body":1860,"_type":1137,"_id":1864,"_source":1139,"_file":1865,"_extension":1141},"In this video I take about 15 minutes to discuss the new features of Webpack 5. Webpack 5 is a big leap forward with its tree shaking and module federation. Good stuff!\n\nCover Idea by https://twitter.com/arismarko.\nTime stamps:\n\n00:00 Intro\n02:48 How Webpack works\n05:06 What is new in Webpack 5\n05:43 Persistent caching\n06:35 Smaller bundle sizes\n07:13 Better long-term caching\n08:18 Module federation\n10:20 Breaking changes\n12:19 Should you upgrade?\n13:14 Thank you\n\nConsider sponsoring: \nhttps://www.buymeacoffee.com/timbenniks\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-11-02T10:00:16Z","061","https://i.ytimg.com/vi/ZXz9MoJTWh8/maxresdefault.jpg","ZXz9MoJTWh8",{"type":1132,"children":1861,"toc":1862},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1863},[],"content:3.videos:tim:061-ZXz9MoJTWh8.md","3.videos/tim/061-ZXz9MoJTWh8.md",{"_path":485,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":484,"description":1867,"date":1868,"position":1869,"image":1870,"videoId":1871,"body":1872,"_type":1137,"_id":1876,"_source":1139,"_file":1877,"_extension":1141},"Welcome to the first episode of the DevRel roundtable series where I invite developer relation people to a roundtable discussion to converse on whatever topics we feel are relevant.\n\nIn this episode I invited two titans: Tessa Mero and Domitrius Clark from Cloudinary. We go over what a DevRel is and a lot more.\n\nFollow Tessa here:\nhttps://twitter.com/tessamero\nhttps://dev.to/tessamero\n\nFollow Domitrius Clark here:\nhttps://twitter.com/domitriusclark\nhttps://egghead.io/instructors/domitrius-clark\nhttps://www.twitch.tv/domitriusclark\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-10-27T14:49:55Z","062","https://i.ytimg.com/vi/XiZ2p0zLBd8/maxresdefault.jpg","XiZ2p0zLBd8",{"type":1132,"children":1873,"toc":1874},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1875},[],"content:3.videos:tim:062-XiZ2p0zLBd8.md","3.videos/tim/062-XiZ2p0zLBd8.md",{"_path":488,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":487,"description":1879,"date":1880,"position":1881,"image":1882,"videoId":1883,"body":1884,"_type":1137,"_id":1888,"_source":1139,"_file":1889,"_extension":1141},"Yes, I did it again. I rebuilt my website!\n\nMy website, https://timbenniks.dev, serves as my blog and a repository of my videos and speaking schedule. Though rich in content, the site is fast, accessible, and, most important, has a low carbon footprint. Under optimal conditions, the site scores 100 percent in Lighthouse.\n\nI recently rebuilt the site with several tools, the combination of which is ideal for modern web development. I’m excited about the result of the revamp. Let’s see how long that thrill lasts!\n\nI picked Nuxt version 2.14, which offers the excellent \"target: static\" option, outputting a static website on build. You probably guessed it already: my website adopts the Jamstack model. Jamstack websites are light and easy to distribute, with no reliance on dynamic content at all.\n\nEver tried hacking a static site? That’s hard to do. Also, if you need to scale it to meet demand, simply put it in more places on the content delivery network (CDN). After all, it's only a bunch of static files.\n\nHosting\nFor a smooth sail with Jamstack, I needed a hosting provider for the static assets on the CDN edge with simple capabilities for building and deploying my codebase. Netlify hosted my website before, but I wanted to try another provider for an insight into Netlify’s competition. Vercel, the provider I chose, was effortless to use. A nice surprise!\n\nCMS\nI picked Prismic, a great headless CMS whose features outshine those offered by huge enterprise systems. In particular, Prismic has resolved the rich-text issue many CMSs struggle with. I was also impressed by Prismic’s component-based design system, called slices, with which I can create pages in a component-driven way. I highly recommend checking out Prismic.\n\nSearching and filtering\nTo facilitate filtering of video content, I chose Algolia for indexing through its SaaS platform. The initial setup leveraged Algolia’s Vue.js components, which, despite a rather big footprint, do a lot of heavy lifting. Do have a look at Algolia in action on the site’s video page.\n\nOrchestrating the communication between best-of breed products like Algolia and Prismic is no trivial task. The challenge I faced was to ensure that Angolia updates the index when I add new videos to the Prismic. To make that happen, I created a Vercel lambda function, which is called with a webhook whenever I add a video. The function then queries the CMS for the new video data, after which the lambda updates the video index with the Algolia API. Voila, sheer magic!\n\nWebhooks are useful in decoupled architectures. I set up webhooks to also call Vercel when I publish content. On receiving a ping from a Prismic webhook, Vercel rebuilds the site and updates the CDN edge. Similarly, when I push updated code to GitHub, Vercel redeploys the site.\n\nWebhooks are the glue that helps automate the system. Thanks to Vercel’s high speed, I could deploy a hundred times a day without any part of the system breaking a sweat.\n\nImages\nCloudinary, another best-of-breed system I’ve been using for years, was an obvious choice. Even though Prismic offers an excellent feature set for managing images, Cloudinary struck me as being a better fit.\n\nThe process was straightforward. First, I sent the Prismic images to Cloudinary with the Nuxt Cloudinary module through the fetch system. From there, I transformed the images with the Cloudinary API slated for image URLs, e.g., by changing the file-type-based browser context and by resizing, scaling, and cropping the images accordingly.\n\nIt's open source: https://github.com/timbenniks/timbenniks2020-nuxt\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#jamstack #dxp #googleaudit","2020-10-20T13:00:07Z","063","https://i.ytimg.com/vi/V5AobIiruD4/maxresdefault.jpg","V5AobIiruD4",{"type":1132,"children":1885,"toc":1886},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1887},[],"content:3.videos:tim:063-V5AobIiruD4.md","3.videos/tim/063-V5AobIiruD4.md",{"_path":491,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":490,"description":1891,"date":1892,"position":1893,"image":1894,"videoId":1895,"body":1896,"_type":1137,"_id":1900,"_source":1139,"_file":1901,"_extension":1141},"Buy me a coffee here: https://www.buymeacoffee.com/timbenniks\nWant to know more? Go here https://timbenniks.dev/sponsor-me/\n\nHi! I'm Tim and I'm a content creator from Paris. I’ve worked as a web developer and technical director for years and at one point in I decided I wanted to share the insights about my work with our community.\n\nWorking on high stakes projects for global brands is cool and all but you also have to give back a bit. I now focus on creating content about web development topics and soft skills for people of all levels.\n\nI truly enjoy doing community driven work and people seem to like what I have to say. I'm a lucky duck!\n\nI'm committed to delivering a new video every week! These videos don't just appear, they are A LOT of work. I want to always get you the best content and this takes a bunch of time. I also need the right gear to keep delivering high production quality.\n\nIf you decide to sponsor me I will love you forever! 😘 All donations will go right back into the content creation efforts. I'll use the money to buy audio/video/light gear. Or, I will try out paid services for the Tim Tries video series. Or, I will use the money to travel to conferences so that the organizers can spend money on the conference itself rather than on me. So many options!\n\nIf you read this far, you are awesome. 🙏 😘\n\nCheers,\nTim\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-10-12T13:45:05Z","064","https://i.ytimg.com/vi/JTGHl7ggOAs/maxresdefault.jpg","JTGHl7ggOAs",{"type":1132,"children":1897,"toc":1898},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1899},[],"content:3.videos:tim:064-JTGHl7ggOAs.md","3.videos/tim/064-JTGHl7ggOAs.md",{"_path":494,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":493,"description":1903,"date":1904,"position":1905,"image":1906,"videoId":1907,"body":1908,"_type":1137,"_id":1912,"_source":1139,"_file":1913,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the Tim Tries Series. In this video I look at Chakra UI Vue with it's creator Jonathan Bakebwa!\n\nConclusion: solid framework, easy to use, not sure if it's for me...\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\n00:00 Introduction\n00:40 how to pronounce Jonathan Bakebwa\n01:08 Why build Chakra UI?\n02:23 Tim Tries Chakra UI\n09:24 Why not just use HTML?\n10:55 About Accessibility\n12:50 Conclusion\n\nFollow Jonathan here:\nWebsite: https://vue.chakra-ui.com/\nTwitter: https://twitter.com/codebender828\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries #chakraui #jonathanbakebwa","2020-10-08T13:00:03Z","065","https://i.ytimg.com/vi/96xYPBH-Hyo/maxresdefault.jpg","96xYPBH-Hyo",{"type":1132,"children":1909,"toc":1910},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1911},[],"content:3.videos:tim:065-96xYPBH-Hyo.md","3.videos/tim/065-96xYPBH-Hyo.md",{"_path":497,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":496,"description":1915,"date":1916,"position":1917,"image":1918,"videoId":1919,"body":1920,"_type":1137,"_id":1924,"_source":1139,"_file":1925,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the #timtries Series. In this video I look at #tailwindcss. Alexander Lichter is an expert at tailwindcss and he tried to convince me it's awesome. Did he succeed?\n\nConclusion: check the video and see my excitement...\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nWhy tailwind and classes in the dom: https://adamwathan.me/css-utility-classes-and-separation-of-concerns/\n\nFollow Alexander here:\nWebsite: https://blog.lichter.io\nTwitter: https://twitter.com/TheAlexLichter\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-10-01T12:00:01Z","066","https://i.ytimg.com/vi/0VdfeGtjDcg/maxresdefault.jpg","0VdfeGtjDcg",{"type":1132,"children":1921,"toc":1922},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1923},[],"content:3.videos:tim:066-0VdfeGtjDcg.md","3.videos/tim/066-0VdfeGtjDcg.md",{"_path":500,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":499,"description":1927,"date":1928,"position":1929,"image":1930,"videoId":1931,"body":1932,"_type":1137,"_id":1936,"_source":1139,"_file":1937,"_extension":1141},"This is my second #vlog! It’s soft skill time again. I discuss the qualities successful leaders should posses to make a teams a success in a complex situation.\n\nDo take note: a leader is not always the manager. It could very well be that one of the more junior people take the leadership role. Managers you \"have\" to listen to. Leaders you \"want\" to listen to. \n\nBy a complex situation I mean a high pressure project with a big scope and not enough time, and on top the client is immature and is always upset. If you manage to get your team to be happy in these circumstances you will get a high quality result. \n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#leadership","2020-09-22T12:00:13Z","067","https://i.ytimg.com/vi/McyeoiN1S48/maxresdefault.jpg","McyeoiN1S48",{"type":1132,"children":1933,"toc":1934},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1935},[],"content:3.videos:tim:067-McyeoiN1S48.md","3.videos/tim/067-McyeoiN1S48.md",{"_path":503,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":502,"description":1939,"date":1940,"position":1941,"image":1942,"videoId":1943,"body":1944,"_type":1137,"_id":1948,"_source":1139,"_file":1949,"_extension":1141},"In this #vuejsglobal talk I'm introducing #Vite and #Vitepress. It's a basic introduction but I feel like this get's people in a place where they can actually try using these tools.\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-09-17T15:23:24Z","068","https://i.ytimg.com/vi/gojCkw5Ih7E/maxresdefault.jpg","gojCkw5Ih7E",{"type":1132,"children":1945,"toc":1946},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1947},[],"content:3.videos:tim:068-gojCkw5Ih7E.md","3.videos/tim/068-gojCkw5Ih7E.md",{"_path":506,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":505,"description":1951,"date":1952,"position":1953,"image":1954,"videoId":1955,"body":1956,"_type":1137,"_id":1960,"_source":1139,"_file":1961,"_extension":1141},"This is my ImageCon 2020 talk.\n\nHow to make more sustainable choices in the production of web technology. This talk helps developers to make changes to their code so that their website has a lower carbon footprint.\n\nIf the internet was a country, it would be the world’s sixth biggest polluter. The internet consumes a lot of electricity. 466TWh per year to be precise. That’s more than the entire United Kingdom (300TWh)! \n\nCarbon emissions are generated all over the place, from data centers to our personal devices. The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that's 211 kg CO2 per year. These are staggering numbers and they will only go up as the internet is growing at a frightening rate. To make the internet more sustainable, web developers have three areas of attention.\n\n1. Design and content\n2. Front-end development best practices\n3. Server architecture choices","2020-09-15T12:00:11Z","069","https://i.ytimg.com/vi/ewlEgIsh6Dw/maxresdefault.jpg","ewlEgIsh6Dw",{"type":1132,"children":1957,"toc":1958},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1959},[],"content:3.videos:tim:069-ewlEgIsh6Dw.md","3.videos/tim/069-ewlEgIsh6Dw.md",{"_path":509,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":508,"description":1963,"date":1964,"position":1965,"image":1966,"videoId":1967,"body":1968,"_type":1137,"_id":1972,"_source":1139,"_file":1973,"_extension":1141},"I'm on holiday and I now that I have a new camera I decided to do my first vlog! \nIt's story time with grandpa. In this vlog I'm reflecting on my own career as a developer and I give advice on how you can advance yours. There might be some nuggets of inspiration in there for you!\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timsvlog #career #vlog","2020-09-09T11:56:23Z","070","https://i.ytimg.com/vi/AUzzgMyN0z4/maxresdefault.jpg","AUzzgMyN0z4",{"type":1132,"children":1969,"toc":1970},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1971},[],"content:3.videos:tim:070-AUzzgMyN0z4.md","3.videos/tim/070-AUzzgMyN0z4.md",{"_path":512,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":511,"description":1975,"date":1976,"position":1977,"image":1978,"videoId":1979,"body":1980,"_type":1137,"_id":1984,"_source":1139,"_file":1985,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the #timtries Series. In this video I look at Figma, Zeplin and Storybook. I recently learnt how nicely all these tools integrate so developers get a MUCH better DX. Zeplin acts as the hub and the creative source of truth for development, QA, business analysts, UX and creative people.\n\nConclusion: Mind is blown... Zeplin CLI is amazing.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-09-01T12:00:15Z","071","https://i.ytimg.com/vi/ZUHT0g3ZPYw/maxresdefault.jpg","ZUHT0g3ZPYw",{"type":1132,"children":1981,"toc":1982},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1983},[],"content:3.videos:tim:071-ZUHT0g3ZPYw.md","3.videos/tim/071-ZUHT0g3ZPYw.md",{"_path":515,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":514,"description":1987,"date":1988,"position":1989,"image":1990,"videoId":1991,"body":1992,"_type":1137,"_id":1996,"_source":1139,"_file":1997,"_extension":1141},"In this video I'm interviewing Anthony Gore. We discuss talk about Vue 3 for Vue 2 developers. Furthermore we dive into how he started is famous newsletter and how he manages to monetize his efforts for the our Vue community.\n\nAnthony's newsletter has been my go-to for years so I'm super excited about the fact I got to interview him!\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Anthony here:\nhttps://twitter.com/anthonygore\nhttps://twitter.com/vuejsdevelopers\nhttps://vuejsdevelopers.com/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #timbenniks #vuejsglobal","2020-08-26T12:00:57Z","072","https://i.ytimg.com/vi/madbxCbSvqo/maxresdefault.jpg","madbxCbSvqo",{"type":1132,"children":1993,"toc":1994},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1995},[],"content:3.videos:tim:072-madbxCbSvqo.md","3.videos/tim/072-madbxCbSvqo.md",{"_path":518,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":517,"description":1999,"date":2000,"position":2001,"image":2002,"videoId":2003,"body":2004,"_type":1137,"_id":2008,"_source":1139,"_file":2009,"_extension":1141},"In this video I'm interviewing Eduardo San Martin Morote from the Vue core Team. Eduardo works on the Vue Router and in this interview we dive deep into what he did for the refactor of the new Vue 3 router. Next to this we discuss his ideas on monetizing open source work and what solutions fit best. As it turns out, he is building his own! \n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Eduardo here:\nhttps://twitter.com/posva\nhttps://github.com/posva\nhttps://esm.dev/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #vuejsglobal #vue3router","2020-08-19T12:00:10Z","073","https://i.ytimg.com/vi/uuFBfCIpAlY/maxresdefault.jpg","uuFBfCIpAlY",{"type":1132,"children":2005,"toc":2006},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2007},[],"content:3.videos:tim:073-uuFBfCIpAlY.md","3.videos/tim/073-uuFBfCIpAlY.md",{"_path":521,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":520,"description":2011,"date":2012,"position":2013,"image":2014,"videoId":2015,"body":2016,"_type":1137,"_id":2020,"_source":1139,"_file":2021,"_extension":1141},"All around me I see people rage-quit when trying to make their own #Webpack config. If you have never done it before it is pretty hard! I know, I've been there. In this video we will create a Webpack config together. In thirty minutes you will learn the Webpack basics, how to load assets, how to have a nice developer experience and how to split your bundle for optimized performance.\n\nTime stamps:\n00:00 I received a gift!\n00:56 Introduction\n01:53 Webpack basics\n04:55 Chapter 1: Entry and output\n08:14 Chapter 2: Loaders for Styles, Images and Babel\n16:03 Chapter 3: Output management and dynamic HTML rendering\n23:28 Chapter 4: DX for local development\n27:32 Chapter 5: Chunking bundles\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#guide #tutorial","2020-08-17T12:00:11Z","074","https://i.ytimg.com/vi/fyuvqRUzeVY/maxresdefault.jpg","fyuvqRUzeVY",{"type":1132,"children":2017,"toc":2018},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2019},[],"content:3.videos:tim:074-fyuvqRUzeVY.md","3.videos/tim/074-fyuvqRUzeVY.md",{"_path":524,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":523,"description":2023,"date":2024,"position":2025,"image":2026,"videoId":2027,"body":2028,"_type":1137,"_id":2032,"_source":1139,"_file":2033,"_extension":1141},"In this video I'm interviewing Gift Egwuenu. Gift works at Passionate People as a web developer, she is a Media Developer Expert at Cloudinary, she has a YouTube channel and she is a Technical Writer. Wow! We discuss her talk about JAMstack and Gridsome and after that we dive into how she experiences working from Lagos, Nigeria while most of her colleagues are in Europe or the US.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Gift here:\nhttps://twitter.com/lauragift_\nhttps://www.giftegwuenu.com\nhttps://github.com/lauragift21\nhttps://www.youtube.com/channel/UCgUgg53iJX1pdabUxpkgozA\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-08-11T12:00:12Z","075","https://i.ytimg.com/vi/tLbStGzcYYY/maxresdefault.jpg","tLbStGzcYYY",{"type":1132,"children":2029,"toc":2030},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2031},[],"content:3.videos:tim:075-tLbStGzcYYY.md","3.videos/tim/075-tLbStGzcYYY.md",{"_path":527,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":526,"description":2035,"date":2036,"position":2037,"image":2038,"videoId":2039,"body":2040,"_type":1137,"_id":2044,"_source":1139,"_file":2045,"_extension":1141},"In this video I'm interviewing Filip Rakowski, CTO at Vue Storefront. We discuss his talk about Vue Storefront Next and we go in-depth on why they needed a Next version. After that we discuss how to monetize open source work and what it means for Vue Storefront to be a part of the MACH alliance.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Filip here:\nhttps://twitter.com/filrakowski\nhttps://rakowski.dev/\nhttps://www.vuestorefront.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #vuejsglobal #vuestorefront","2020-08-04T12:00:06Z","076","https://i.ytimg.com/vi/BrmXYtPUlM4/maxresdefault.jpg","BrmXYtPUlM4",{"type":1132,"children":2041,"toc":2042},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2043},[],"content:3.videos:tim:076-BrmXYtPUlM4.md","3.videos/tim/076-BrmXYtPUlM4.md",{"_path":530,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":529,"description":2047,"date":2048,"position":2049,"image":2050,"videoId":2051,"body":2052,"_type":1137,"_id":2056,"_source":1139,"_file":2057,"_extension":1141},"In this video I'm interviewing Debbie O'Brien. Debbie is head of learning and developer advocate at #Nuxtjs. We discuss her talk about Nuxt/content and how they are working on a bunch of new features to make nuxt even more flexible. After that we discuss how she experienced landing the job and how she learnt a lot from previous job hunting.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nIn the intro I mention that the Vue.js Global conferenc eis in August. It has been moved to September 17th.\n\nFollow Debbie here:\nhttps://twitter.com/debs_obrien\nhttps://debbie.codes/\nhttps://www.nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-07-27T12:01:33Z","077","https://i.ytimg.com/vi/IBKgryFpUDs/maxresdefault.jpg","IBKgryFpUDs",{"type":1132,"children":2053,"toc":2054},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2055},[],"content:3.videos:tim:077-IBKgryFpUDs.md","3.videos/tim/077-IBKgryFpUDs.md",{"_path":533,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":532,"description":2059,"date":2060,"position":2061,"image":2062,"videoId":2063,"body":2064,"_type":1137,"_id":2068,"_source":1139,"_file":2069,"_extension":1141},"In this video I'm interviewing Maria Lamardo. Maria is a web developer with a specialty in #accessibility and #Vuejs. We talk a little about her Vue.js Global conference talk which basically covers me asking her annoying questions about forms and accessibility. After covering the conference talk we dive into her unconventional path into tech and how she became so good at her job. I'm very impressed by Maria and our conversation goes quite deep. If you are someone who wants to potentially switch careers, watch this interview.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Maria here:\nhttps://twitter.com/MariaLamardo\nhttps://twitter.com/world_vue\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview","2020-07-22T12:00:50Z","078","https://i.ytimg.com/vi/2MFsb5ulhks/maxresdefault.jpg","2MFsb5ulhks",{"type":1132,"children":2065,"toc":2066},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2067},[],"content:3.videos:tim:078-2MFsb5ulhks.md","3.videos/tim/078-2MFsb5ulhks.md",{"_path":536,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":535,"description":2071,"date":2072,"position":2073,"image":2074,"videoId":2075,"body":2076,"_type":1137,"_id":2080,"_source":1139,"_file":2081,"_extension":1141},"After a not-so-great experience with Azure Functions previously I decided to revisit them for version 3.0. Conclusion: AWESOME. I explore how to set-up, create and upload functions all from vscode. Microsoft nailed the developer experience here I and I'll definitely be combining Azure Functions and Azure Static Web Apps in the future.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#azurefunctions #javascript #vscode","2020-07-06T10:04:18Z","079","https://i.ytimg.com/vi/d0jk7hYU1AI/maxresdefault.jpg","d0jk7hYU1AI",{"type":1132,"children":2077,"toc":2078},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2079},[],"content:3.videos:tim:079-d0jk7hYU1AI.md","3.videos/tim/079-d0jk7hYU1AI.md",{"_path":539,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":538,"description":2083,"date":2084,"position":2085,"image":2086,"videoId":2087,"body":2088,"_type":1137,"_id":2092,"_source":1139,"_file":2093,"_extension":1141},"#Gridsome uses Source Plugins to get data from third party CMS' or API's into your #JAMstack website. Recently I felt I needed a custom source plugin and in this video I explain how you can do that as well.\n\nCode is open source: \nhttps://github.com/timbenniks/gridsome-source-example\n\nAlso check out: \nhttps://gridsome.org/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejs","2020-06-30T14:00:16Z","080","https://i.ytimg.com/vi/V50mHzzFFaA/maxresdefault.jpg","V50mHzzFFaA",{"type":1132,"children":2089,"toc":2090},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2091},[],"content:3.videos:tim:080-V50mHzzFFaA.md","3.videos/tim/080-V50mHzzFFaA.md",{"_path":542,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":541,"description":2095,"date":2096,"position":2097,"image":2098,"videoId":2099,"body":2100,"_type":1137,"_id":2104,"_source":1139,"_file":2105,"_extension":1141},"Based on high demand I'm hereby sharing my audio setup for 2020. I create YouTube videos, I make music and I do a ton of public speaking and conference calls. Audio is arguably more important than video so I did my research and put together an awesome setup for a fair price.\n\nIn this video I will go over audio basics, what you need at a minimum and what I chose as my tools for success. If this setup is not budget friendly enough make sure to watch until the end, I give cheaper alternatives that served me very well over the last year.\n\nTimestamps:\n00:00 Introduction\n01:18 My background in audio gear\n03:21 Audio Interface\n06:36 Microphone\n10:36 Audio caparison with and without gear\n11:08 Studio Monitors\n12:39 Headphones\n13:18 Monitor volume control\n15:03 Cheaper alternatives\n16:01 Alternative USB microphone\n17:13 Ultra cheap but awesome lav mic.\n18:10 Concluding\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-06-23T10:14:41Z","081","https://i.ytimg.com/vi/Pu8F59X14-Y/maxresdefault.jpg","Pu8F59X14-Y",{"type":1132,"children":2101,"toc":2102},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2103},[],"content:3.videos:tim:081-Pu8F59X14-Y.md","3.videos/tim/081-Pu8F59X14-Y.md",{"_path":545,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":544,"description":2107,"date":2108,"position":2109,"image":2110,"videoId":2111,"body":2112,"_type":1137,"_id":2116,"_source":1139,"_file":2117,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. In this video I look at #Azure Static Web Apps. Azure clearly noticed the trends in the JAMstack world and likely also figured out that just static file hosting is not enough. They offer way more features than Netlify for example. But is it good enough? Let's see...\n\nConclusion: this thing just works! I'm impressed.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nDocs: https://azure.microsoft.com/en-us/services/app-service/static/\nA great tutorial by Gift Egwuenu (I didn't use it): https://www.giftegwuenu.com/deploy-a-gridsome-app-on-azure-static-web-apps/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries #jamstack","2020-06-15T10:48:34Z","082","https://i.ytimg.com/vi/A54iFAS8rts/maxresdefault.jpg","A54iFAS8rts",{"type":1132,"children":2113,"toc":2114},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2115},[],"content:3.videos:tim:082-A54iFAS8rts.md","3.videos/tim/082-A54iFAS8rts.md",{"_path":548,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":547,"description":2119,"date":2120,"position":2121,"image":2122,"videoId":2123,"body":2124,"_type":1137,"_id":2128,"_source":1139,"_file":2129,"_extension":1141},"In this video you will learn how to use the new Vue 3 composition API to create a simple version of TikTok. We are also using Vite, the new dev build tool build by Evan You!\n\nI thought it would be hard to learn, but it really wasn't. Please, jump in and try this yourself!\n\nThe code is open-source. Find it here: https://github.com/timbenniks/vue3-vite-tiktok-tutorial\n\nLinks: \nhttps://www.vuemastery.com/vue-3-cheat-sheet/\nhttps://github.com/vitejs/vite\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vue3 #compositionapi #vite","2020-06-10T08:17:18Z","083","https://i.ytimg.com/vi/gGaoxqTc7kE/maxresdefault.jpg","gGaoxqTc7kE",{"type":1132,"children":2125,"toc":2126},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2127},[],"content:3.videos:tim:083-gGaoxqTc7kE.md","3.videos/tim/083-gGaoxqTc7kE.md",{"_path":551,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":550,"description":2131,"date":2132,"position":2133,"image":2134,"videoId":2135,"body":2136,"_type":1137,"_id":2140,"_source":1139,"_file":2141,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. In this video I look at Slice Machine, a #Vuejs component library connected to the #Prismic headless CMS. This service is a collaboration between the Prismic and #Nuxtjs. \n\nConclusion: Solid base. Needs some fine tuning.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nhttps://www.slicemachine.dev/\nhttps://vue-essential-slices.netlify.app/\nhttps://prismic.io/\nhttps://nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries","2020-06-02T13:23:14Z","084","https://i.ytimg.com/vi/bPJJxxqycDI/maxresdefault.jpg","bPJJxxqycDI",{"type":1132,"children":2137,"toc":2138},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2139},[],"content:3.videos:tim:084-bPJJxxqycDI.md","3.videos/tim/084-bPJJxxqycDI.md",{"_path":554,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":553,"description":2143,"date":2144,"position":2145,"image":2146,"videoId":2147,"body":2148,"_type":1137,"_id":2152,"_source":1139,"_file":2153,"_extension":1141},"I got to interview Scott Tolinski! Wow! Scott is first and foremost a web developer. With years of experience on his belt he decided to start creating tutorials on YouTube. This now grew into one of the best places to go for learning about the web. He also started leveluptutorials.com where you can get premium lessons.\n\nNext to all this he is the co-host of the Syntax podcast. Scott and his buddy Wes Bos go in-depth on code stuff and teach each-other new things.\n\nThe interview is wide ranging and we go over how to create for YouTube and to how to manage social media. We also discuss how Scott learnt to fail and get success after by being a Bboy with the Robotops Crew.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Scott Tolinski here:\nWebsite: https://www.leveluptutorials.com/\nTwitter: https://twitter.com/stolinski\nYouTube: https://www.youtube.com/c/leveluptuts\nPodcast: https://syntax.fm/\n\nFollow Tim Benniks here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-05-26T10:30:20Z","085","https://i.ytimg.com/vi/zPQ_gQMiT5Y/maxresdefault.jpg","zPQ_gQMiT5Y",{"type":1132,"children":2149,"toc":2150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2151},[],"content:3.videos:tim:085-zPQ_gQMiT5Y.md","3.videos/tim/085-zPQ_gQMiT5Y.md",{"_path":557,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":556,"description":2155,"date":2156,"position":2157,"image":2158,"videoId":2159,"body":2160,"_type":1137,"_id":2164,"_source":1139,"_file":2165,"_extension":1141},"In this video I explain how I managed to add lazy loading images in Vue.js while getting image data from the headless CMS Prismic. \n\nIn this case it’s not just a matter of creating a Vue component as I also get images rendered in HTML from the Prismic Rich text field. \n\nThis is a lazy loading solution for images that works both in vanilla JS and Vue. \n\nSee it in action here: http://timbenniks.nl\nFind the code here: https://github.com/timbenniks/timbenniks2020\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejs #prismic #lazyloading","2020-05-22T13:48:42Z","086","https://i.ytimg.com/vi/5jAYPM6gX1o/maxresdefault.jpg","5jAYPM6gX1o",{"type":1132,"children":2161,"toc":2162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2163},[],"content:3.videos:tim:086-5jAYPM6gX1o.md","3.videos/tim/086-5jAYPM6gX1o.md",{"_path":560,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":559,"description":2167,"date":2168,"position":2169,"image":2170,"videoId":2171,"body":2172,"_type":1137,"_id":2176,"_source":1139,"_file":2177,"_extension":1141},"I had the privilege to interview Jen Looper. Jen is a cloud advocate lead at Microsoft, she is the founder of Front-end Foxes (previously Vue Vixens) and she is a seasoned speaker and developress.\n\nWe had a lovely wide-ranging conversation where we learn about how she came up during the first Internet bubble, managing work and life with kids and starting Front-end Foxes.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Jen here:\nWebsite: https://jenlooper.com\nTwitter: https://twitter.com/jenlooper\nFront-end Foxes: https://www.vuevixens.org\n\nFollow me here:\nWebsite: https://timbenniks.nl\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-05-13T12:44:46Z","087","https://i.ytimg.com/vi/cf5_pit--aI/maxresdefault.jpg","cf5_pit--aI",{"type":1132,"children":2173,"toc":2174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2175},[],"content:3.videos:tim:087-cf5_pit--aI.md","3.videos/tim/087-cf5_pit--aI.md",{"_path":563,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":562,"description":2179,"date":2180,"position":2181,"image":2182,"videoId":2183,"body":2184,"_type":1137,"_id":2188,"_source":1139,"_file":2189,"_extension":1141},"Ever wanted to know how you can use #Prismic and #Gridsome to make an awesome, super fast, #JAMstack website? This is your chance! In this 30 minute video I give you an overview of both Prismic and Gridsome and we dive into the code to see how it all connects.\n\nI could spend hours on going through the specifics on how to build a proper website. I might do that in a different video series, stay tuned! For now enjoy this more general overview of the tools and it should be enough to get you going!\n\nRead more about this project on the blog: https://timbenniks.nl/writings/a-new-website/\nThe project is open source: https://github.com/timbenniks/timbenniks2020/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-05-07T10:36:44Z","088","https://i.ytimg.com/vi/tqR2EO7Tivc/maxresdefault.jpg","tqR2EO7Tivc",{"type":1132,"children":2185,"toc":2186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2187},[],"content:3.videos:tim:088-tqR2EO7Tivc.md","3.videos/tim/088-tqR2EO7Tivc.md",{"_path":566,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":565,"description":2191,"date":2192,"position":2193,"image":2194,"videoId":2195,"body":2196,"_type":1137,"_id":2200,"_source":1139,"_file":2201,"_extension":1141},"In this video I'm interviewing Debbie O'brien from Nuxtjs! We have a lovely and LONG conversation, as friends do. We talk about her new job as Head of Learning at Nuxtjs, her ways of working and cultural differences. We flow from tender, insightful moments to jokes. This is a good one.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Debbie here:\nhttps://debbie.codes\nhttps://twitter.com/debs_obrien\nhttps://nuxtjs.org\nhttps://dev.to/debs_obrien\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-04-29T11:04:04Z","089","https://i.ytimg.com/vi/aw4nl6hGjb0/maxresdefault.jpg","aw4nl6hGjb0",{"type":1132,"children":2197,"toc":2198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2199},[],"content:3.videos:tim:089-aw4nl6hGjb0.md","3.videos/tim/089-aw4nl6hGjb0.md",{"_path":569,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":568,"description":2203,"date":2204,"position":2205,"image":2206,"videoId":2207,"body":2208,"_type":1137,"_id":2212,"_source":1139,"_file":2213,"_extension":1141},"During #COVID19 pandemic I decided to do more with music. In this series called \"Quarantine Licks\" I will show you fun and juicy guitar licks every week.\n\nFor now I kept them acoustic but expect electric guitar also. Rock 'n roll will commence :)\n\nI'm open for collaborations. Comment on this video if you're keen.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\n\n#guitarlicks #quarantinelicks","2020-04-23T10:34:07Z","090","https://i.ytimg.com/vi/gXwRzna4udQ/maxresdefault.jpg","gXwRzna4udQ",{"type":1132,"children":2209,"toc":2210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2211},[],"content:3.videos:tim:090-gXwRzna4udQ.md","3.videos/tim/090-gXwRzna4udQ.md",{"_path":572,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":571,"description":2215,"date":2216,"position":2217,"image":2218,"videoId":2219,"body":2220,"_type":1137,"_id":2224,"_source":1139,"_file":2225,"_extension":1141},"In this Video I will show you a couple of simple do's and don'ts to make your webcam look more professional. You don't need any technical knowledge at all to do the things I'm about to tell you.\n\nPerception of how professional you look is super important. During the COVID-19 pandemic everybody has to work from home. This generally involves using webcams to do meetings. \n\nMaybe you lost your job during the COVID-19 crisis and you need to do interviews via Skype, Zoom or Teams. Looking professional gets your foot in the door in a meeting with your boss or a job interview.\n\nTime stamps\n1:14 The most important thing for your webcam\n2:47 About settings\n4:27 Fun stuff\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-04-20T08:08:37Z","091","https://i.ytimg.com/vi/xiT7qtMCmIk/maxresdefault.jpg","xiT7qtMCmIk",{"type":1132,"children":2221,"toc":2222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2223},[],"content:3.videos:tim:091-xiT7qtMCmIk.md","3.videos/tim/091-xiT7qtMCmIk.md",{"_path":575,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":574,"description":2227,"date":2228,"position":2229,"image":2230,"videoId":2231,"body":2232,"_type":1137,"_id":2236,"_source":1139,"_file":2237,"_extension":1141},"What do Serverless and JAMstack have to do with weight loss? Well, in my case, a lot!\n\nTo be able to loose weight I need a good incentive. And for me that incentive is public accountability. I have created a #Vue.js PWA app called \"Fatty\" that is built on a serverless architecture and the JAMstack. The app shows how much weight I have lost and it tweets an update into the world every time I step on my WiFi enabled scale. In this video I explain how it all connects!\n\nNext to talking about the tech that powers the Fatty app I also tell about my fitness story. If I can loose all that weight than you can as well.\n\nRead about Fatty here: https://timbenniks.nl/writings/fatty-is-alive/\nSee Fatty in action: https://fatty.timbenniks.com\nMore on my fitness story: https://timbenniks.nl/writings/my-fitness-story/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#jamstack #serverless","2020-04-15T10:14:21Z","092","https://i.ytimg.com/vi/beBR8ev2nO8/maxresdefault.jpg","beBR8ev2nO8",{"type":1132,"children":2233,"toc":2234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2235},[],"content:3.videos:tim:092-beBR8ev2nO8.md","3.videos/tim/092-beBR8ev2nO8.md",{"_path":578,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":577,"description":2239,"date":2240,"position":2241,"image":2242,"videoId":2243,"body":2244,"_type":1137,"_id":2248,"_source":1139,"_file":2249,"_extension":1141},"Now that I have entered my fifth week of staying home during the #COVID19 pandemic I decided to do more with music. In this series called \"Quarantine Licks\" I will show you fun guitar licks every week. \n\nI might do some collaborations with other musicians too!\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#guitarlicks","2020-04-14T10:50:39Z","093","https://i.ytimg.com/vi/WLQLCLWJorc/maxresdefault.jpg","WLQLCLWJorc",{"type":1132,"children":2245,"toc":2246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2247},[],"content:3.videos:tim:093-WLQLCLWJorc.md","3.videos/tim/093-WLQLCLWJorc.md",{"_path":581,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":580,"description":2251,"date":2252,"position":2253,"image":2254,"videoId":2255,"body":2256,"_type":1137,"_id":2260,"_source":1139,"_file":2261,"_extension":1141},"In this video I'm the interviewee for a change! We speak about the #vuejsamsterdam conference I just spoke at, about how I interact with the Vue.js community, how I personally interact with clients and teams, about the future of automation in the tech space and how I see innovation in enterprise software. Lot's of good stuff!\n\n1:20 About the conference.\n1:50 About the talk: Team First.\n4:00 FATTY. Public Accountability.\n10:19 Innovation on enterprise level.\n17:30 About failing and behavior.\n21:10 What do you drink while coding?\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam","2020-04-08T12:19:43Z","094","https://i.ytimg.com/vi/ZZRQOzpC068/maxresdefault.jpg","ZZRQOzpC068",{"type":1132,"children":2257,"toc":2258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2259},[],"content:3.videos:tim:094-ZZRQOzpC068.md","3.videos/tim/094-ZZRQOzpC068.md",{"_path":584,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":583,"description":2263,"date":2264,"position":2265,"image":2266,"videoId":2267,"body":2268,"_type":1137,"_id":2272,"_source":1139,"_file":2273,"_extension":1141},"Every project I deal with outdated beliefs about performance and people not really knowing about the power of HTTP/2. This video is a crash course into some of the most valuable features HTTP/2 has to offer: header compression and multiplexing. I do a real time demo in which you can see that multiplexing works but actually has caveats! \n\nIf you want to know about bundle sizes and how many connections can be \"in flight\" at the same time, this video is for you!\n\n#HTTP2 #performance #webpack\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-04-02T11:07:53Z","095","https://i.ytimg.com/vi/f5F7N2kc7hQ/maxresdefault.jpg","f5F7N2kc7hQ",{"type":1132,"children":2269,"toc":2270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2271},[],"content:3.videos:tim:095-f5F7N2kc7hQ.md","3.videos/tim/095-f5F7N2kc7hQ.md",{"_path":587,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":586,"description":2275,"date":2276,"position":2277,"image":2278,"videoId":2279,"body":2280,"_type":1137,"_id":2284,"_source":1139,"_file":2285,"_extension":1141},"In this video I'm interviewing Una Verhoeven. Una and I work together at Valtech. When she joined the global team as a Sitecore Architect we teamed up to help out on a challenging project. We became fast friends and when I learnt about her story I decided an interview had to take place. Some people just impress. Una is one of those.\n\nWe talk about switching cultures from Serbia to the Netherlands, starting your own company and fashion.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Una here:\nTwitter: https://twitter.com/unaverhoeven\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#sitecore #interview #valtech","2020-03-25T12:20:43Z","096","https://i.ytimg.com/vi/nw0y6dkx1KU/maxresdefault.jpg","nw0y6dkx1KU",{"type":1132,"children":2281,"toc":2282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2283},[],"content:3.videos:tim:096-nw0y6dkx1KU.md","3.videos/tim/096-nw0y6dkx1KU.md",{"_path":590,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":589,"description":2287,"date":2288,"position":2289,"image":2290,"videoId":2291,"body":2292,"_type":1137,"_id":2296,"_source":1139,"_file":2297,"_extension":1141},"Filip is the co-founder and tech lead of Vue Storefront. Vue Storefront is a revolutionary Headless PWA for e-commerce that works with any back-end. In this interview we discuss why he thinks Vue Storefront needs to exist and what he thinks about the future of e-commerce. \n\nFilip is also a very active speaker and OSS contributor. He shares his tips and tricks to write better CFP's and more!\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFind Filip here:\nhttps://twitter.com/filrakowski\nhttps://twitter.com/VueStorefront\nhttps://www.vuestorefront.io/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam\n\n#interview #vuestorefront #vuejs","2020-03-20T15:33:05Z","097","https://i.ytimg.com/vi/vqjP5qFiOLg/maxresdefault.jpg","vqjP5qFiOLg",{"type":1132,"children":2293,"toc":2294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2295},[],"content:3.videos:tim:097-vqjP5qFiOLg.md","3.videos/tim/097-vqjP5qFiOLg.md",{"_path":593,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":592,"description":2299,"date":2300,"position":2301,"image":2302,"videoId":2303,"body":2304,"_type":1137,"_id":2308,"_source":1139,"_file":2309,"_extension":1141},"Producing high quality work is dependent on a well-organized team, especially in a high-pressure environment like an ad agency or a production studio. At a certain scale almost every team struggles with cultural differences, perceived pressure from management or misaligned definitions of success.\n\nThese examples are only a handful of the problems teams face, which results in developers that are unhappy and stressed out. Processes outside of their control keep them from doing the thing they love: write great code.\n\nOver the years I have learned that you are more successful if you understand what motivates people. We know happy teams produce better work. Motivated and responsible people are the core of our success. Therefore, I have created a framework (yes, I'm a developer) to deal with projects in complex environments that I call \"Team First\".\n\nThis video is about how the \"Team First\" framework came to be and how it works. It contains best practices and rules to follow in order to make yourself and your team successful. I share anecdotes from years of experience that most developers can identify with.\n\nBefore writing a single line of code you have to deal with all challenges that prohibit you from producing a quality product. The \"Team First\" framework helps leaders, teams and developers get there.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#teamfirst #career #management #motivation","2020-03-12T15:31:27Z","098","https://i.ytimg.com/vi/LTM7wz0Q564/maxresdefault.jpg","LTM7wz0Q564",{"type":1132,"children":2305,"toc":2306},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2307},[],"content:3.videos:tim:098-LTM7wz0Q564.md","3.videos/tim/098-LTM7wz0Q564.md",{"_path":596,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":595,"description":2311,"date":2312,"position":2313,"image":2314,"videoId":2315,"body":2316,"_type":1137,"_id":2320,"_source":1139,"_file":2321,"_extension":1141},"Natalia is a Ukrainian software engineer. She works at Gitlab and she is part of the Vue.js core team. Those are the two positions a lot of people desire. We dive deep into how she experienced the amazing gitlab hiring process and how she managed to get through it.\n\nNatalia is humble and kind and she explains how she sees life and what gives some great insights on how to succeed. \n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFind Natalia here:\nhttps://www.nataliatepluhina.com/\nhttps://twitter.com/N_Tepluhina\nhttps://gitlab.com/ntepluhina\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam\n\n#interview #gitlab #vuejs","2020-03-06T12:53:55Z","099","https://i.ytimg.com/vi/U5S4DqQlt1o/maxresdefault.jpg","U5S4DqQlt1o",{"type":1132,"children":2317,"toc":2318},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2319},[],"content:3.videos:tim:099-U5S4DqQlt1o.md","3.videos/tim/099-U5S4DqQlt1o.md",{"_path":599,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":598,"description":2323,"date":2324,"position":2325,"image":2326,"videoId":2327,"body":2328,"_type":1137,"_id":2332,"_source":1139,"_file":2333,"_extension":1141},"In this video I recap my experience with the Vue.js Amsterdam conference and I make an exciting announcement for future collaborations on this channel. Watch until the end to find out!\n\nA recap of the talks: https://medium.com/jeff-tech/my-top-5-talks-from-vue-js-amsterdam-2020-d56b1b62f1a1\n\nMy slides: https://slides.com/timbenniks/team-first-3\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejsamsterdam #conference #announcements","2020-02-26T12:47:15Z","100","https://i.ytimg.com/vi/bOBY5h-r1hc/maxresdefault.jpg","bOBY5h-r1hc",{"type":1132,"children":2329,"toc":2330},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2331},[],"content:3.videos:tim:100-bOBY5h-r1hc.md","3.videos/tim/100-bOBY5h-r1hc.md",{"_path":602,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":601,"description":2335,"date":2336,"position":2337,"image":2338,"videoId":2339,"body":2340,"_type":1137,"_id":2344,"_source":1139,"_file":2345,"_extension":1141},"In this video I’m interviewing Anastasiya Flynn from Sitecore. Anastasiya is a full-stack developer and currently works at Sitecore, a marketing platform with advanced content personalization features, as the Front-End Technical Evangelist. She evangelizes JavaScript, the front-end community, and Sitecore’s JavaScript Services (JSS) SDK, which enables Sitecore to run “headlessly” so that front-end devs can build a single page app presentation layer using Vue, React, React Native, or Angular.\n\nAnastasiya and I discuss how she landed her job at Sitecore, and we dig deeper into some personal history. She shares her inspirational story on how she got to be where she is now in life. Pay attention, this will inspire you :)\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\n0:00 introduction \n1:25 About public speaking\r\n2:45 Moving from an agency to a product company\r\n5:22 The direction Sitecore JSS is taking with front-end technology\r\n6:41 What makes Anastasiya a good product avengalist\r\n8:10 How to be successful with JSS without Sitecore specific knowledge.\r\n11:30 About building community and how challenges in life can make you successful. \r\n16:54 Tech gives opportunities to everyone who is able to buy a computer.\r\n19:03 About creativity\r\n21:00 cats! Everybody should own a pet.\r\n21:41 Is there anything you are good at that nobody knows about?\r\n22:20 About being a woman in tech\r\n26:20 If you had a billboard that millions of people could see, what would you write on it?\n\nFollow Anastasiya here:\nhttps://twitter.com/AnastasiyaFlynn\nhttps://codealamode.blog/\nhttps://jss.sitecore.com \n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#sitecorejss #interview","2020-02-21T08:29:31Z","101","https://i.ytimg.com/vi/pwqVQnnoPIY/maxresdefault.jpg","pwqVQnnoPIY",{"type":1132,"children":2341,"toc":2342},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2343},[],"content:3.videos:tim:101-pwqVQnnoPIY.md","3.videos/tim/101-pwqVQnnoPIY.md",{"_path":605,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":604,"description":2347,"date":2348,"position":2349,"image":2350,"videoId":2351,"body":2352,"_type":1137,"_id":2356,"_source":1139,"_file":2357,"_extension":1141},"In this video I'm interviewing Eduardo San Martin Morote from the Vue.js core team. What a privilege to speak to someone who actually built the tools I use on a daily basis! Eduardo humbly explains how he sees life and how he acts as a contributor to open source projects.\n\nWhat a guy. I'm in awe how Eduardo carries himself and what this youngster has already accomplished.\n\nIn this video series I interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nFollow Eduardo here:\nhttps://twitter.com/posva\nhttps://github.com/sponsors/posva\nhttps://esm.dev/\nhttps://twitter.com/posva/status/1146415898967908352\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-02-13T09:42:00Z","102","https://i.ytimg.com/vi/LKioMRuiAaE/maxresdefault.jpg","LKioMRuiAaE",{"type":1132,"children":2353,"toc":2354},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2355},[],"content:3.videos:tim:102-LKioMRuiAaE.md","3.videos/tim/102-LKioMRuiAaE.md",{"_path":608,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":607,"description":2359,"date":2360,"position":2361,"image":2362,"videoId":2363,"body":2364,"_type":1137,"_id":2368,"_source":1139,"_file":2369,"_extension":1141},"Ever wanted to know how Webpack works? This video explains its core concepts. I decided to do this because many people think Webpack is like a unicorn that uses rainbows and magic to do its job. But actually, Webpack is not that hard to understand once you have an overview of its feature set.\n\nAfter watching this video you will be ready to roll your own custom configuration! This insight should help you make decisions on how to bundle and optimize your application for production. \n\nPrevious video: https://youtu.be/WExoF1TFI04\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-02-06T10:33:36Z","103","https://i.ytimg.com/vi/AZqRjdqa_D8/maxresdefault.jpg","AZqRjdqa_D8",{"type":1132,"children":2365,"toc":2366},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2367},[],"content:3.videos:tim:103-AZqRjdqa_D8.md","3.videos/tim/103-AZqRjdqa_D8.md",{"_path":611,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":610,"description":2371,"date":2372,"position":2373,"image":2374,"videoId":2375,"body":2376,"_type":1137,"_id":2380,"_source":1139,"_file":2381,"_extension":1141},"In this video I give you 5 tips you can apply to your daily work to a become a better developer. The tips are relatively easy to understand but take some effort to master. However, they can truly change your career! They sure changed mine for the better.\n\nFunny thing is: these tips have little to do with programming itself. Next to producing code, advancing your career is mostly done by having the right attitude, soft skills and taking responsibility for your work.\n\nI do a conference talk about this subject called Team First. Read more about that here: https://timbenniks.nl/writings/team-first/\n\n00:00 Introduction\n01:10 Helicopter view.\n05:15 Motivation.\n09:15 take decisions on intuition. Ask for forgiveness later.\n10:28 Champion subjects you like.\n12:17 Be pragmatic.\n\nPrevious video: https://youtu.be/H7qmArrblw8\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-29T09:55:10Z","104","https://i.ytimg.com/vi/WExoF1TFI04/maxresdefault.jpg","WExoF1TFI04",{"type":1132,"children":2377,"toc":2378},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2379},[],"content:3.videos:tim:104-WExoF1TFI04.md","3.videos/tim/104-WExoF1TFI04.md",{"_path":614,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":613,"description":2383,"date":2384,"position":2385,"image":2386,"videoId":2387,"body":2388,"_type":1137,"_id":2392,"_source":1139,"_file":2393,"_extension":1141},"In this video series I interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nBeware, this is my first interview. Please leave your feedback in the comments :)\n\nIn this installment I'm speaking to Maya Shavin. Maya is a senior web developer in the R&D team at Cloudinary. Next to being a great developer she is also a speaker, a writer and she organizes events. We dive deep (yep, 47 minutes) into how she has such an amazing output and how she deals with the challenges of culture clash, family life and being a woman in a male dominated arena.\n\nMaya truly has the force! Watch until the end where she explains her mantra to success.\n\nFollow Maya here:\nhttps://www.mayashavin.com/\nhttps://twitter.com/MayaShavin\nhttps://www.cloudinary.com\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-24T10:03:49Z","105","https://i.ytimg.com/vi/H7qmArrblw8/maxresdefault.jpg","H7qmArrblw8",{"type":1132,"children":2389,"toc":2390},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2391},[],"content:3.videos:tim:105-H7qmArrblw8.md","3.videos/tim/105-H7qmArrblw8.md",{"_path":617,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":616,"description":2395,"date":2396,"position":2397,"image":2398,"videoId":2399,"body":2400,"_type":1137,"_id":2404,"_source":1139,"_file":2405,"_extension":1141},"Learn how to use Visual Studio Code and Hyper.js with ZSH to streamline your JavaScript developer environment for coding fast and with less errors. The setup is simple and considered and it works both both MAC and PC (With WSL Ubuntu).\n\nHow to install Ubuntu WSL: https://docs.microsoft.com/en-us/windows/wsl/install-win10\n\n0:00 Introduction\n1:00 The tools I use\n1:43 IDE\n2:47 IDE Extensions\n7:17 IDE Theme\n8:58 Terminal\n13:27 Conclusion\n\nTools used in this video:\nVisual Studio Code: https://code.visualstudio.com/\nHyper.js: https://hyper.is/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-13T11:59:22Z","106","https://i.ytimg.com/vi/LIek4kwnSbQ/maxresdefault.jpg","LIek4kwnSbQ",{"type":1132,"children":2401,"toc":2402},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2403},[],"content:3.videos:tim:106-LIek4kwnSbQ.md","3.videos/tim/106-LIek4kwnSbQ.md",{"_path":620,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":619,"description":2407,"date":2408,"position":2409,"image":2410,"videoId":2411,"body":2412,"_type":1137,"_id":2416,"_source":1139,"_file":2417,"_extension":1141},"Hi I'm Tim and welcome to my channel. This channel has content about web development. I do guides and in-depth pieces about development topics but I also interview prominent members of our community. \n\nI interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nIf you like this sort of stuff, subscribe! I'll see you in the comments.\n\nA little bit about me:\nTim is a web developer from Amsterdam who moved to Paris to explore the magical world of luxury clients and baguettes. He likes to build fancy websites, make music and cook food.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-03T15:33:38Z","107","https://i.ytimg.com/vi/SHtBMWkZWPI/maxresdefault.jpg","SHtBMWkZWPI",{"type":1132,"children":2413,"toc":2414},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2415},[],"content:3.videos:tim:107-SHtBMWkZWPI.md","3.videos/tim/107-SHtBMWkZWPI.md",{"_path":623,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":622,"description":2419,"date":2420,"position":2421,"image":2422,"videoId":2423,"body":2424,"_type":1137,"_id":2428,"_source":1139,"_file":2429,"_extension":1141},"In this video I go over all the things you need to know to make your webcam look better. Why webcams kind of suck, how to set-up lighting and what post-processing to add.\n\nMore details can be found here: https://timbenniks.nl/writings/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/\n\n0:20 Why webcams kind of suck\n3:03 About lighting\n5:50 Post processing\n9:40 Bonus!\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-01T00:57:56Z","108","https://i.ytimg.com/vi/vcf1xFOeGwM/maxresdefault.jpg","vcf1xFOeGwM",{"type":1132,"children":2425,"toc":2426},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2427},[],"content:3.videos:tim:108-vcf1xFOeGwM.md","3.videos/tim/108-vcf1xFOeGwM.md",1718484380295] \ No newline at end of file +[{"data":1,"prerenderedAt":2430},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-6Uvc9RWyfL":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1166,1178,1190,1202,1214,1226,1238,1250,1262,1274,1286,1298,1310,1322,1334,1346,1358,1370,1382,1394,1405,1416,1427,1438,1449,1460,1471,1483,1494,1506,1518,1530,1542,1554,1566,1578,1590,1602,1614,1626,1638,1650,1662,1674,1686,1698,1710,1722,1734,1746,1758,1770,1782,1794,1806,1818,1830,1842,1854,1866,1878,1890,1902,1914,1926,1938,1950,1962,1974,1986,1998,2010,2022,2034,2046,2058,2070,2082,2094,2106,2118,2130,2142,2154,2166,2178,2190,2202,2214,2226,2238,2250,2262,2274,2286,2298,2310,2322,2334,2346,2358,2370,2382,2394,2406,2418],{"_path":301,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":19,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"tim",false,"","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-10T07:13:06Z","000","https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","mvq-_s20NDk",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:tim:000-mvq-_s20NDk.md","content","3.videos/tim/000-mvq-_s20NDk.md","md",{"_path":304,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":303,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"Jake Ward, the co-founder and CEO of Data Protocol, and I discuss the current state of developer advocacy in 2024 and share insights on how dev rel teams can measure their impact.\n\nFollow Jake here:\nhttps://twitter.com/Jacobmward\nhttps://dataprotocol.com\nhttps://www.linkedin.com/in/jacobmward/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://linkedin.com/in/timbenniks","2024-04-15T13:00:24Z","001","https://i.ytimg.com/vi/VEX0KtITib4/maxresdefault.jpg","VEX0KtITib4",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:tim:001-VEX0KtITib4.md","3.videos/tim/001-VEX0KtITib4.md",{"_path":307,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":306,"description":1155,"date":1156,"position":1157,"image":1158,"videoId":1159,"body":1160,"_type":1137,"_id":1164,"_source":1139,"_file":1165,"_extension":1141},"Developer relations is having a bit of a rough time right now and in this video I explain my vision on how to succeed in 2024. \n\nTL/DR: focus on developer success while they are on your platform. Set up KPIs that measure their success, so you can show impact on the potential revenue these developers might bring. \n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nLinkedIn: https://linkedin.com/in/timbenniks\nGithub: https://github.com/timbenniks","2024-04-05T06:50:24Z","002","https://i.ytimg.com/vi/196iQP-lHLw/maxresdefault.jpg","196iQP-lHLw",{"type":1132,"children":1161,"toc":1162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1163},[],"content:3.videos:tim:002-196iQP-lHLw.md","3.videos/tim/002-196iQP-lHLw.md",{"_path":310,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":309,"description":1167,"date":1168,"position":1169,"image":1170,"videoId":1171,"body":1172,"_type":1137,"_id":1176,"_source":1139,"_file":1177,"_extension":1141},"Use Cloudinary's AI features to remove items or fill out backgrounds. This is amazing!\n\nhttps://cloudinary.com/blog/generative-fill-ai-powered-outpainting\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-10-11T09:49:25Z","003","https://i.ytimg.com/vi/YuTF3yVsDco/maxresdefault.jpg","YuTF3yVsDco",{"type":1132,"children":1173,"toc":1174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1175},[],"content:3.videos:tim:003-YuTF3yVsDco.md","3.videos/tim/003-YuTF3yVsDco.md",{"_path":313,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":312,"description":1179,"date":1180,"position":1181,"image":1182,"videoId":1183,"body":1184,"_type":1137,"_id":1188,"_source":1139,"_file":1189,"_extension":1141},"In this video, I'll show you how to revolutionize your sales outreach game using personalized videos, made possible by using HeyGen's API.\n\nGone are the days of generic cold emails and phone calls. With HeyGen, Sales Development Representatives (SDRs) can now scale up their outreach efforts like never before. Imagine sending out dozens, even hundreds of personalized videos to your prospects, all with just a few clicks.\n\nIn this video, I break down the key benefits of incorporating personalized videos into your sales outreach strategy. You'll discover how HeyGen AI enables SDRs to add personalized data into the video scripts, making each outreach feel tailor-made for the recipient. I created a proof of concept app to show how you can do this.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-09-25T07:34:24Z","004","https://i.ytimg.com/vi/iip2anHIEtg/maxresdefault.jpg","iip2anHIEtg",{"type":1132,"children":1185,"toc":1186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1187},[],"content:3.videos:tim:004-iip2anHIEtg.md","3.videos/tim/004-iip2anHIEtg.md",{"_path":316,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":315,"description":1191,"date":1192,"position":1193,"image":1194,"videoId":1195,"body":1196,"_type":1137,"_id":1200,"_source":1139,"_file":1201,"_extension":1141},"In this video I explain tips and tricks to make the best @heygen_official #AI #avatar possible.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-09-08T09:26:33Z","005","https://i.ytimg.com/vi/_WRTDVV37Y0/maxresdefault.jpg","_WRTDVV37Y0",{"type":1132,"children":1197,"toc":1198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1199},[],"content:3.videos:tim:005-_WRTDVV37Y0.md","3.videos/tim/005-_WRTDVV37Y0.md",{"_path":319,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":318,"description":1203,"date":1204,"position":1205,"image":1206,"videoId":1207,"body":1208,"_type":1137,"_id":1212,"_source":1139,"_file":1213,"_extension":1141},"Annoyed as a developer? This is a good sign. It means you are getting more senior!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-09-04T08:36:27Z","006","https://i.ytimg.com/vi/J7Jsa49ZQjA/maxresdefault.jpg","J7Jsa49ZQjA",{"type":1132,"children":1209,"toc":1210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1211},[],"content:3.videos:tim:006-J7Jsa49ZQjA.md","3.videos/tim/006-J7Jsa49ZQjA.md",{"_path":322,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":321,"description":1215,"date":1216,"position":1217,"image":1218,"videoId":1219,"body":1220,"_type":1137,"_id":1224,"_source":1139,"_file":1225,"_extension":1141},"I rebuilt my website recently and I used Hygraph’s Content Federation platform to create a unified API layer from all the different sources that serve my blog posts, live streams and videos. \n\nIn this video I explain content federation and I show how my website was built. \n\nGo create a free Hygraph account now at http://hygraph.com\n\nThe best Nuxt GraphQL setup: https://www.youtube.com/watch?v=q282BIqYJ6A\n\n00:00 Introduction\n00:55 Content Federation Platform\n06:09 How I built my website\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-08-29T07:53:53Z","007","https://i.ytimg.com/vi/eD1tiPZXZR8/maxresdefault.jpg","eD1tiPZXZR8",{"type":1132,"children":1221,"toc":1222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1223},[],"content:3.videos:tim:007-eD1tiPZXZR8.md","3.videos/tim/007-eD1tiPZXZR8.md",{"_path":325,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":324,"description":1227,"date":1228,"position":1229,"image":1230,"videoId":1231,"body":1232,"_type":1137,"_id":1236,"_source":1139,"_file":1237,"_extension":1141},"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. Agencies need specific features in the CMS they use for clients. caisy CMS seems to have all of them. In this Tim Tries video I'm looking at caisy to see if they indeed delivers.\n\ncaisy CMS: https://caisy.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-08-03T07:47:01Z","008","https://i.ytimg.com/vi/-3tbdMF1PWE/maxresdefault.jpg","-3tbdMF1PWE",{"type":1132,"children":1233,"toc":1234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1235},[],"content:3.videos:tim:008--3tbdMF1PWE.md","3.videos/tim/008--3tbdMF1PWE.md",{"_path":328,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":327,"description":1239,"date":1240,"position":1241,"image":1242,"videoId":1243,"body":1244,"_type":1137,"_id":1248,"_source":1139,"_file":1249,"_extension":1141},"This is the best GraphQL setup for Nuxt 3. It's simple and effective. It features automatic code generation and typing of schemas. This is awesome.\n\nFind the module here: https://github.com/Diizzayy/nuxt-graphql-client\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-07-31T02:00:15Z","009","https://i.ytimg.com/vi/q282BIqYJ6A/maxresdefault.jpg","q282BIqYJ6A",{"type":1132,"children":1245,"toc":1246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1247},[],"content:3.videos:tim:009-q282BIqYJ6A.md","3.videos/tim/009-q282BIqYJ6A.md",{"_path":331,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":330,"description":1251,"date":1252,"position":1253,"image":1254,"videoId":1255,"body":1256,"_type":1137,"_id":1260,"_source":1139,"_file":1261,"_extension":1141},"Learn how to use Browser Client Hints and Cloudinary to serve responsive images with minimal markup and maximum performance. Browser Client Hints tell Cloudinary the optimal size and resolution of each image request, and Cloudinary delivers it on the fly!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-07-24T14:00:11Z","010","https://i.ytimg.com/vi/H3rLwN27Ga8/maxresdefault.jpg","H3rLwN27Ga8",{"type":1132,"children":1257,"toc":1258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1259},[],"content:3.videos:tim:010-H3rLwN27Ga8.md","3.videos/tim/010-H3rLwN27Ga8.md",{"_path":334,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":333,"description":1263,"date":1264,"position":1265,"image":1266,"videoId":1267,"body":1268,"_type":1137,"_id":1272,"_source":1139,"_file":1273,"_extension":1141},"This is Headless 2.0. Say goodbye to glue code and hello to seamless collaboration between content editors & developers without losing great technical architecture. Embrace a transparent platform that streamlines workflows while empowering content editors to visually edit across various headless sources.\n\nRead more here: https://dev.to/timbenniks/this-is-headless-20-4n4d\n\n00:00 What is Headless 1.0\n01:05 Headless 1.0 problems\n02:50 What is Headless 2.0\n03:23 The how\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-07-17T11:26:04Z","011","https://i.ytimg.com/vi/ERGKTbS0woE/maxresdefault.jpg","ERGKTbS0woE",{"type":1132,"children":1269,"toc":1270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1271},[],"content:3.videos:tim:011-ERGKTbS0woE.md","3.videos/tim/011-ERGKTbS0woE.md",{"_path":337,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":336,"description":1275,"date":1276,"position":1277,"image":1278,"videoId":1279,"body":1280,"_type":1137,"_id":1284,"_source":1139,"_file":1285,"_extension":1141},"Learn about how to integrate Pinia into Nuxt 3. This tutorial covers integration tips and tricks and Pinia basics.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-06-13T23:23:43Z","012","https://i.ytimg.com/vi/zsCc8-0-DIs/maxresdefault.jpg","zsCc8-0-DIs",{"type":1132,"children":1281,"toc":1282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1283},[],"content:3.videos:tim:012-zsCc8-0-DIs.md","3.videos/tim/012-zsCc8-0-DIs.md",{"_path":340,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":339,"description":1287,"date":1288,"position":1289,"image":1290,"videoId":1291,"body":1292,"_type":1137,"_id":1296,"_source":1139,"_file":1297,"_extension":1141},"Ever felt overwhelmed by the amount of video content you need to create as a professional content creator, marketer, or developer relations team member? What if you could clone yourself and let AI handle the scripting and video production? 🤯\n\nIn this video, I reveal how I used a tool called HeyGen to do just that! Watch as I walk you through creating an AI-generated video with my own avatar and voice. This is not just a gimmick – the results are surprisingly close to reality and improving daily! 🤩\n\n📌 What's covered in this video:\n\nThe challenges of being a content creator in the fast-paced world of marketing and developer relations\n\nHow HeyGen can help you create AI-generated videos with your own avatar and voice\n\nA step-by-step walkthrough of the HeyGen dashboard and the process of creating an AI-generated video\n\nHow to use your own voice or choose from different voices and accents in HeyGen\n\nDon't miss out on this game-changing tool to help you level up your video content production! Try HeyGen for yourself and witness the power of AI in action. 🚀\n\n#AI #HeyGen #VideoProduction\n\nhttps://heygen.com\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-06-09T07:00:23Z","013","https://i.ytimg.com/vi/zn2zXyVW4hY/maxresdefault.jpg","zn2zXyVW4hY",{"type":1132,"children":1293,"toc":1294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1295},[],"content:3.videos:tim:013-zn2zXyVW4hY.md","3.videos/tim/013-zn2zXyVW4hY.md",{"_path":343,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":342,"description":1299,"date":1300,"position":1301,"image":1302,"videoId":1303,"body":1304,"_type":1137,"_id":1308,"_source":1139,"_file":1309,"_extension":1141},"Vue.js London was as great as we all expected, with a fantastic venue, and a great hotel! The speaker's family got back together for yet another event! \n\nI got to play my guitar for Alive and Kicking. Check out more here: https://timbenniks.dev/alive-and-kicking\n\nFollow me:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-05-22T09:03:13Z","014","https://i.ytimg.com/vi/DYq17R5C9-s/maxresdefault.jpg","DYq17R5C9-s",{"type":1132,"children":1305,"toc":1306},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1307},[],"content:3.videos:tim:014-DYq17R5C9-s.md","3.videos/tim/014-DYq17R5C9-s.md",{"_path":346,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":345,"description":1311,"date":1312,"position":1313,"image":1314,"videoId":1315,"body":1316,"_type":1137,"_id":1320,"_source":1139,"_file":1321,"_extension":1141},"Are you tired of spending hours editing audio to achieve that perfect sound? Look no further! Using Adobe Podcasts, I demonstrate how artificial intelligence can enhance your audio quality effortlessly, giving you more time to focus on your content. Don't miss out on this game changer for dev rels and content creators.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-04-05T14:00:13Z","015","https://i.ytimg.com/vi/OQ050_YtYLk/maxresdefault.jpg","OQ050_YtYLk",{"type":1132,"children":1317,"toc":1318},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1319},[],"content:3.videos:tim:015-OQ050_YtYLk.md","3.videos/tim/015-OQ050_YtYLk.md",{"_path":349,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":348,"description":1323,"date":1324,"position":1325,"image":1326,"videoId":1327,"body":1328,"_type":1137,"_id":1332,"_source":1139,"_file":1333,"_extension":1141},"Supabase was kind enough to invite me into their Supasquad ambassador program, and I'm super excited about it!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-04-03T13:35:45Z","016","https://i.ytimg.com/vi/RWRZovC5oc4/maxresdefault.jpg","RWRZovC5oc4",{"type":1132,"children":1329,"toc":1330},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1331},[],"content:3.videos:tim:016-RWRZovC5oc4.md","3.videos/tim/016-RWRZovC5oc4.md",{"_path":351,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":22,"description":1335,"date":1336,"position":1337,"image":1338,"videoId":1339,"body":1340,"_type":1137,"_id":1344,"_source":1139,"_file":1345,"_extension":1141},"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-03-20T06:10:23Z","017","https://i.ytimg.com/vi/M0MrLIGs6I0/maxresdefault.jpg","M0MrLIGs6I0",{"type":1132,"children":1341,"toc":1342},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1343},[],"content:3.videos:tim:017-M0MrLIGs6I0.md","3.videos/tim/017-M0MrLIGs6I0.md",{"_path":353,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":16,"description":1347,"date":1348,"position":1349,"image":1350,"videoId":1351,"body":1352,"_type":1137,"_id":1356,"_source":1139,"_file":1357,"_extension":1141},"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-03-02T15:00:09Z","018","https://i.ytimg.com/vi/hhPiTREYobI/maxresdefault.jpg","hhPiTREYobI",{"type":1132,"children":1353,"toc":1354},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1355},[],"content:3.videos:tim:018-hhPiTREYobI.md","3.videos/tim/018-hhPiTREYobI.md",{"_path":356,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":355,"description":1359,"date":1360,"position":1361,"image":1362,"videoId":1363,"body":1364,"_type":1137,"_id":1368,"_source":1139,"_file":1369,"_extension":1141},"Sitecore has been career-defining for me, we lost touch for a while, but recently, we fell back in love...\n\n#Sitecore is an excellent CMS but with a few flaws due to its monolithic nature and, more recently, due to its pseudo-composable approach. I found a way to love Sitecore again by decoupling its content management and front-end rendering parts. You can use @UniformVisualWorkspace to select content from a Sitecore instance and funnel it into any front end you desire. \n\nThis approach gives you developer freedom, a way to add any other headless source without worry, and you can host anywhere you want. Say goodbye to your slow and expensive CD servers! \n\nIn this video, I use Nuxt 3 for the rendering - because why not!?\n\nFind out more about #Uniform at https://uniform.dev\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-11-23T16:58:55Z","019","https://i.ytimg.com/vi/e64EyULAoMk/maxresdefault.jpg","e64EyULAoMk",{"type":1132,"children":1365,"toc":1366},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1367},[],"content:3.videos:tim:019-e64EyULAoMk.md","3.videos/tim/019-e64EyULAoMk.md",{"_path":359,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":358,"description":1371,"date":1372,"position":1373,"image":1374,"videoId":1375,"body":1376,"_type":1137,"_id":1380,"_source":1139,"_file":1381,"_extension":1141},"This is my JamstackConf talk\n\nYour tools are holding you back. DXC is the solution that gives developers and business teams access to the tools they need to do their best work and deliver faster than ever. Let's kill the glue code monster!\n\nLearn more: https://uniform.dev/what-is-dxc\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-11-16T09:38:50Z","020","https://i.ytimg.com/vi/xeTYkE98MP0/maxresdefault.jpg","xeTYkE98MP0",{"type":1132,"children":1377,"toc":1378},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1379},[],"content:3.videos:tim:020-xeTYkE98MP0.md","3.videos/tim/020-xeTYkE98MP0.md",{"_path":362,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":361,"description":1383,"date":1384,"position":1385,"image":1386,"videoId":1387,"body":1388,"_type":1137,"_id":1392,"_source":1139,"_file":1393,"_extension":1141},"Learn how to make a Vue 3 composable.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Vue3-turbos/tree/main/vue3-how-to-make-a-composable\n\nVisit https://turbo-tutorials.dev/tutorials/vue-3-learn-how-to-make-a-composable/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","2022-10-31T16:04:48Z","021","https://i.ytimg.com/vi/0xO0BNZqUf4/maxresdefault.jpg","0xO0BNZqUf4",{"type":1132,"children":1389,"toc":1390},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1391},[],"content:3.videos:tim:021-0xO0BNZqUf4.md","3.videos/tim/021-0xO0BNZqUf4.md",{"_path":365,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":364,"description":1395,"date":1384,"position":1396,"image":1397,"videoId":1398,"body":1399,"_type":1137,"_id":1403,"_source":1139,"_file":1404,"_extension":1141},"Learn how to use client and server components in Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-clientside-serverside-components\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-add-client-only-components/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","022","https://i.ytimg.com/vi/CwkJY7RaonY/maxresdefault.jpg","CwkJY7RaonY",{"type":1132,"children":1400,"toc":1401},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1402},[],"content:3.videos:tim:022-CwkJY7RaonY.md","3.videos/tim/022-CwkJY7RaonY.md",{"_path":368,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":367,"description":1406,"date":1384,"position":1407,"image":1408,"videoId":1409,"body":1410,"_type":1137,"_id":1414,"_source":1139,"_file":1415,"_extension":1141},"Learn how to query an internal Nuxt API route from your front end using useFetch(). \n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/nuxt3-query-from-api-route\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-query-from-a-nuxt-api-route/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","023","https://i.ytimg.com/vi/Lsf2rhZSYKg/maxresdefault.jpg","Lsf2rhZSYKg",{"type":1132,"children":1411,"toc":1412},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1413},[],"content:3.videos:tim:023-Lsf2rhZSYKg.md","3.videos/tim/023-Lsf2rhZSYKg.md",{"_path":371,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":370,"description":1417,"date":1384,"position":1418,"image":1419,"videoId":1420,"body":1421,"_type":1137,"_id":1425,"_source":1139,"_file":1426,"_extension":1141},"Learn how to apply Vue components into markdown with MDC and Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-vue-components-in-content-v2\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-how-to-use-vue-components-in-nuxt-content-v2/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","024","https://i.ytimg.com/vi/Mg0feVWNUE0/maxresdefault.jpg","Mg0feVWNUE0",{"type":1132,"children":1422,"toc":1423},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1424},[],"content:3.videos:tim:024-Mg0feVWNUE0.md","3.videos/tim/024-Mg0feVWNUE0.md",{"_path":374,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":373,"description":1428,"date":1384,"position":1429,"image":1430,"videoId":1431,"body":1432,"_type":1137,"_id":1436,"_source":1139,"_file":1437,"_extension":1141},"Learn about the basics of responsive images\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Html-turbos/tree/main/responsive-image\n\nVisit https://turbo-tutorials.dev/tutorials/learn-about-responsive-image-basics/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","025","https://i.ytimg.com/vi/NPSe6yqQzKI/maxresdefault.jpg","NPSe6yqQzKI",{"type":1132,"children":1433,"toc":1434},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1435},[],"content:3.videos:tim:025-NPSe6yqQzKI.md","3.videos/tim/025-NPSe6yqQzKI.md",{"_path":377,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":376,"description":1439,"date":1384,"position":1440,"image":1441,"videoId":1442,"body":1443,"_type":1137,"_id":1447,"_source":1139,"_file":1448,"_extension":1141},"Learn how to add information to the head of the page with Nuxt 3.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-head\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-head-management/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","026","https://i.ytimg.com/vi/Rh6HJO9xK-o/maxresdefault.jpg","Rh6HJO9xK-o",{"type":1132,"children":1444,"toc":1445},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1446},[],"content:3.videos:tim:026-Rh6HJO9xK-o.md","3.videos/tim/026-Rh6HJO9xK-o.md",{"_path":380,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":379,"description":1450,"date":1384,"position":1451,"image":1452,"videoId":1453,"body":1454,"_type":1137,"_id":1458,"_source":1139,"_file":1459,"_extension":1141},"Learn how to add schema.org microdata to your Nuxt 3 pages. \n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-schema-org\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-schema-org/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","027","https://i.ytimg.com/vi/rtH3OIkJp2k/maxresdefault.jpg","rtH3OIkJp2k",{"type":1132,"children":1455,"toc":1456},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1457},[],"content:3.videos:tim:027-rtH3OIkJp2k.md","3.videos/tim/027-rtH3OIkJp2k.md",{"_path":383,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":382,"description":1461,"date":1384,"position":1462,"image":1463,"videoId":1464,"body":1465,"_type":1137,"_id":1469,"_source":1139,"_file":1470,"_extension":1141},"Learn how to query an external API and how to implement \"read more\" functionality.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-query-from-external-api\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-query-from-an-external-api-read-more/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","028","https://i.ytimg.com/vi/zAd7s01LfIc/maxresdefault.jpg","zAd7s01LfIc",{"type":1132,"children":1466,"toc":1467},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1468},[],"content:3.videos:tim:028-zAd7s01LfIc.md","3.videos/tim/028-zAd7s01LfIc.md",{"_path":386,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":385,"description":1472,"date":1473,"position":1474,"image":1475,"videoId":1476,"body":1477,"_type":1137,"_id":1481,"_source":1139,"_file":1482,"_extension":1141},"Learn about Nuxt 3's Nitro engine and how it can do hybrid rendering between SSG and SSR.\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-hybrid-mode\n\nVisit https://turbo-tutorials.dev/tutorials/nuxt-3-learn-about-hybrid-rendering/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","2022-10-31T16:04:47Z","029","https://i.ytimg.com/vi/5i1Zqfu6Xtw/maxresdefault.jpg","5i1Zqfu6Xtw",{"type":1132,"children":1478,"toc":1479},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1480},[],"content:3.videos:tim:029-5i1Zqfu6Xtw.md","3.videos/tim/029-5i1Zqfu6Xtw.md",{"_path":389,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":388,"description":1484,"date":1473,"position":1485,"image":1486,"videoId":1487,"body":1488,"_type":1137,"_id":1492,"_source":1139,"_file":1493,"_extension":1141},"Learn how to pick and transform data coming back from an API call in Nuxt 3\n\nFind the code for this tutorial here: https://github.com/Turbo-Tutorials/Nuxt3-turbos/tree/main/nuxt3-fetch-pick-transform\n\nVisit https://turbo-tutorials.dev/tutorials/turbo-tutorial-or-nuxt-3-pick-and-transform/ for more info.\n\nBrowse more tutorials here: https://turbo-tutorials.dev","030","https://i.ytimg.com/vi/D33YNlhvHXM/maxresdefault.jpg","D33YNlhvHXM",{"type":1132,"children":1489,"toc":1490},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1491},[],"content:3.videos:tim:030-D33YNlhvHXM.md","3.videos/tim/030-D33YNlhvHXM.md",{"_path":392,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":391,"description":1495,"date":1496,"position":1497,"image":1498,"videoId":1499,"body":1500,"_type":1137,"_id":1504,"_source":1139,"_file":1505,"_extension":1141},"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. In this episode, I try out #Medusajs, an open-source #ecommerce alternative to Shopify.\n\nConclusion: excellent, great, awesome, composable, performant. But why is this not a Saas? I'd happily pay a few bucks a month for this!\n\nFollow medusa: \nhttps://medusajs.com\nhttps://github.com/medusajs/medusa\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGitHub: https://github.com/timbenniks","2022-09-19T09:39:20Z","031","https://i.ytimg.com/vi/c1jDUhsh1aE/maxresdefault.jpg","c1jDUhsh1aE",{"type":1132,"children":1501,"toc":1502},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1503},[],"content:3.videos:tim:031-c1jDUhsh1aE.md","3.videos/tim/031-c1jDUhsh1aE.md",{"_path":395,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":394,"description":1507,"date":1508,"position":1509,"image":1510,"videoId":1511,"body":1512,"_type":1137,"_id":1516,"_source":1139,"_file":1517,"_extension":1141},"I've been away for a bit, but I'm back! I've built a new set in my studio, plug 'n play. I sit down, hit record, and I'm ready to rock! Content creators often have lots of setup and tear down, which makes creating slow. \n\n\nThe tools I use in this setup:\nCamera: Sony ZV e10\nLens: Sigma 16mm f1.4\nLights: Amaran 100d + Godox softbox, Godox TL60, Filtrox VL500\nMic: Rode NTG 4+\nAudio Interface: Comica Linkflex AD2\nPreview screen: Feelworld FW568V2\nStands: Neewer C-stand\nRemote: JJC Bluetooth for Sony Cameras\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks","2022-09-02T11:24:19Z","032","https://i.ytimg.com/vi/-8Z1npiG-YA/maxresdefault.jpg","-8Z1npiG-YA",{"type":1132,"children":1513,"toc":1514},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1515},[],"content:3.videos:tim:032--8Z1npiG-YA.md","3.videos/tim/032--8Z1npiG-YA.md",{"_path":398,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":397,"description":1519,"date":1520,"position":1521,"image":1522,"videoId":1523,"body":1524,"_type":1137,"_id":1528,"_source":1139,"_file":1529,"_extension":1141},"In this video, I'm interviewing Szymon Licau, Frontend Principal Engineer at Monterail, about the State of #Vue in 2022. Monterail has created this report for the last four years, and they are always on the top of their game. It's an exciting read!\n\nGet the report here: https://hi.monterail.co/3NuLjRr\n\nFollow Szymon here:\nhttps://twitter.com/szymon_licau\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-07-24T19:36:08Z","033","https://i.ytimg.com/vi/8wXDFiXXkTw/maxresdefault.jpg","8wXDFiXXkTw",{"type":1132,"children":1525,"toc":1526},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1527},[],"content:3.videos:tim:033-8wXDFiXXkTw.md","3.videos/tim/033-8wXDFiXXkTw.md",{"_path":401,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":400,"description":1531,"date":1532,"position":1533,"image":1534,"videoId":1535,"body":1536,"_type":1137,"_id":1540,"_source":1139,"_file":1541,"_extension":1141},"Sometimes I try out tech or web services for the first time. I give feedback as I go, in real-time. This is the #TimTries Series. In this episode, I try out the Algolia #Nuxt3 module made by Jakub Andrzejewski.\n\nConclusion: Being a release candidate, Nuxt 3 is surprisingly stable, however, the ecosystem around it is not fully there yet. With some hiccups along the way, this Nuxt 3 module makes Algolia work great and super easy to use!\n\nDisclaimer: For this video my opinions are honest and real time. This is truly the first time I tried the Algolia module for Nuxt 3.\n\nJakub Andrzejewski:\nhttps://twitter.com/jacobandrewsky\n\nAlgolia module for Nuxt 3:\nhttps://algolia.nuxtjs.org\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks","2022-07-09T12:46:18Z","034","https://i.ytimg.com/vi/yZh1l740tNo/maxresdefault.jpg","yZh1l740tNo",{"type":1132,"children":1537,"toc":1538},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1539},[],"content:3.videos:tim:034-yZh1l740tNo.md","3.videos/tim/034-yZh1l740tNo.md",{"_path":404,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":403,"description":1543,"date":1544,"position":1545,"image":1546,"videoId":1547,"body":1548,"_type":1137,"_id":1552,"_source":1139,"_file":1553,"_extension":1141},"I just bought a new studio light and the experience made me record this video. It gives general advice on what type of price range to look for in gear for content creators like me. Enjoy!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-03-28T12:44:57Z","035","https://i.ytimg.com/vi/MdzKgC1Pgbc/maxresdefault.jpg","MdzKgC1Pgbc",{"type":1132,"children":1549,"toc":1550},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1551},[],"content:3.videos:tim:035-MdzKgC1Pgbc.md","3.videos/tim/035-MdzKgC1Pgbc.md",{"_path":407,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":406,"description":1555,"date":1556,"position":1557,"image":1558,"videoId":1559,"body":1560,"_type":1137,"_id":1564,"_source":1139,"_file":1565,"_extension":1141},"After months of hard work, I finally finished my very own YouTube studio! We transformed a leaky old countryside garage with no windows into the ultimate workspace for a content creator, conference speaker and developer advocate.\n\nThis is a space where I film videos, do live streams, speak at virtual conferences and have colleagues over for work sessions. \n\n00:00 Intro sequence\n00:33 Introduction to the project\n01:52 Getting started\n04:00 Custom oak windows and doors\n05:13 Delivery of supplies\n06:06 Water damage and leakage\n08:40 More water issues\n10:30 Ceilings and walls\n11:50 Pragmatic solutions\n13:05 Electronics and plaster\n15:15 Painting\n16:27 Final reveal\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2022-03-10T11:06:58Z","036","https://i.ytimg.com/vi/dlI7uZzDDx8/maxresdefault.jpg","dlI7uZzDDx8",{"type":1132,"children":1561,"toc":1562},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1563},[],"content:3.videos:tim:036-dlI7uZzDDx8.md","3.videos/tim/036-dlI7uZzDDx8.md",{"_path":410,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":409,"description":1567,"date":1568,"position":1569,"image":1570,"videoId":1571,"body":1572,"_type":1137,"_id":1576,"_source":1139,"_file":1577,"_extension":1141},"My conference talk from VueConf Toronto!\n\nCable management for Nuxt 3. Compose pages with multiple headless sources and never re-platform again…\n\nNow that companies are starting to use multiple different headless sources to create their digital experience platforms, a real problem is forming. Content editors need to create pages with products, CMS content, videos and personalisation but all these things come from different vendors.\n\nThey have no overview over what to do and they always have to ask a developer to connect things together in the front-end. Developers generally have no time so frustration kicks in.\n\nWe need a way to compose pages with different headless sources without too much developer involvement. Marketers need to be free to tell their stories when and how they want to. BUT. Developers also need to be happy. They need complete freedom in their tech stack and in how they choose to build a website.\n\nSounds like a dream come true? In this talk I’ll show you how to connect up different headless sources in a very easy to use system and how query them in the front-end without tight coupling. \n\nLet’s Nuxtify the world!\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-11-23T18:16:39Z","037","https://i.ytimg.com/vi/RY60wVg0FZQ/maxresdefault.jpg","RY60wVg0FZQ",{"type":1132,"children":1573,"toc":1574},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1575},[],"content:3.videos:tim:037-RY60wVg0FZQ.md","3.videos/tim/037-RY60wVg0FZQ.md",{"_path":413,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":412,"description":1579,"date":1580,"position":1581,"image":1582,"videoId":1583,"body":1584,"_type":1137,"_id":1588,"_source":1139,"_file":1589,"_extension":1141},"Nuxt 3 is in beta and it’s awesome. I’ve tried it out at length and I have a couple of things to show you. These are my 5 favourite features Nuxt has to offer for your daily developer experience. \n\nhttps://v3.nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-10-21T14:19:13Z","038","https://i.ytimg.com/vi/ek-hhoZLFVg/maxresdefault.jpg","ek-hhoZLFVg",{"type":1132,"children":1585,"toc":1586},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1587},[],"content:3.videos:tim:038-ek-hhoZLFVg.md","3.videos/tim/038-ek-hhoZLFVg.md",{"_path":416,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":415,"description":1591,"date":1592,"position":1593,"image":1594,"videoId":1595,"body":1596,"_type":1137,"_id":1600,"_source":1139,"_file":1601,"_extension":1141},"I had the privilege to speak at DevBreak21: The Ultimate Tech Festival. It's indeed more of a festival than a conference. Held in an ancient castle, the grounds allowed for lot's of activities and multiple talk tracks. \n\nI had a great time!\nSee more here: https://www.devbreak.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-09-13T12:33:22Z","039","https://i.ytimg.com/vi/Kn5U4AHCs_0/maxresdefault.jpg","Kn5U4AHCs_0",{"type":1132,"children":1597,"toc":1598},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1599},[],"content:3.videos:tim:039-Kn5U4AHCs_0.md","3.videos/tim/039-Kn5U4AHCs_0.md",{"_path":419,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":418,"description":1603,"date":1604,"position":1605,"image":1606,"videoId":1607,"body":1608,"_type":1137,"_id":1612,"_source":1139,"_file":1613,"_extension":1141},"Now that we have figured out that #Jamstack sites are the fastest out there, the JavaScript bundles they ship have become the bottleneck. JavaScript bundles need to be downloaded, parsed and executed by the browser. Lot's of people now who have phablets and loading a regular React or Vue app is actually slow due to the JavaScript they output.\n\nWhat if you could build a website with your favourite framework but choose exactly which bits of JavaScript end up on the client?\n\nEnter Astro.\n\nWith the ability to choose what JavaScript the user has to load and when, Astro is paving a new way of web development. In my opinion this is the future.\n\nCheck out my code here: https://github.com/timbenniks/astro-vue\n\nI used Astro, Vue, React, Prismic and Tailwind for the demo.\n\nhttps://astro.build\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-08-25T14:51:16Z","040","https://i.ytimg.com/vi/O8m4cS3o4II/maxresdefault.jpg","O8m4cS3o4II",{"type":1132,"children":1609,"toc":1610},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1611},[],"content:3.videos:tim:040-O8m4cS3o4II.md","3.videos/tim/040-O8m4cS3o4II.md",{"_path":422,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":421,"description":1615,"date":1616,"position":1617,"image":1618,"videoId":1619,"body":1620,"_type":1137,"_id":1624,"_source":1139,"_file":1625,"_extension":1141},"We moved house and now I have the chance to build the ultimate YouTube studio in our garage! In this vlog series you'll see me do everything myself. From fitting windows, to electronics, to insulation.\n\nPlease help, I know nothing about this stuff :)\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-07-28T12:08:29Z","041","https://i.ytimg.com/vi/xba15Vr-kFY/maxresdefault.jpg","xba15Vr-kFY",{"type":1132,"children":1621,"toc":1622},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1623},[],"content:3.videos:tim:041-xba15Vr-kFY.md","3.videos/tim/041-xba15Vr-kFY.md",{"_path":425,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":424,"description":1627,"date":1628,"position":1629,"image":1630,"videoId":1631,"body":1632,"_type":1137,"_id":1636,"_source":1139,"_file":1637,"_extension":1141},"In this video I compare the newly released Nuxt and Next native Image tags to the Next Image. Who wins? \n\nThe rules:\nOutput semantically valid HTML according to web standards.\nNo opinions added to the output.\nShould work out of the box.\n\n00:00 Introduction\n00:47 The rules\n01:50 Nuxt Image\n06:06 Next Image\n11:32 Conclusions\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-06-21T08:31:45Z","042","https://i.ytimg.com/vi/lpK392G10OU/maxresdefault.jpg","lpK392G10OU",{"type":1132,"children":1633,"toc":1634},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1635},[],"content:3.videos:tim:042-lpK392G10OU.md","3.videos/tim/042-lpK392G10OU.md",{"_path":428,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":427,"description":1639,"date":1640,"position":1641,"image":1642,"videoId":1643,"body":1644,"_type":1137,"_id":1648,"_source":1139,"_file":1649,"_extension":1141},"Images are hard. They seem easy to use but there are a lot of ways to use them. In this video I explain the anatomy the img and picture tags. I hope this helps because it frustrates me how hard they are to use.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-06-16T12:29:12Z","043","https://i.ytimg.com/vi/UXjgT2_MF90/maxresdefault.jpg","UXjgT2_MF90",{"type":1132,"children":1645,"toc":1646},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1647},[],"content:3.videos:tim:043-UXjgT2_MF90.md","3.videos/tim/043-UXjgT2_MF90.md",{"_path":431,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":430,"description":1651,"date":1652,"position":1653,"image":1654,"videoId":1655,"body":1656,"_type":1137,"_id":1660,"_source":1139,"_file":1661,"_extension":1141},"Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time. This is the #timtries Series. In this episode I try out the #Storyblok, the headless CMS with NuxtJS as the front-end. \n\nConclusion: It's probably the best headless #CMS editor experience I have seen. The set-up had some hiccups however.\n\nDisclaimer: For this video my opinions are honest and real time. This is truly the first time I tried Storyblok.\n\nStoryblok:\nhttps://www.storyblok.com/\nhttps://twitter.com/storyblok\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks","2021-05-24T13:00:14Z","044","https://i.ytimg.com/vi/d0ra_M3JLSY/maxresdefault.jpg","d0ra_M3JLSY",{"type":1132,"children":1657,"toc":1658},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1659},[],"content:3.videos:tim:044-d0ra_M3JLSY.md","3.videos/tim/044-d0ra_M3JLSY.md",{"_path":434,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":433,"description":1663,"date":1664,"position":1665,"image":1666,"videoId":1667,"body":1668,"_type":1137,"_id":1672,"_source":1139,"_file":1673,"_extension":1141},"Sometimes I try out new tech or web services for the first time. I give feedback as I go, in real-time. This is the #timtries Series.\n\nIn this episode I try out the Algolia Crawler for #Netlify.\n\nConclusion: you should try this out! I’ll use this on all my Jamstack websites going forward. Wow!\n\nWant to try #Algolia for free yourself? Use my affiliate link: https://utm.io/udjGK\n\nDisclaimer: I'm an Algolia ambassador, for this video my opinions are honest and real time.\n\nFind Algolia here:\nhttps://utm.io/udjGK\nhttps://twitter.com/Algolia\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-05-03T14:00:02Z","045","https://i.ytimg.com/vi/7JK6NYaLHuc/maxresdefault.jpg","7JK6NYaLHuc",{"type":1132,"children":1669,"toc":1670},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1671},[],"content:3.videos:tim:045-7JK6NYaLHuc.md","3.videos/tim/045-7JK6NYaLHuc.md",{"_path":437,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":436,"description":1675,"date":1676,"position":1677,"image":1678,"videoId":1679,"body":1680,"_type":1137,"_id":1684,"_source":1139,"_file":1685,"_extension":1141},"The new Apple M1 is fast. Really fast. I decided to try using Vite and the new Tailwind JIT together to see how fast the developer experience can actually get.\n\nConclusion: it's so fast my brain melted...\n\nThe future is bright for front-end developers. New hardware and software is coming out now that is changing the game.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-04-01T12:45:01Z","046","https://i.ytimg.com/vi/sU22R2W3wEA/maxresdefault.jpg","sU22R2W3wEA",{"type":1132,"children":1681,"toc":1682},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1683},[],"content:3.videos:tim:046-sU22R2W3wEA.md","3.videos/tim/046-sU22R2W3wEA.md",{"_path":440,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":439,"description":1687,"date":1688,"position":1689,"image":1690,"videoId":1691,"body":1692,"_type":1137,"_id":1696,"_source":1139,"_file":1697,"_extension":1141},"After a two year hiatus to Windows land I decided to switch back to Apple. PC parts are not in stock and my current beast of a PC actually isn't as stable as I had hoped.\n\nI opted for the new M1 Mac Mini which I maxed out. I have a 1tb 16gb RAM model. I also bought some other goodies like a Caldigit dock and a portable nvme drive.\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2021-03-24T16:00:15Z","047","https://i.ytimg.com/vi/6Ub_k4uvz20/maxresdefault.jpg","6Ub_k4uvz20",{"type":1132,"children":1693,"toc":1694},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1695},[],"content:3.videos:tim:047-6Ub_k4uvz20.md","3.videos/tim/047-6Ub_k4uvz20.md",{"_path":443,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":442,"description":1699,"date":1700,"position":1701,"image":1702,"videoId":1703,"body":1704,"_type":1137,"_id":1708,"_source":1139,"_file":1709,"_extension":1141},"In this series Ishan Anand (CTO and co-founder of Moovweb) and I explain Core Web Vitals. In this installment we discuss the basics and we figure out that Lighthouse definitely is not the right tool to do performance tests for websites.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://github.com/timbenniks\n\nFollow Ishan here:\nhttps://moovweb.com\nhttps://corewebvitals.email\nhttps://twitter.com/ianand\nhttps://www.linkedin.com/in/ishananand/","2021-03-22T13:00:10Z","048","https://i.ytimg.com/vi/Ec7pVGy8XsQ/maxresdefault.jpg","Ec7pVGy8XsQ",{"type":1132,"children":1705,"toc":1706},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1707},[],"content:3.videos:tim:048-Ec7pVGy8XsQ.md","3.videos/tim/048-Ec7pVGy8XsQ.md",{"_path":446,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":445,"description":1711,"date":1712,"position":1713,"image":1714,"videoId":1715,"body":1716,"_type":1137,"_id":1720,"_source":1139,"_file":1721,"_extension":1141},"Welcome to the second episode of the DevRel roundtable series where I invite developer relation people to a roundtable discussion to converse on whatever topics we feel are relevant.\n\nIn this episode I invited two titans: Debbie O'brien from Bit and Lucie Haberer from Prismic. We go over what a DevRel is and a lot more.\n\nFollow Debbie here:\nhttps://twitter.com/debs_obrien\nhttps://debbie.codes/\n\nFollow Lucie here:\nhttps://twitter.com/li_hbr\nhttps://lihbr.com/\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks","2021-03-08T12:00:15Z","049","https://i.ytimg.com/vi/lSxU_q-8Rrc/maxresdefault.jpg","lSxU_q-8Rrc",{"type":1132,"children":1717,"toc":1718},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1719},[],"content:3.videos:tim:049-lSxU_q-8Rrc.md","3.videos/tim/049-lSxU_q-8Rrc.md",{"_path":449,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":448,"description":1723,"date":1724,"position":1725,"image":1726,"videoId":1727,"body":1728,"_type":1137,"_id":1732,"_source":1139,"_file":1733,"_extension":1141},"This is my talk for my JSWorld Conference! I'm talking about how JAMstack will change the world. I now work at Uniform where we take disrupting the status quo of Digital Experience Platform software seriously :)\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\nUniform: https://uniform.dev","2021-02-25T15:59:46Z","050","https://i.ytimg.com/vi/YEzAod1sDdg/maxresdefault.jpg","YEzAod1sDdg",{"type":1132,"children":1729,"toc":1730},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1731},[],"content:3.videos:tim:050-YEzAod1sDdg.md","3.videos/tim/050-YEzAod1sDdg.md",{"_path":452,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":451,"description":1735,"date":1736,"position":1737,"image":1738,"videoId":1739,"body":1740,"_type":1137,"_id":1744,"_source":1139,"_file":1745,"_extension":1141},"I enjoy making websites super fast, but I also like metrics. These two things do not always combine well. To add metrics, you also need code to provide these metrics. But that slows down your website!\n\nI found a way to remove Google Analytics JavaScript but still provide data to its back-end. I even added web vitals! I did all of it in Nuxt!\n\nCredit: https://twitter.com/DasSurma\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks","2021-02-12T12:00:03Z","051","https://i.ytimg.com/vi/DV5mLxbrTi8/maxresdefault.jpg","DV5mLxbrTi8",{"type":1132,"children":1741,"toc":1742},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1743},[],"content:3.videos:tim:051-DV5mLxbrTi8.md","3.videos/tim/051-DV5mLxbrTi8.md",{"_path":455,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":454,"description":1747,"date":1748,"position":1749,"image":1750,"videoId":1751,"body":1752,"_type":1137,"_id":1756,"_source":1139,"_file":1757,"_extension":1141},"Read more here: https://timbenniks.dev/writings/i-turned-my-career-on-its-head/\n\n2021 is starting well! I have a new Job at a silicon valley startup. In this video I discuss what the job is, why I like it and also why I moved away from the safe career path I was on at Valtech.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","2021-02-01T09:27:12Z","052","https://i.ytimg.com/vi/HCThe5pWhvM/maxresdefault.jpg","HCThe5pWhvM",{"type":1132,"children":1753,"toc":1754},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1755},[],"content:3.videos:tim:052-HCThe5pWhvM.md","3.videos/tim/052-HCThe5pWhvM.md",{"_path":458,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":457,"description":1759,"date":1760,"position":1761,"image":1762,"videoId":1763,"body":1764,"_type":1137,"_id":1768,"_source":1139,"_file":1769,"_extension":1141},"In this video I interview Ishan Anand (co-founder/CTO) and Mark Brocado (VP of Engineering) from Moovweb. Moovweb is an all-in-one JAMstack platform to develop, deploy, preview, split test and monitor your frontend. The cool thing is that Moovweb is able to combine dynamic routing with static serving on the CDN edge. \n\nI'm intrigued by this concept and I wonder why Netlify and Vercel are not doing similar things. Ishan and Mark go deep and explain everything!\n\nFind Ishan, Mark and Moovweb here:\nhttps://moovweb.com\nhttps://twitter.com/moovweb\n\nFollow me here:\nhttps://timbenniks.dev/\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","2021-01-26T10:00:18Z","053","https://i.ytimg.com/vi/Zd7QkGD8Ix8/maxresdefault.jpg","Zd7QkGD8Ix8",{"type":1132,"children":1765,"toc":1766},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1767},[],"content:3.videos:tim:053-Zd7QkGD8Ix8.md","3.videos/tim/053-Zd7QkGD8Ix8.md",{"_path":461,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":460,"description":1771,"date":1772,"position":1773,"image":1774,"videoId":1775,"body":1776,"_type":1137,"_id":1780,"_source":1139,"_file":1781,"_extension":1141},"I created a pretty personal video about how I experienced 2020. It strangely became the best year of my career. Make sure to stick around to the end for a surprising turn of events for 2021.\n\nFollow me here:\nhttps://timbenniks.dev\nhttps://twitter.com/timbenniks\nhttps://buymeacoff.ee/timbenniks","2021-01-05T10:00:10Z","054","https://i.ytimg.com/vi/bhFfzM6n3Tw/maxresdefault.jpg","bhFfzM6n3Tw",{"type":1132,"children":1777,"toc":1778},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1779},[],"content:3.videos:tim:054-bhFfzM6n3Tw.md","3.videos/tim/054-bhFfzM6n3Tw.md",{"_path":464,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":463,"description":1783,"date":1784,"position":1785,"image":1786,"videoId":1787,"body":1788,"_type":1137,"_id":1792,"_source":1139,"_file":1793,"_extension":1141},"This video is a webinar I did for my colleagues. Since 2019 I have been creating my online persona. I've failed a bunch and I have learnt a lot. In this session I'm sharing my experience, advice and insights into building your brand and growing your audience. I'll teach you how to get yourself or your employer noticed for all the right reasons.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-12-09T10:00:08Z","055","https://i.ytimg.com/vi/S1oD1u-itKA/maxresdefault.jpg","S1oD1u-itKA",{"type":1132,"children":1789,"toc":1790},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1791},[],"content:3.videos:tim:055-S1oD1u-itKA.md","3.videos/tim/055-S1oD1u-itKA.md",{"_path":467,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":466,"description":1795,"date":1796,"position":1797,"image":1798,"videoId":1799,"body":1800,"_type":1137,"_id":1804,"_source":1139,"_file":1805,"_extension":1141},"After daily questions I decided to work on a huge tips & tricks video for people who pre-record talks or do live streams. This video has 39 tips to get you started! If you follow this guide and combine it with a good subject, you will see great results.\n\nImportant links: \nhttps://timbenniks.dev/writings/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/\nhttps://timbenniks.dev/writings/covid-19-work-from-home-how-to-make-your-webcam-look/\n\nTimestamps:\n00:00 intro\n02:10 General tips\n05:08 Tips while recording\n07:35 The camera & framing\n10:00 Lighting\n12:44 Camera settings\n14:37 Audio\n17:37 Editing & recording\n22:03 Concluding\n\nSponsoring: https://buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-12-02T11:51:27Z","056","https://i.ytimg.com/vi/rm_bameopIY/maxresdefault.jpg","rm_bameopIY",{"type":1132,"children":1801,"toc":1802},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1803},[],"content:3.videos:tim:056-rm_bameopIY.md","3.videos/tim/056-rm_bameopIY.md",{"_path":470,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":469,"description":1807,"date":1808,"position":1809,"image":1810,"videoId":1811,"body":1812,"_type":1137,"_id":1816,"_source":1139,"_file":1817,"_extension":1141},"In this video I interview Alex Shyba, co-founder of Uniform. At work (I'm web development director at a big agency), Alex did some consulting for us and we were always impressed by his skills and excellent manners. In this interview we dive into what Uniform does, why he started it and he even shows us how it works.\n\nEnterprise software vendors better watch out. This startup will disrupt. I would pay close attention to their roadmap in the coming months. Expect a Tim Tries video when their software reaches open beta.\n\nAbout Uniform:\nUniform enables jamstack with your current Enterprise Digital Experience Platform and unlocks edge-based personalization with the tools you already have.\n\nFind Alex and Uniform here:\nhttps://twitter.com/alexshyba\nhttps://twitter.com/UniformDev\nhttps://uniform.dev/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-11-25T13:00:06Z","057","https://i.ytimg.com/vi/DB5jjbwg-zM/maxresdefault.jpg","DB5jjbwg-zM",{"type":1132,"children":1813,"toc":1814},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1815},[],"content:3.videos:tim:057-DB5jjbwg-zM.md","3.videos/tim/057-DB5jjbwg-zM.md",{"_path":473,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":472,"description":1819,"date":1820,"position":1821,"image":1822,"videoId":1823,"body":1824,"_type":1137,"_id":1828,"_source":1139,"_file":1829,"_extension":1141},"Everybody wants smaller JavaScript bundles. In this video Lucie Haberer and I explore a way to reduce bundle sizes in Nuxt.\n\n1. We explore data abstraction and moving data mapping to a data layer that is only accessed by the asyncData or Fetch. \n2. We discuss moving bigger functionality to serverless API's\n3. We show how to make smaller \"named\" webpack chunks\n\nThis video is in-depth (25 mins), have a seat, take your time and enjoy. Happy optimizing!\nBeware, this works best for statically rendered Nuxt projects.\n\nhttps://lihbr.com/blog/pushing-nuxt-js-static-generation-one-step-further\n\nFollow Lucie here: \nWebsite: https://lihbr.com/\nTwitter: https://twitter.com/li_hbr\nGithub: https://github.com/lihbr\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#javascript #bundlesizes #nuxt","2020-11-18T13:39:52Z","058","https://i.ytimg.com/vi/IyKkwy8K2d4/maxresdefault.jpg","IyKkwy8K2d4",{"type":1132,"children":1825,"toc":1826},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1827},[],"content:3.videos:tim:058-IyKkwy8K2d4.md","3.videos/tim/058-IyKkwy8K2d4.md",{"_path":476,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":475,"description":1831,"date":1832,"position":1833,"image":1834,"videoId":1835,"body":1836,"_type":1137,"_id":1840,"_source":1139,"_file":1841,"_extension":1141},"I had the privilege to interview Evan You, the creator of Vue.js. I collaborated with Passionate People, the organizers of the excellent Vue.js Global conference and together we came up with a round table discussion format.\n\nIn this discussion I was joined by Marc Backes and Israel Roldán León. We tend to go into the more personal and behind the scenes questions rather than just being technical. This provides a great look into Evan as a person rather than just talking tech.\n\nEvan You: https://twitter.com/youyuxi\nMarc Backes: https://twitter.com/themarcba\nIsrael Roldán León: https://twitter.com/isro_me\nPassionate People: https://twitter.com/passionpeopleNL\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nPoster image taken from Github.\n\n#vue #evanyou #interview","2020-11-10T10:05:08Z","059","https://i.ytimg.com/vi/NR_aohhgl3s/maxresdefault.jpg","NR_aohhgl3s",{"type":1132,"children":1837,"toc":1838},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1839},[],"content:3.videos:tim:059-NR_aohhgl3s.md","3.videos/tim/059-NR_aohhgl3s.md",{"_path":479,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":478,"description":1843,"date":1844,"position":1845,"image":1846,"videoId":1847,"body":1848,"_type":1137,"_id":1852,"_source":1139,"_file":1853,"_extension":1141},"https://timbenniks.dev/writings/easy-dynamic-routes-in-your-nuxt-sitemap/ This is a cool way to add dynamic routes to your sitemap! I think this should be a part of the official Sitemap module.\n\nBy default the Nuxt sitemap module does not support dynamic routes. In this video I show you an easy and effortless way to dynamically add all #NuxtJS routes to your #sitemap xml file. \n\nIf you want you can buy me a coffee: https://www.buymeacoffee.com/timbenniks\n\nProps for this idea go to https://dev.to/andynoir.\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#SEO","2020-11-08T15:30:41Z","060","https://i.ytimg.com/vi/oXJHEw-10aQ/maxresdefault.jpg","oXJHEw-10aQ",{"type":1132,"children":1849,"toc":1850},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1851},[],"content:3.videos:tim:060-oXJHEw-10aQ.md","3.videos/tim/060-oXJHEw-10aQ.md",{"_path":482,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":481,"description":1855,"date":1856,"position":1857,"image":1858,"videoId":1859,"body":1860,"_type":1137,"_id":1864,"_source":1139,"_file":1865,"_extension":1141},"In this video I take about 15 minutes to discuss the new features of Webpack 5. Webpack 5 is a big leap forward with its tree shaking and module federation. Good stuff!\n\nCover Idea by https://twitter.com/arismarko.\nTime stamps:\n\n00:00 Intro\n02:48 How Webpack works\n05:06 What is new in Webpack 5\n05:43 Persistent caching\n06:35 Smaller bundle sizes\n07:13 Better long-term caching\n08:18 Module federation\n10:20 Breaking changes\n12:19 Should you upgrade?\n13:14 Thank you\n\nConsider sponsoring: \nhttps://www.buymeacoffee.com/timbenniks\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-11-02T10:00:16Z","061","https://i.ytimg.com/vi/ZXz9MoJTWh8/maxresdefault.jpg","ZXz9MoJTWh8",{"type":1132,"children":1861,"toc":1862},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1863},[],"content:3.videos:tim:061-ZXz9MoJTWh8.md","3.videos/tim/061-ZXz9MoJTWh8.md",{"_path":485,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":484,"description":1867,"date":1868,"position":1869,"image":1870,"videoId":1871,"body":1872,"_type":1137,"_id":1876,"_source":1139,"_file":1877,"_extension":1141},"Welcome to the first episode of the DevRel roundtable series where I invite developer relation people to a roundtable discussion to converse on whatever topics we feel are relevant.\n\nIn this episode I invited two titans: Tessa Mero and Domitrius Clark from Cloudinary. We go over what a DevRel is and a lot more.\n\nFollow Tessa here:\nhttps://twitter.com/tessamero\nhttps://dev.to/tessamero\n\nFollow Domitrius Clark here:\nhttps://twitter.com/domitriusclark\nhttps://egghead.io/instructors/domitrius-clark\nhttps://www.twitch.tv/domitriusclark\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-10-27T14:49:55Z","062","https://i.ytimg.com/vi/XiZ2p0zLBd8/maxresdefault.jpg","XiZ2p0zLBd8",{"type":1132,"children":1873,"toc":1874},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1875},[],"content:3.videos:tim:062-XiZ2p0zLBd8.md","3.videos/tim/062-XiZ2p0zLBd8.md",{"_path":488,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":487,"description":1879,"date":1880,"position":1881,"image":1882,"videoId":1883,"body":1884,"_type":1137,"_id":1888,"_source":1139,"_file":1889,"_extension":1141},"Yes, I did it again. I rebuilt my website!\n\nMy website, https://timbenniks.dev, serves as my blog and a repository of my videos and speaking schedule. Though rich in content, the site is fast, accessible, and, most important, has a low carbon footprint. Under optimal conditions, the site scores 100 percent in Lighthouse.\n\nI recently rebuilt the site with several tools, the combination of which is ideal for modern web development. I’m excited about the result of the revamp. Let’s see how long that thrill lasts!\n\nI picked Nuxt version 2.14, which offers the excellent \"target: static\" option, outputting a static website on build. You probably guessed it already: my website adopts the Jamstack model. Jamstack websites are light and easy to distribute, with no reliance on dynamic content at all.\n\nEver tried hacking a static site? That’s hard to do. Also, if you need to scale it to meet demand, simply put it in more places on the content delivery network (CDN). After all, it's only a bunch of static files.\n\nHosting\nFor a smooth sail with Jamstack, I needed a hosting provider for the static assets on the CDN edge with simple capabilities for building and deploying my codebase. Netlify hosted my website before, but I wanted to try another provider for an insight into Netlify’s competition. Vercel, the provider I chose, was effortless to use. A nice surprise!\n\nCMS\nI picked Prismic, a great headless CMS whose features outshine those offered by huge enterprise systems. In particular, Prismic has resolved the rich-text issue many CMSs struggle with. I was also impressed by Prismic’s component-based design system, called slices, with which I can create pages in a component-driven way. I highly recommend checking out Prismic.\n\nSearching and filtering\nTo facilitate filtering of video content, I chose Algolia for indexing through its SaaS platform. The initial setup leveraged Algolia’s Vue.js components, which, despite a rather big footprint, do a lot of heavy lifting. Do have a look at Algolia in action on the site’s video page.\n\nOrchestrating the communication between best-of breed products like Algolia and Prismic is no trivial task. The challenge I faced was to ensure that Angolia updates the index when I add new videos to the Prismic. To make that happen, I created a Vercel lambda function, which is called with a webhook whenever I add a video. The function then queries the CMS for the new video data, after which the lambda updates the video index with the Algolia API. Voila, sheer magic!\n\nWebhooks are useful in decoupled architectures. I set up webhooks to also call Vercel when I publish content. On receiving a ping from a Prismic webhook, Vercel rebuilds the site and updates the CDN edge. Similarly, when I push updated code to GitHub, Vercel redeploys the site.\n\nWebhooks are the glue that helps automate the system. Thanks to Vercel’s high speed, I could deploy a hundred times a day without any part of the system breaking a sweat.\n\nImages\nCloudinary, another best-of-breed system I’ve been using for years, was an obvious choice. Even though Prismic offers an excellent feature set for managing images, Cloudinary struck me as being a better fit.\n\nThe process was straightforward. First, I sent the Prismic images to Cloudinary with the Nuxt Cloudinary module through the fetch system. From there, I transformed the images with the Cloudinary API slated for image URLs, e.g., by changing the file-type-based browser context and by resizing, scaling, and cropping the images accordingly.\n\nIt's open source: https://github.com/timbenniks/timbenniks2020-nuxt\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#jamstack #dxp #googleaudit","2020-10-20T13:00:07Z","063","https://i.ytimg.com/vi/V5AobIiruD4/maxresdefault.jpg","V5AobIiruD4",{"type":1132,"children":1885,"toc":1886},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1887},[],"content:3.videos:tim:063-V5AobIiruD4.md","3.videos/tim/063-V5AobIiruD4.md",{"_path":491,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":490,"description":1891,"date":1892,"position":1893,"image":1894,"videoId":1895,"body":1896,"_type":1137,"_id":1900,"_source":1139,"_file":1901,"_extension":1141},"Buy me a coffee here: https://www.buymeacoffee.com/timbenniks\nWant to know more? Go here https://timbenniks.dev/sponsor-me/\n\nHi! I'm Tim and I'm a content creator from Paris. I’ve worked as a web developer and technical director for years and at one point in I decided I wanted to share the insights about my work with our community.\n\nWorking on high stakes projects for global brands is cool and all but you also have to give back a bit. I now focus on creating content about web development topics and soft skills for people of all levels.\n\nI truly enjoy doing community driven work and people seem to like what I have to say. I'm a lucky duck!\n\nI'm committed to delivering a new video every week! These videos don't just appear, they are A LOT of work. I want to always get you the best content and this takes a bunch of time. I also need the right gear to keep delivering high production quality.\n\nIf you decide to sponsor me I will love you forever! 😘 All donations will go right back into the content creation efforts. I'll use the money to buy audio/video/light gear. Or, I will try out paid services for the Tim Tries video series. Or, I will use the money to travel to conferences so that the organizers can spend money on the conference itself rather than on me. So many options!\n\nIf you read this far, you are awesome. 🙏 😘\n\nCheers,\nTim\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-10-12T13:45:05Z","064","https://i.ytimg.com/vi/JTGHl7ggOAs/maxresdefault.jpg","JTGHl7ggOAs",{"type":1132,"children":1897,"toc":1898},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1899},[],"content:3.videos:tim:064-JTGHl7ggOAs.md","3.videos/tim/064-JTGHl7ggOAs.md",{"_path":494,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":493,"description":1903,"date":1904,"position":1905,"image":1906,"videoId":1907,"body":1908,"_type":1137,"_id":1912,"_source":1139,"_file":1913,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the Tim Tries Series. In this video I look at Chakra UI Vue with it's creator Jonathan Bakebwa!\n\nConclusion: solid framework, easy to use, not sure if it's for me...\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\n00:00 Introduction\n00:40 how to pronounce Jonathan Bakebwa\n01:08 Why build Chakra UI?\n02:23 Tim Tries Chakra UI\n09:24 Why not just use HTML?\n10:55 About Accessibility\n12:50 Conclusion\n\nFollow Jonathan here:\nWebsite: https://vue.chakra-ui.com/\nTwitter: https://twitter.com/codebender828\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries #chakraui #jonathanbakebwa","2020-10-08T13:00:03Z","065","https://i.ytimg.com/vi/96xYPBH-Hyo/maxresdefault.jpg","96xYPBH-Hyo",{"type":1132,"children":1909,"toc":1910},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1911},[],"content:3.videos:tim:065-96xYPBH-Hyo.md","3.videos/tim/065-96xYPBH-Hyo.md",{"_path":497,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":496,"description":1915,"date":1916,"position":1917,"image":1918,"videoId":1919,"body":1920,"_type":1137,"_id":1924,"_source":1139,"_file":1925,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the #timtries Series. In this video I look at #tailwindcss. Alexander Lichter is an expert at tailwindcss and he tried to convince me it's awesome. Did he succeed?\n\nConclusion: check the video and see my excitement...\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nWhy tailwind and classes in the dom: https://adamwathan.me/css-utility-classes-and-separation-of-concerns/\n\nFollow Alexander here:\nWebsite: https://blog.lichter.io\nTwitter: https://twitter.com/TheAlexLichter\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-10-01T12:00:01Z","066","https://i.ytimg.com/vi/0VdfeGtjDcg/maxresdefault.jpg","0VdfeGtjDcg",{"type":1132,"children":1921,"toc":1922},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1923},[],"content:3.videos:tim:066-0VdfeGtjDcg.md","3.videos/tim/066-0VdfeGtjDcg.md",{"_path":500,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":499,"description":1927,"date":1928,"position":1929,"image":1930,"videoId":1931,"body":1932,"_type":1137,"_id":1936,"_source":1139,"_file":1937,"_extension":1141},"This is my second #vlog! It’s soft skill time again. I discuss the qualities successful leaders should posses to make a teams a success in a complex situation.\n\nDo take note: a leader is not always the manager. It could very well be that one of the more junior people take the leadership role. Managers you \"have\" to listen to. Leaders you \"want\" to listen to. \n\nBy a complex situation I mean a high pressure project with a big scope and not enough time, and on top the client is immature and is always upset. If you manage to get your team to be happy in these circumstances you will get a high quality result. \n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#leadership","2020-09-22T12:00:13Z","067","https://i.ytimg.com/vi/McyeoiN1S48/maxresdefault.jpg","McyeoiN1S48",{"type":1132,"children":1933,"toc":1934},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1935},[],"content:3.videos:tim:067-McyeoiN1S48.md","3.videos/tim/067-McyeoiN1S48.md",{"_path":503,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":502,"description":1939,"date":1940,"position":1941,"image":1942,"videoId":1943,"body":1944,"_type":1137,"_id":1948,"_source":1139,"_file":1949,"_extension":1141},"In this #vuejsglobal talk I'm introducing #Vite and #Vitepress. It's a basic introduction but I feel like this get's people in a place where they can actually try using these tools.\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-09-17T15:23:24Z","068","https://i.ytimg.com/vi/gojCkw5Ih7E/maxresdefault.jpg","gojCkw5Ih7E",{"type":1132,"children":1945,"toc":1946},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1947},[],"content:3.videos:tim:068-gojCkw5Ih7E.md","3.videos/tim/068-gojCkw5Ih7E.md",{"_path":506,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":505,"description":1951,"date":1952,"position":1953,"image":1954,"videoId":1955,"body":1956,"_type":1137,"_id":1960,"_source":1139,"_file":1961,"_extension":1141},"This is my ImageCon 2020 talk.\n\nHow to make more sustainable choices in the production of web technology. This talk helps developers to make changes to their code so that their website has a lower carbon footprint.\n\nIf the internet was a country, it would be the world’s sixth biggest polluter. The internet consumes a lot of electricity. 466TWh per year to be precise. That’s more than the entire United Kingdom (300TWh)! \n\nCarbon emissions are generated all over the place, from data centers to our personal devices. The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that's 211 kg CO2 per year. These are staggering numbers and they will only go up as the internet is growing at a frightening rate. To make the internet more sustainable, web developers have three areas of attention.\n\n1. Design and content\n2. Front-end development best practices\n3. Server architecture choices","2020-09-15T12:00:11Z","069","https://i.ytimg.com/vi/ewlEgIsh6Dw/maxresdefault.jpg","ewlEgIsh6Dw",{"type":1132,"children":1957,"toc":1958},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1959},[],"content:3.videos:tim:069-ewlEgIsh6Dw.md","3.videos/tim/069-ewlEgIsh6Dw.md",{"_path":509,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":508,"description":1963,"date":1964,"position":1965,"image":1966,"videoId":1967,"body":1968,"_type":1137,"_id":1972,"_source":1139,"_file":1973,"_extension":1141},"I'm on holiday and I now that I have a new camera I decided to do my first vlog! \nIt's story time with grandpa. In this vlog I'm reflecting on my own career as a developer and I give advice on how you can advance yours. There might be some nuggets of inspiration in there for you!\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timsvlog #career #vlog","2020-09-09T11:56:23Z","070","https://i.ytimg.com/vi/AUzzgMyN0z4/maxresdefault.jpg","AUzzgMyN0z4",{"type":1132,"children":1969,"toc":1970},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1971},[],"content:3.videos:tim:070-AUzzgMyN0z4.md","3.videos/tim/070-AUzzgMyN0z4.md",{"_path":512,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":511,"description":1975,"date":1976,"position":1977,"image":1978,"videoId":1979,"body":1980,"_type":1137,"_id":1984,"_source":1139,"_file":1985,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. This is the #timtries Series. In this video I look at Figma, Zeplin and Storybook. I recently learnt how nicely all these tools integrate so developers get a MUCH better DX. Zeplin acts as the hub and the creative source of truth for development, QA, business analysts, UX and creative people.\n\nConclusion: Mind is blown... Zeplin CLI is amazing.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nFollow me here:\nBuy me a coffee: https://www.buymeacoff.ee/timbenniks\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-09-01T12:00:15Z","071","https://i.ytimg.com/vi/ZUHT0g3ZPYw/maxresdefault.jpg","ZUHT0g3ZPYw",{"type":1132,"children":1981,"toc":1982},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1983},[],"content:3.videos:tim:071-ZUHT0g3ZPYw.md","3.videos/tim/071-ZUHT0g3ZPYw.md",{"_path":515,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":514,"description":1987,"date":1988,"position":1989,"image":1990,"videoId":1991,"body":1992,"_type":1137,"_id":1996,"_source":1139,"_file":1997,"_extension":1141},"In this video I'm interviewing Anthony Gore. We discuss talk about Vue 3 for Vue 2 developers. Furthermore we dive into how he started is famous newsletter and how he manages to monetize his efforts for the our Vue community.\n\nAnthony's newsletter has been my go-to for years so I'm super excited about the fact I got to interview him!\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Anthony here:\nhttps://twitter.com/anthonygore\nhttps://twitter.com/vuejsdevelopers\nhttps://vuejsdevelopers.com/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #timbenniks #vuejsglobal","2020-08-26T12:00:57Z","072","https://i.ytimg.com/vi/madbxCbSvqo/maxresdefault.jpg","madbxCbSvqo",{"type":1132,"children":1993,"toc":1994},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1995},[],"content:3.videos:tim:072-madbxCbSvqo.md","3.videos/tim/072-madbxCbSvqo.md",{"_path":518,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":517,"description":1999,"date":2000,"position":2001,"image":2002,"videoId":2003,"body":2004,"_type":1137,"_id":2008,"_source":1139,"_file":2009,"_extension":1141},"In this video I'm interviewing Eduardo San Martin Morote from the Vue core Team. Eduardo works on the Vue Router and in this interview we dive deep into what he did for the refactor of the new Vue 3 router. Next to this we discuss his ideas on monetizing open source work and what solutions fit best. As it turns out, he is building his own! \n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Eduardo here:\nhttps://twitter.com/posva\nhttps://github.com/posva\nhttps://esm.dev/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #vuejsglobal #vue3router","2020-08-19T12:00:10Z","073","https://i.ytimg.com/vi/uuFBfCIpAlY/maxresdefault.jpg","uuFBfCIpAlY",{"type":1132,"children":2005,"toc":2006},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2007},[],"content:3.videos:tim:073-uuFBfCIpAlY.md","3.videos/tim/073-uuFBfCIpAlY.md",{"_path":521,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":520,"description":2011,"date":2012,"position":2013,"image":2014,"videoId":2015,"body":2016,"_type":1137,"_id":2020,"_source":1139,"_file":2021,"_extension":1141},"All around me I see people rage-quit when trying to make their own #Webpack config. If you have never done it before it is pretty hard! I know, I've been there. In this video we will create a Webpack config together. In thirty minutes you will learn the Webpack basics, how to load assets, how to have a nice developer experience and how to split your bundle for optimized performance.\n\nTime stamps:\n00:00 I received a gift!\n00:56 Introduction\n01:53 Webpack basics\n04:55 Chapter 1: Entry and output\n08:14 Chapter 2: Loaders for Styles, Images and Babel\n16:03 Chapter 3: Output management and dynamic HTML rendering\n23:28 Chapter 4: DX for local development\n27:32 Chapter 5: Chunking bundles\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#guide #tutorial","2020-08-17T12:00:11Z","074","https://i.ytimg.com/vi/fyuvqRUzeVY/maxresdefault.jpg","fyuvqRUzeVY",{"type":1132,"children":2017,"toc":2018},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2019},[],"content:3.videos:tim:074-fyuvqRUzeVY.md","3.videos/tim/074-fyuvqRUzeVY.md",{"_path":524,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":523,"description":2023,"date":2024,"position":2025,"image":2026,"videoId":2027,"body":2028,"_type":1137,"_id":2032,"_source":1139,"_file":2033,"_extension":1141},"In this video I'm interviewing Gift Egwuenu. Gift works at Passionate People as a web developer, she is a Media Developer Expert at Cloudinary, she has a YouTube channel and she is a Technical Writer. Wow! We discuss her talk about JAMstack and Gridsome and after that we dive into how she experiences working from Lagos, Nigeria while most of her colleagues are in Europe or the US.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Gift here:\nhttps://twitter.com/lauragift_\nhttps://www.giftegwuenu.com\nhttps://github.com/lauragift21\nhttps://www.youtube.com/channel/UCgUgg53iJX1pdabUxpkgozA\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-08-11T12:00:12Z","075","https://i.ytimg.com/vi/tLbStGzcYYY/maxresdefault.jpg","tLbStGzcYYY",{"type":1132,"children":2029,"toc":2030},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2031},[],"content:3.videos:tim:075-tLbStGzcYYY.md","3.videos/tim/075-tLbStGzcYYY.md",{"_path":527,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":526,"description":2035,"date":2036,"position":2037,"image":2038,"videoId":2039,"body":2040,"_type":1137,"_id":2044,"_source":1139,"_file":2045,"_extension":1141},"In this video I'm interviewing Filip Rakowski, CTO at Vue Storefront. We discuss his talk about Vue Storefront Next and we go in-depth on why they needed a Next version. After that we discuss how to monetize open source work and what it means for Vue Storefront to be a part of the MACH alliance.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Filip here:\nhttps://twitter.com/filrakowski\nhttps://rakowski.dev/\nhttps://www.vuestorefront.io/\n\nFollow me here:\nWebsite: https://timbenniks.dev/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview #vuejsglobal #vuestorefront","2020-08-04T12:00:06Z","076","https://i.ytimg.com/vi/BrmXYtPUlM4/maxresdefault.jpg","BrmXYtPUlM4",{"type":1132,"children":2041,"toc":2042},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2043},[],"content:3.videos:tim:076-BrmXYtPUlM4.md","3.videos/tim/076-BrmXYtPUlM4.md",{"_path":530,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":529,"description":2047,"date":2048,"position":2049,"image":2050,"videoId":2051,"body":2052,"_type":1137,"_id":2056,"_source":1139,"_file":2057,"_extension":1141},"In this video I'm interviewing Debbie O'Brien. Debbie is head of learning and developer advocate at #Nuxtjs. We discuss her talk about Nuxt/content and how they are working on a bunch of new features to make nuxt even more flexible. After that we discuss how she experienced landing the job and how she learnt a lot from previous job hunting.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nIn the intro I mention that the Vue.js Global conferenc eis in August. It has been moved to September 17th.\n\nFollow Debbie here:\nhttps://twitter.com/debs_obrien\nhttps://debbie.codes/\nhttps://www.nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-07-27T12:01:33Z","077","https://i.ytimg.com/vi/IBKgryFpUDs/maxresdefault.jpg","IBKgryFpUDs",{"type":1132,"children":2053,"toc":2054},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2055},[],"content:3.videos:tim:077-IBKgryFpUDs.md","3.videos/tim/077-IBKgryFpUDs.md",{"_path":533,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":532,"description":2059,"date":2060,"position":2061,"image":2062,"videoId":2063,"body":2064,"_type":1137,"_id":2068,"_source":1139,"_file":2069,"_extension":1141},"In this video I'm interviewing Maria Lamardo. Maria is a web developer with a specialty in #accessibility and #Vuejs. We talk a little about her Vue.js Global conference talk which basically covers me asking her annoying questions about forms and accessibility. After covering the conference talk we dive into her unconventional path into tech and how she became so good at her job. I'm very impressed by Maria and our conversation goes quite deep. If you are someone who wants to potentially switch careers, watch this interview.\n\nThis video is made in collaboration with the Vue.js Global conference. \nMore details here: https://vuejs.amsterdam \n\nFollow Maria here:\nhttps://twitter.com/MariaLamardo\nhttps://twitter.com/world_vue\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#interview","2020-07-22T12:00:50Z","078","https://i.ytimg.com/vi/2MFsb5ulhks/maxresdefault.jpg","2MFsb5ulhks",{"type":1132,"children":2065,"toc":2066},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2067},[],"content:3.videos:tim:078-2MFsb5ulhks.md","3.videos/tim/078-2MFsb5ulhks.md",{"_path":536,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":535,"description":2071,"date":2072,"position":2073,"image":2074,"videoId":2075,"body":2076,"_type":1137,"_id":2080,"_source":1139,"_file":2081,"_extension":1141},"After a not-so-great experience with Azure Functions previously I decided to revisit them for version 3.0. Conclusion: AWESOME. I explore how to set-up, create and upload functions all from vscode. Microsoft nailed the developer experience here I and I'll definitely be combining Azure Functions and Azure Static Web Apps in the future.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#azurefunctions #javascript #vscode","2020-07-06T10:04:18Z","079","https://i.ytimg.com/vi/d0jk7hYU1AI/maxresdefault.jpg","d0jk7hYU1AI",{"type":1132,"children":2077,"toc":2078},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2079},[],"content:3.videos:tim:079-d0jk7hYU1AI.md","3.videos/tim/079-d0jk7hYU1AI.md",{"_path":539,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":538,"description":2083,"date":2084,"position":2085,"image":2086,"videoId":2087,"body":2088,"_type":1137,"_id":2092,"_source":1139,"_file":2093,"_extension":1141},"#Gridsome uses Source Plugins to get data from third party CMS' or API's into your #JAMstack website. Recently I felt I needed a custom source plugin and in this video I explain how you can do that as well.\n\nCode is open source: \nhttps://github.com/timbenniks/gridsome-source-example\n\nAlso check out: \nhttps://gridsome.org/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejs","2020-06-30T14:00:16Z","080","https://i.ytimg.com/vi/V50mHzzFFaA/maxresdefault.jpg","V50mHzzFFaA",{"type":1132,"children":2089,"toc":2090},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2091},[],"content:3.videos:tim:080-V50mHzzFFaA.md","3.videos/tim/080-V50mHzzFFaA.md",{"_path":542,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":541,"description":2095,"date":2096,"position":2097,"image":2098,"videoId":2099,"body":2100,"_type":1137,"_id":2104,"_source":1139,"_file":2105,"_extension":1141},"Based on high demand I'm hereby sharing my audio setup for 2020. I create YouTube videos, I make music and I do a ton of public speaking and conference calls. Audio is arguably more important than video so I did my research and put together an awesome setup for a fair price.\n\nIn this video I will go over audio basics, what you need at a minimum and what I chose as my tools for success. If this setup is not budget friendly enough make sure to watch until the end, I give cheaper alternatives that served me very well over the last year.\n\nTimestamps:\n00:00 Introduction\n01:18 My background in audio gear\n03:21 Audio Interface\n06:36 Microphone\n10:36 Audio caparison with and without gear\n11:08 Studio Monitors\n12:39 Headphones\n13:18 Monitor volume control\n15:03 Cheaper alternatives\n16:01 Alternative USB microphone\n17:13 Ultra cheap but awesome lav mic.\n18:10 Concluding\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-06-23T10:14:41Z","081","https://i.ytimg.com/vi/Pu8F59X14-Y/maxresdefault.jpg","Pu8F59X14-Y",{"type":1132,"children":2101,"toc":2102},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2103},[],"content:3.videos:tim:081-Pu8F59X14-Y.md","3.videos/tim/081-Pu8F59X14-Y.md",{"_path":545,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":544,"description":2107,"date":2108,"position":2109,"image":2110,"videoId":2111,"body":2112,"_type":1137,"_id":2116,"_source":1139,"_file":2117,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. In this video I look at #Azure Static Web Apps. Azure clearly noticed the trends in the JAMstack world and likely also figured out that just static file hosting is not enough. They offer way more features than Netlify for example. But is it good enough? Let's see...\n\nConclusion: this thing just works! I'm impressed.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nDocs: https://azure.microsoft.com/en-us/services/app-service/static/\nA great tutorial by Gift Egwuenu (I didn't use it): https://www.giftegwuenu.com/deploy-a-gridsome-app-on-azure-static-web-apps/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries #jamstack","2020-06-15T10:48:34Z","082","https://i.ytimg.com/vi/A54iFAS8rts/maxresdefault.jpg","A54iFAS8rts",{"type":1132,"children":2113,"toc":2114},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2115},[],"content:3.videos:tim:082-A54iFAS8rts.md","3.videos/tim/082-A54iFAS8rts.md",{"_path":548,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":547,"description":2119,"date":2120,"position":2121,"image":2122,"videoId":2123,"body":2124,"_type":1137,"_id":2128,"_source":1139,"_file":2129,"_extension":1141},"In this video you will learn how to use the new Vue 3 composition API to create a simple version of TikTok. We are also using Vite, the new dev build tool build by Evan You!\n\nI thought it would be hard to learn, but it really wasn't. Please, jump in and try this yourself!\n\nThe code is open-source. Find it here: https://github.com/timbenniks/vue3-vite-tiktok-tutorial\n\nLinks: \nhttps://www.vuemastery.com/vue-3-cheat-sheet/\nhttps://github.com/vitejs/vite\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vue3 #compositionapi #vite","2020-06-10T08:17:18Z","083","https://i.ytimg.com/vi/gGaoxqTc7kE/maxresdefault.jpg","gGaoxqTc7kE",{"type":1132,"children":2125,"toc":2126},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2127},[],"content:3.videos:tim:083-gGaoxqTc7kE.md","3.videos/tim/083-gGaoxqTc7kE.md",{"_path":551,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":550,"description":2131,"date":2132,"position":2133,"image":2134,"videoId":2135,"body":2136,"_type":1137,"_id":2140,"_source":1139,"_file":2141,"_extension":1141},"I sometimes just try out new tech or web services for the first time and give my feedback as I go. In this video I look at Slice Machine, a #Vuejs component library connected to the #Prismic headless CMS. This service is a collaboration between the Prismic and #Nuxtjs. \n\nConclusion: Solid base. Needs some fine tuning.\nDisclaimer: this content is not sponsored and my opinions are honest and real time.\n\nhttps://www.slicemachine.dev/\nhttps://vue-essential-slices.netlify.app/\nhttps://prismic.io/\nhttps://nuxtjs.org/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#timtries","2020-06-02T13:23:14Z","084","https://i.ytimg.com/vi/bPJJxxqycDI/maxresdefault.jpg","bPJJxxqycDI",{"type":1132,"children":2137,"toc":2138},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2139},[],"content:3.videos:tim:084-bPJJxxqycDI.md","3.videos/tim/084-bPJJxxqycDI.md",{"_path":554,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":553,"description":2143,"date":2144,"position":2145,"image":2146,"videoId":2147,"body":2148,"_type":1137,"_id":2152,"_source":1139,"_file":2153,"_extension":1141},"I got to interview Scott Tolinski! Wow! Scott is first and foremost a web developer. With years of experience on his belt he decided to start creating tutorials on YouTube. This now grew into one of the best places to go for learning about the web. He also started leveluptutorials.com where you can get premium lessons.\n\nNext to all this he is the co-host of the Syntax podcast. Scott and his buddy Wes Bos go in-depth on code stuff and teach each-other new things.\n\nThe interview is wide ranging and we go over how to create for YouTube and to how to manage social media. We also discuss how Scott learnt to fail and get success after by being a Bboy with the Robotops Crew.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Scott Tolinski here:\nWebsite: https://www.leveluptutorials.com/\nTwitter: https://twitter.com/stolinski\nYouTube: https://www.youtube.com/c/leveluptuts\nPodcast: https://syntax.fm/\n\nFollow Tim Benniks here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-05-26T10:30:20Z","085","https://i.ytimg.com/vi/zPQ_gQMiT5Y/maxresdefault.jpg","zPQ_gQMiT5Y",{"type":1132,"children":2149,"toc":2150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2151},[],"content:3.videos:tim:085-zPQ_gQMiT5Y.md","3.videos/tim/085-zPQ_gQMiT5Y.md",{"_path":557,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":556,"description":2155,"date":2156,"position":2157,"image":2158,"videoId":2159,"body":2160,"_type":1137,"_id":2164,"_source":1139,"_file":2165,"_extension":1141},"In this video I explain how I managed to add lazy loading images in Vue.js while getting image data from the headless CMS Prismic. \n\nIn this case it’s not just a matter of creating a Vue component as I also get images rendered in HTML from the Prismic Rich text field. \n\nThis is a lazy loading solution for images that works both in vanilla JS and Vue. \n\nSee it in action here: http://timbenniks.nl\nFind the code here: https://github.com/timbenniks/timbenniks2020\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejs #prismic #lazyloading","2020-05-22T13:48:42Z","086","https://i.ytimg.com/vi/5jAYPM6gX1o/maxresdefault.jpg","5jAYPM6gX1o",{"type":1132,"children":2161,"toc":2162},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2163},[],"content:3.videos:tim:086-5jAYPM6gX1o.md","3.videos/tim/086-5jAYPM6gX1o.md",{"_path":560,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":559,"description":2167,"date":2168,"position":2169,"image":2170,"videoId":2171,"body":2172,"_type":1137,"_id":2176,"_source":1139,"_file":2177,"_extension":1141},"I had the privilege to interview Jen Looper. Jen is a cloud advocate lead at Microsoft, she is the founder of Front-end Foxes (previously Vue Vixens) and she is a seasoned speaker and developress.\n\nWe had a lovely wide-ranging conversation where we learn about how she came up during the first Internet bubble, managing work and life with kids and starting Front-end Foxes.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Jen here:\nWebsite: https://jenlooper.com\nTwitter: https://twitter.com/jenlooper\nFront-end Foxes: https://www.vuevixens.org\n\nFollow me here:\nWebsite: https://timbenniks.nl\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-05-13T12:44:46Z","087","https://i.ytimg.com/vi/cf5_pit--aI/maxresdefault.jpg","cf5_pit--aI",{"type":1132,"children":2173,"toc":2174},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2175},[],"content:3.videos:tim:087-cf5_pit--aI.md","3.videos/tim/087-cf5_pit--aI.md",{"_path":563,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":562,"description":2179,"date":2180,"position":2181,"image":2182,"videoId":2183,"body":2184,"_type":1137,"_id":2188,"_source":1139,"_file":2189,"_extension":1141},"Ever wanted to know how you can use #Prismic and #Gridsome to make an awesome, super fast, #JAMstack website? This is your chance! In this 30 minute video I give you an overview of both Prismic and Gridsome and we dive into the code to see how it all connects.\n\nI could spend hours on going through the specifics on how to build a proper website. I might do that in a different video series, stay tuned! For now enjoy this more general overview of the tools and it should be enough to get you going!\n\nRead more about this project on the blog: https://timbenniks.nl/writings/a-new-website/\nThe project is open source: https://github.com/timbenniks/timbenniks2020/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-05-07T10:36:44Z","088","https://i.ytimg.com/vi/tqR2EO7Tivc/maxresdefault.jpg","tqR2EO7Tivc",{"type":1132,"children":2185,"toc":2186},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2187},[],"content:3.videos:tim:088-tqR2EO7Tivc.md","3.videos/tim/088-tqR2EO7Tivc.md",{"_path":566,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":565,"description":2191,"date":2192,"position":2193,"image":2194,"videoId":2195,"body":2196,"_type":1137,"_id":2200,"_source":1139,"_file":2201,"_extension":1141},"In this video I'm interviewing Debbie O'brien from Nuxtjs! We have a lovely and LONG conversation, as friends do. We talk about her new job as Head of Learning at Nuxtjs, her ways of working and cultural differences. We flow from tender, insightful moments to jokes. This is a good one.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Debbie here:\nhttps://debbie.codes\nhttps://twitter.com/debs_obrien\nhttps://nuxtjs.org\nhttps://dev.to/debs_obrien\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-04-29T11:04:04Z","089","https://i.ytimg.com/vi/aw4nl6hGjb0/maxresdefault.jpg","aw4nl6hGjb0",{"type":1132,"children":2197,"toc":2198},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2199},[],"content:3.videos:tim:089-aw4nl6hGjb0.md","3.videos/tim/089-aw4nl6hGjb0.md",{"_path":569,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":568,"description":2203,"date":2204,"position":2205,"image":2206,"videoId":2207,"body":2208,"_type":1137,"_id":2212,"_source":1139,"_file":2213,"_extension":1141},"During #COVID19 pandemic I decided to do more with music. In this series called \"Quarantine Licks\" I will show you fun and juicy guitar licks every week.\n\nFor now I kept them acoustic but expect electric guitar also. Rock 'n roll will commence :)\n\nI'm open for collaborations. Comment on this video if you're keen.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\n\n#guitarlicks #quarantinelicks","2020-04-23T10:34:07Z","090","https://i.ytimg.com/vi/gXwRzna4udQ/maxresdefault.jpg","gXwRzna4udQ",{"type":1132,"children":2209,"toc":2210},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2211},[],"content:3.videos:tim:090-gXwRzna4udQ.md","3.videos/tim/090-gXwRzna4udQ.md",{"_path":572,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":571,"description":2215,"date":2216,"position":2217,"image":2218,"videoId":2219,"body":2220,"_type":1137,"_id":2224,"_source":1139,"_file":2225,"_extension":1141},"In this Video I will show you a couple of simple do's and don'ts to make your webcam look more professional. You don't need any technical knowledge at all to do the things I'm about to tell you.\n\nPerception of how professional you look is super important. During the COVID-19 pandemic everybody has to work from home. This generally involves using webcams to do meetings. \n\nMaybe you lost your job during the COVID-19 crisis and you need to do interviews via Skype, Zoom or Teams. Looking professional gets your foot in the door in a meeting with your boss or a job interview.\n\nTime stamps\n1:14 The most important thing for your webcam\n2:47 About settings\n4:27 Fun stuff\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-04-20T08:08:37Z","091","https://i.ytimg.com/vi/xiT7qtMCmIk/maxresdefault.jpg","xiT7qtMCmIk",{"type":1132,"children":2221,"toc":2222},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2223},[],"content:3.videos:tim:091-xiT7qtMCmIk.md","3.videos/tim/091-xiT7qtMCmIk.md",{"_path":575,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":574,"description":2227,"date":2228,"position":2229,"image":2230,"videoId":2231,"body":2232,"_type":1137,"_id":2236,"_source":1139,"_file":2237,"_extension":1141},"What do Serverless and JAMstack have to do with weight loss? Well, in my case, a lot!\n\nTo be able to loose weight I need a good incentive. And for me that incentive is public accountability. I have created a #Vue.js PWA app called \"Fatty\" that is built on a serverless architecture and the JAMstack. The app shows how much weight I have lost and it tweets an update into the world every time I step on my WiFi enabled scale. In this video I explain how it all connects!\n\nNext to talking about the tech that powers the Fatty app I also tell about my fitness story. If I can loose all that weight than you can as well.\n\nRead about Fatty here: https://timbenniks.nl/writings/fatty-is-alive/\nSee Fatty in action: https://fatty.timbenniks.com\nMore on my fitness story: https://timbenniks.nl/writings/my-fitness-story/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#jamstack #serverless","2020-04-15T10:14:21Z","092","https://i.ytimg.com/vi/beBR8ev2nO8/maxresdefault.jpg","beBR8ev2nO8",{"type":1132,"children":2233,"toc":2234},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2235},[],"content:3.videos:tim:092-beBR8ev2nO8.md","3.videos/tim/092-beBR8ev2nO8.md",{"_path":578,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":577,"description":2239,"date":2240,"position":2241,"image":2242,"videoId":2243,"body":2244,"_type":1137,"_id":2248,"_source":1139,"_file":2249,"_extension":1141},"Now that I have entered my fifth week of staying home during the #COVID19 pandemic I decided to do more with music. In this series called \"Quarantine Licks\" I will show you fun guitar licks every week. \n\nI might do some collaborations with other musicians too!\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#guitarlicks","2020-04-14T10:50:39Z","093","https://i.ytimg.com/vi/WLQLCLWJorc/maxresdefault.jpg","WLQLCLWJorc",{"type":1132,"children":2245,"toc":2246},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2247},[],"content:3.videos:tim:093-WLQLCLWJorc.md","3.videos/tim/093-WLQLCLWJorc.md",{"_path":581,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":580,"description":2251,"date":2252,"position":2253,"image":2254,"videoId":2255,"body":2256,"_type":1137,"_id":2260,"_source":1139,"_file":2261,"_extension":1141},"In this video I'm the interviewee for a change! We speak about the #vuejsamsterdam conference I just spoke at, about how I interact with the Vue.js community, how I personally interact with clients and teams, about the future of automation in the tech space and how I see innovation in enterprise software. Lot's of good stuff!\n\n1:20 About the conference.\n1:50 About the talk: Team First.\n4:00 FATTY. Public Accountability.\n10:19 Innovation on enterprise level.\n17:30 About failing and behavior.\n21:10 What do you drink while coding?\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam","2020-04-08T12:19:43Z","094","https://i.ytimg.com/vi/ZZRQOzpC068/maxresdefault.jpg","ZZRQOzpC068",{"type":1132,"children":2257,"toc":2258},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2259},[],"content:3.videos:tim:094-ZZRQOzpC068.md","3.videos/tim/094-ZZRQOzpC068.md",{"_path":584,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":583,"description":2263,"date":2264,"position":2265,"image":2266,"videoId":2267,"body":2268,"_type":1137,"_id":2272,"_source":1139,"_file":2273,"_extension":1141},"Every project I deal with outdated beliefs about performance and people not really knowing about the power of HTTP/2. This video is a crash course into some of the most valuable features HTTP/2 has to offer: header compression and multiplexing. I do a real time demo in which you can see that multiplexing works but actually has caveats! \n\nIf you want to know about bundle sizes and how many connections can be \"in flight\" at the same time, this video is for you!\n\n#HTTP2 #performance #webpack\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-04-02T11:07:53Z","095","https://i.ytimg.com/vi/f5F7N2kc7hQ/maxresdefault.jpg","f5F7N2kc7hQ",{"type":1132,"children":2269,"toc":2270},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2271},[],"content:3.videos:tim:095-f5F7N2kc7hQ.md","3.videos/tim/095-f5F7N2kc7hQ.md",{"_path":587,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":586,"description":2275,"date":2276,"position":2277,"image":2278,"videoId":2279,"body":2280,"_type":1137,"_id":2284,"_source":1139,"_file":2285,"_extension":1141},"In this video I'm interviewing Una Verhoeven. Una and I work together at Valtech. When she joined the global team as a Sitecore Architect we teamed up to help out on a challenging project. We became fast friends and when I learnt about her story I decided an interview had to take place. Some people just impress. Una is one of those.\n\nWe talk about switching cultures from Serbia to the Netherlands, starting your own company and fashion.\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFollow Una here:\nTwitter: https://twitter.com/unaverhoeven\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#sitecore #interview #valtech","2020-03-25T12:20:43Z","096","https://i.ytimg.com/vi/nw0y6dkx1KU/maxresdefault.jpg","nw0y6dkx1KU",{"type":1132,"children":2281,"toc":2282},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2283},[],"content:3.videos:tim:096-nw0y6dkx1KU.md","3.videos/tim/096-nw0y6dkx1KU.md",{"_path":590,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":589,"description":2287,"date":2288,"position":2289,"image":2290,"videoId":2291,"body":2292,"_type":1137,"_id":2296,"_source":1139,"_file":2297,"_extension":1141},"Filip is the co-founder and tech lead of Vue Storefront. Vue Storefront is a revolutionary Headless PWA for e-commerce that works with any back-end. In this interview we discuss why he thinks Vue Storefront needs to exist and what he thinks about the future of e-commerce. \n\nFilip is also a very active speaker and OSS contributor. He shares his tips and tricks to write better CFP's and more!\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFind Filip here:\nhttps://twitter.com/filrakowski\nhttps://twitter.com/VueStorefront\nhttps://www.vuestorefront.io/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam\n\n#interview #vuestorefront #vuejs","2020-03-20T15:33:05Z","097","https://i.ytimg.com/vi/vqjP5qFiOLg/maxresdefault.jpg","vqjP5qFiOLg",{"type":1132,"children":2293,"toc":2294},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2295},[],"content:3.videos:tim:097-vqjP5qFiOLg.md","3.videos/tim/097-vqjP5qFiOLg.md",{"_path":593,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":592,"description":2299,"date":2300,"position":2301,"image":2302,"videoId":2303,"body":2304,"_type":1137,"_id":2308,"_source":1139,"_file":2309,"_extension":1141},"Producing high quality work is dependent on a well-organized team, especially in a high-pressure environment like an ad agency or a production studio. At a certain scale almost every team struggles with cultural differences, perceived pressure from management or misaligned definitions of success.\n\nThese examples are only a handful of the problems teams face, which results in developers that are unhappy and stressed out. Processes outside of their control keep them from doing the thing they love: write great code.\n\nOver the years I have learned that you are more successful if you understand what motivates people. We know happy teams produce better work. Motivated and responsible people are the core of our success. Therefore, I have created a framework (yes, I'm a developer) to deal with projects in complex environments that I call \"Team First\".\n\nThis video is about how the \"Team First\" framework came to be and how it works. It contains best practices and rules to follow in order to make yourself and your team successful. I share anecdotes from years of experience that most developers can identify with.\n\nBefore writing a single line of code you have to deal with all challenges that prohibit you from producing a quality product. The \"Team First\" framework helps leaders, teams and developers get there.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#teamfirst #career #management #motivation","2020-03-12T15:31:27Z","098","https://i.ytimg.com/vi/LTM7wz0Q564/maxresdefault.jpg","LTM7wz0Q564",{"type":1132,"children":2305,"toc":2306},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2307},[],"content:3.videos:tim:098-LTM7wz0Q564.md","3.videos/tim/098-LTM7wz0Q564.md",{"_path":596,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":595,"description":2311,"date":2312,"position":2313,"image":2314,"videoId":2315,"body":2316,"_type":1137,"_id":2320,"_source":1139,"_file":2321,"_extension":1141},"Natalia is a Ukrainian software engineer. She works at Gitlab and she is part of the Vue.js core team. Those are the two positions a lot of people desire. We dive deep into how she experienced the amazing gitlab hiring process and how she managed to get through it.\n\nNatalia is humble and kind and she explains how she sees life and what gives some great insights on how to succeed. \n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\nFind Natalia here:\nhttps://www.nataliatepluhina.com/\nhttps://twitter.com/N_Tepluhina\nhttps://gitlab.com/ntepluhina\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\nContent created in collaboration with front-end developer love:\nhttps://vuejs.amsterdam\nhttps://twitter.com/vuejsamsterdam\n\n#interview #gitlab #vuejs","2020-03-06T12:53:55Z","099","https://i.ytimg.com/vi/U5S4DqQlt1o/maxresdefault.jpg","U5S4DqQlt1o",{"type":1132,"children":2317,"toc":2318},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2319},[],"content:3.videos:tim:099-U5S4DqQlt1o.md","3.videos/tim/099-U5S4DqQlt1o.md",{"_path":599,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":598,"description":2323,"date":2324,"position":2325,"image":2326,"videoId":2327,"body":2328,"_type":1137,"_id":2332,"_source":1139,"_file":2333,"_extension":1141},"In this video I recap my experience with the Vue.js Amsterdam conference and I make an exciting announcement for future collaborations on this channel. Watch until the end to find out!\n\nA recap of the talks: https://medium.com/jeff-tech/my-top-5-talks-from-vue-js-amsterdam-2020-d56b1b62f1a1\n\nMy slides: https://slides.com/timbenniks/team-first-3\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#vuejsamsterdam #conference #announcements","2020-02-26T12:47:15Z","100","https://i.ytimg.com/vi/bOBY5h-r1hc/maxresdefault.jpg","bOBY5h-r1hc",{"type":1132,"children":2329,"toc":2330},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2331},[],"content:3.videos:tim:100-bOBY5h-r1hc.md","3.videos/tim/100-bOBY5h-r1hc.md",{"_path":602,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":601,"description":2335,"date":2336,"position":2337,"image":2338,"videoId":2339,"body":2340,"_type":1137,"_id":2344,"_source":1139,"_file":2345,"_extension":1141},"In this video I’m interviewing Anastasiya Flynn from Sitecore. Anastasiya is a full-stack developer and currently works at Sitecore, a marketing platform with advanced content personalization features, as the Front-End Technical Evangelist. She evangelizes JavaScript, the front-end community, and Sitecore’s JavaScript Services (JSS) SDK, which enables Sitecore to run “headlessly” so that front-end devs can build a single page app presentation layer using Vue, React, React Native, or Angular.\n\nAnastasiya and I discuss how she landed her job at Sitecore, and we dig deeper into some personal history. She shares her inspirational story on how she got to be where she is now in life. Pay attention, this will inspire you :)\n\nIn this video series I interview people that are amazing at their jobs in the tech industry. I try to find out what makes these people shine - how to they deliver such high quality work? What tools and best practices do they recommend?\n\n0:00 introduction \n1:25 About public speaking\r\n2:45 Moving from an agency to a product company\r\n5:22 The direction Sitecore JSS is taking with front-end technology\r\n6:41 What makes Anastasiya a good product avengalist\r\n8:10 How to be successful with JSS without Sitecore specific knowledge.\r\n11:30 About building community and how challenges in life can make you successful. \r\n16:54 Tech gives opportunities to everyone who is able to buy a computer.\r\n19:03 About creativity\r\n21:00 cats! Everybody should own a pet.\r\n21:41 Is there anything you are good at that nobody knows about?\r\n22:20 About being a woman in tech\r\n26:20 If you had a billboard that millions of people could see, what would you write on it?\n\nFollow Anastasiya here:\nhttps://twitter.com/AnastasiyaFlynn\nhttps://codealamode.blog/\nhttps://jss.sitecore.com \n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks\n\n#sitecorejss #interview","2020-02-21T08:29:31Z","101","https://i.ytimg.com/vi/pwqVQnnoPIY/maxresdefault.jpg","pwqVQnnoPIY",{"type":1132,"children":2341,"toc":2342},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2343},[],"content:3.videos:tim:101-pwqVQnnoPIY.md","3.videos/tim/101-pwqVQnnoPIY.md",{"_path":605,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":604,"description":2347,"date":2348,"position":2349,"image":2350,"videoId":2351,"body":2352,"_type":1137,"_id":2356,"_source":1139,"_file":2357,"_extension":1141},"In this video I'm interviewing Eduardo San Martin Morote from the Vue.js core team. What a privilege to speak to someone who actually built the tools I use on a daily basis! Eduardo humbly explains how he sees life and how he acts as a contributor to open source projects.\n\nWhat a guy. I'm in awe how Eduardo carries himself and what this youngster has already accomplished.\n\nIn this video series I interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nFollow Eduardo here:\nhttps://twitter.com/posva\nhttps://github.com/sponsors/posva\nhttps://esm.dev/\nhttps://twitter.com/posva/status/1146415898967908352\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-02-13T09:42:00Z","102","https://i.ytimg.com/vi/LKioMRuiAaE/maxresdefault.jpg","LKioMRuiAaE",{"type":1132,"children":2353,"toc":2354},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2355},[],"content:3.videos:tim:102-LKioMRuiAaE.md","3.videos/tim/102-LKioMRuiAaE.md",{"_path":608,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":607,"description":2359,"date":2360,"position":2361,"image":2362,"videoId":2363,"body":2364,"_type":1137,"_id":2368,"_source":1139,"_file":2369,"_extension":1141},"Ever wanted to know how Webpack works? This video explains its core concepts. I decided to do this because many people think Webpack is like a unicorn that uses rainbows and magic to do its job. But actually, Webpack is not that hard to understand once you have an overview of its feature set.\n\nAfter watching this video you will be ready to roll your own custom configuration! This insight should help you make decisions on how to bundle and optimize your application for production. \n\nPrevious video: https://youtu.be/WExoF1TFI04\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-02-06T10:33:36Z","103","https://i.ytimg.com/vi/AZqRjdqa_D8/maxresdefault.jpg","AZqRjdqa_D8",{"type":1132,"children":2365,"toc":2366},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2367},[],"content:3.videos:tim:103-AZqRjdqa_D8.md","3.videos/tim/103-AZqRjdqa_D8.md",{"_path":611,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":610,"description":2371,"date":2372,"position":2373,"image":2374,"videoId":2375,"body":2376,"_type":1137,"_id":2380,"_source":1139,"_file":2381,"_extension":1141},"In this video I give you 5 tips you can apply to your daily work to a become a better developer. The tips are relatively easy to understand but take some effort to master. However, they can truly change your career! They sure changed mine for the better.\n\nFunny thing is: these tips have little to do with programming itself. Next to producing code, advancing your career is mostly done by having the right attitude, soft skills and taking responsibility for your work.\n\nI do a conference talk about this subject called Team First. Read more about that here: https://timbenniks.nl/writings/team-first/\n\n00:00 Introduction\n01:10 Helicopter view.\n05:15 Motivation.\n09:15 take decisions on intuition. Ask for forgiveness later.\n10:28 Champion subjects you like.\n12:17 Be pragmatic.\n\nPrevious video: https://youtu.be/H7qmArrblw8\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-29T09:55:10Z","104","https://i.ytimg.com/vi/WExoF1TFI04/maxresdefault.jpg","WExoF1TFI04",{"type":1132,"children":2377,"toc":2378},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2379},[],"content:3.videos:tim:104-WExoF1TFI04.md","3.videos/tim/104-WExoF1TFI04.md",{"_path":614,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":613,"description":2383,"date":2384,"position":2385,"image":2386,"videoId":2387,"body":2388,"_type":1137,"_id":2392,"_source":1139,"_file":2393,"_extension":1141},"In this video series I interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nBeware, this is my first interview. Please leave your feedback in the comments :)\n\nIn this installment I'm speaking to Maya Shavin. Maya is a senior web developer in the R&D team at Cloudinary. Next to being a great developer she is also a speaker, a writer and she organizes events. We dive deep (yep, 47 minutes) into how she has such an amazing output and how she deals with the challenges of culture clash, family life and being a woman in a male dominated arena.\n\nMaya truly has the force! Watch until the end where she explains her mantra to success.\n\nFollow Maya here:\nhttps://www.mayashavin.com/\nhttps://twitter.com/MayaShavin\nhttps://www.cloudinary.com\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-24T10:03:49Z","105","https://i.ytimg.com/vi/H7qmArrblw8/maxresdefault.jpg","H7qmArrblw8",{"type":1132,"children":2389,"toc":2390},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2391},[],"content:3.videos:tim:105-H7qmArrblw8.md","3.videos/tim/105-H7qmArrblw8.md",{"_path":617,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":616,"description":2395,"date":2396,"position":2397,"image":2398,"videoId":2399,"body":2400,"_type":1137,"_id":2404,"_source":1139,"_file":2405,"_extension":1141},"Learn how to use Visual Studio Code and Hyper.js with ZSH to streamline your JavaScript developer environment for coding fast and with less errors. The setup is simple and considered and it works both both MAC and PC (With WSL Ubuntu).\n\nHow to install Ubuntu WSL: https://docs.microsoft.com/en-us/windows/wsl/install-win10\n\n0:00 Introduction\n1:00 The tools I use\n1:43 IDE\n2:47 IDE Extensions\n7:17 IDE Theme\n8:58 Terminal\n13:27 Conclusion\n\nTools used in this video:\nVisual Studio Code: https://code.visualstudio.com/\nHyper.js: https://hyper.is/\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-13T11:59:22Z","106","https://i.ytimg.com/vi/LIek4kwnSbQ/maxresdefault.jpg","LIek4kwnSbQ",{"type":1132,"children":2401,"toc":2402},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2403},[],"content:3.videos:tim:106-LIek4kwnSbQ.md","3.videos/tim/106-LIek4kwnSbQ.md",{"_path":620,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":619,"description":2407,"date":2408,"position":2409,"image":2410,"videoId":2411,"body":2412,"_type":1137,"_id":2416,"_source":1139,"_file":2417,"_extension":1141},"Hi I'm Tim and welcome to my channel. This channel has content about web development. I do guides and in-depth pieces about development topics but I also interview prominent members of our community. \n\nI interview people that are amazing at their job in the tech industry. I try to find the tools and best practices they use to shine on conference stages, contribute to open source projects or when they deliver high quality work.\n\nIf you like this sort of stuff, subscribe! I'll see you in the comments.\n\nA little bit about me:\nTim is a web developer from Amsterdam who moved to Paris to explore the magical world of luxury clients and baguettes. He likes to build fancy websites, make music and cook food.\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-03T15:33:38Z","107","https://i.ytimg.com/vi/SHtBMWkZWPI/maxresdefault.jpg","SHtBMWkZWPI",{"type":1132,"children":2413,"toc":2414},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2415},[],"content:3.videos:tim:107-SHtBMWkZWPI.md","3.videos/tim/107-SHtBMWkZWPI.md",{"_path":623,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":622,"description":2419,"date":2420,"position":2421,"image":2422,"videoId":2423,"body":2424,"_type":1137,"_id":2428,"_source":1139,"_file":2429,"_extension":1141},"In this video I go over all the things you need to know to make your webcam look better. Why webcams kind of suck, how to set-up lighting and what post-processing to add.\n\nMore details can be found here: https://timbenniks.nl/writings/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/\n\n0:20 Why webcams kind of suck\n3:03 About lighting\n5:50 Post processing\n9:40 Bonus!\n\nFollow me here:\nWebsite: https://timbenniks.nl/\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2020-01-01T00:57:56Z","108","https://i.ytimg.com/vi/vcf1xFOeGwM/maxresdefault.jpg","vcf1xFOeGwM",{"type":1132,"children":2425,"toc":2426},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":2427},[],"content:3.videos:tim:108-vcf1xFOeGwM.md","3.videos/tim/108-vcf1xFOeGwM.md",1718484821228] \ No newline at end of file diff --git a/videos/tim/index.html b/videos/tim/index.html index bd9f74eb..385ee26e 100644 --- a/videos/tim/index.html +++ b/videos/tim/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -

Personal videos

- \ No newline at end of file + + +

Personal videos

+ \ No newline at end of file diff --git a/videos/uniform/_payload.json b/videos/uniform/_payload.json index 378c2cd7..c2a5ff62 100644 --- a/videos/uniform/_payload.json +++ b/videos/uniform/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1806},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-rEYRYuRDt6":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"press kit","/presskit",{"title":1119,"_path":1120},"alive and kicking","/alive-and-kicking",[1122,1142,1154,1165,1177,1189,1201,1213,1225,1237,1249,1261,1273,1285,1297,1308,1320,1332,1344,1355,1367,1379,1391,1402,1414,1426,1438,1450,1462,1474,1486,1498,1510,1521,1532,1543,1554,1566,1578,1590,1602,1614,1626,1638,1650,1662,1674,1686,1698,1710,1722,1734,1746,1758,1770,1782,1794],{"_path":630,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":629,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"uniform",false,"","This is Uniform DXCP: composability with Headless 2.0","2023-07-20T07:53:52Z","000","https://i.ytimg.com/vi/sF8TCV5t9PA/maxresdefault.jpg","sF8TCV5t9PA",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:uniform:000-sF8TCV5t9PA.md","content","3.videos/uniform/000-sF8TCV5t9PA.md","md",{"_path":633,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":632,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"Learn more at https://uniform.dev","2023-07-20T07:53:58Z","001","https://i.ytimg.com/vi/VkJWIqlM6_w/maxresdefault.jpg","VkJWIqlM6_w",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:uniform:001-VkJWIqlM6_w.md","3.videos/uniform/001-VkJWIqlM6_w.md",{"_path":636,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":635,"description":1143,"date":1155,"position":1156,"image":1157,"videoId":1158,"body":1159,"_type":1137,"_id":1163,"_source":1139,"_file":1164,"_extension":1141},"2023-07-20T07:54:06Z","002","https://i.ytimg.com/vi/nDrAbg4x6yA/maxresdefault.jpg","nDrAbg4x6yA",{"type":1132,"children":1160,"toc":1161},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1162},[],"content:3.videos:uniform:002-nDrAbg4x6yA.md","3.videos/uniform/002-nDrAbg4x6yA.md",{"_path":639,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":638,"description":1166,"date":1167,"position":1168,"image":1169,"videoId":1170,"body":1171,"_type":1137,"_id":1175,"_source":1139,"_file":1176,"_extension":1141},"Join us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif... \nInstagram: https://www.instagram.com/uniform.dev/","2023-07-20T07:54:15Z","003","undefined","hcjLHnrjzpo",{"type":1132,"children":1172,"toc":1173},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1174},[],"content:3.videos:uniform:003-hcjLHnrjzpo.md","3.videos/uniform/003-hcjLHnrjzpo.md",{"_path":642,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":641,"description":1178,"date":1179,"position":1180,"image":1181,"videoId":1182,"body":1183,"_type":1137,"_id":1187,"_source":1139,"_file":1188,"_extension":1141},"Uniform introduces new features to make content management faster and more efficient for teams. The Component Starter Kit offers open-source, customizable components for building key pages, while improved data connections via Mesh allow for easier setup and fast edge-cached content delivery. \n\nUniform Canvas now supports dynamic component patterns and one-click integration with any data source, giving marketers more flexibility in content creation. \n\nEdgehancers automatically pull selected content to the CDN edge, ensuring pages render in under 50 ms for improved performance and SEO benefits.\n\nLearn more at https://uniform.dev","2023-07-20T07:54:21Z","004","https://i.ytimg.com/vi/qh_ekk7CfZw/maxresdefault.jpg","qh_ekk7CfZw",{"type":1132,"children":1184,"toc":1185},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1186},[],"content:3.videos:uniform:004-qh_ekk7CfZw.md","3.videos/uniform/004-qh_ekk7CfZw.md",{"_path":645,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":644,"description":1190,"date":1191,"position":1192,"image":1193,"videoId":1194,"body":1195,"_type":1137,"_id":1199,"_source":1139,"_file":1200,"_extension":1141},"When connecting external data to Uniform, once in a while you will encounter a list of items. Think about: the latest products, and best blog posts. If you want to show those on the page you'll have a list of items you have to loop over to be able to render them. \n\nLearn more at: https://uniform.dev","2023-07-20T07:54:27Z","005","https://i.ytimg.com/vi/ffWvyuyzEwU/maxresdefault.jpg","ffWvyuyzEwU",{"type":1132,"children":1196,"toc":1197},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1198},[],"content:3.videos:uniform:005-ffWvyuyzEwU.md","3.videos/uniform/005-ffWvyuyzEwU.md",{"_path":648,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":647,"description":1202,"date":1203,"position":1204,"image":1205,"videoId":1206,"body":1207,"_type":1137,"_id":1211,"_source":1139,"_file":1212,"_extension":1141},"Connecting external sources to Uniform design system components requires you to use data types. Uniform offers pre-built integration types (like Contentful, etc) or URL-based data types that offer REST APIs. From legacy to a custom microservice. Any source can be a data type and can be connected to design system component properties.\n\nLearn more at https://uniform.dev","2023-07-20T07:54:33Z","006","https://i.ytimg.com/vi/zbi8h6-fp5c/maxresdefault.jpg","zbi8h6-fp5c",{"type":1132,"children":1208,"toc":1209},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1210},[],"content:3.videos:uniform:006-zbi8h6-fp5c.md","3.videos/uniform/006-zbi8h6-fp5c.md",{"_path":651,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":650,"description":1214,"date":1215,"position":1216,"image":1217,"videoId":1218,"body":1219,"_type":1137,"_id":1223,"_source":1139,"_file":1224,"_extension":1141},"Components in uniform are highly flexible. Their properties are easy to change, some are stylistic and some are data-driven. To make it easy for content editors, Uniform has released component patterns. Patterns allow architects to create new entities of components that connect to specific data sources or with pre-defined stylistic attributes. They can add overrides to particular fields, so content editors have content management flexibility but do not need to handle complex data binding themselves.\n\nLearn more at https://uniform.dev","2023-07-20T07:54:41Z","007","https://i.ytimg.com/vi/MczGzArgIm8/maxresdefault.jpg","MczGzArgIm8",{"type":1132,"children":1220,"toc":1221},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1222},[],"content:3.videos:uniform:007-MczGzArgIm8.md","3.videos/uniform/007-MczGzArgIm8.md",{"_path":654,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":653,"description":1226,"date":1227,"position":1228,"image":1229,"videoId":1230,"body":1231,"_type":1137,"_id":1235,"_source":1139,"_file":1236,"_extension":1141},"This is Tim's conference talk for CityJS London. How to sniff out the glue-code monster. Learn about the various forms of glue code and how to avoid the technical-debt nightmare they cause.","2023-07-20T07:55:02Z","008","https://i.ytimg.com/vi/RARBrmxKh5I/maxresdefault.jpg","RARBrmxKh5I",{"type":1132,"children":1232,"toc":1233},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1234},[],"content:3.videos:uniform:008-RARBrmxKh5I.md","3.videos/uniform/008-RARBrmxKh5I.md",{"_path":657,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":656,"description":1238,"date":1239,"position":1240,"image":1241,"videoId":1242,"body":1243,"_type":1137,"_id":1247,"_source":1139,"_file":1248,"_extension":1141},"In this video @timbenniks shows how to get started with Visual Canvas, a feature that allows developers to implement agnostic, contextual, visual editing for content editors without having to annotate the source code with identifiers that tightly couple your components to an SDK.\n\nWant to know more? Visit https://uniform.dev or join us on Discord at: https://uniform.to/discord","2023-07-20T07:57:22Z","009","https://i.ytimg.com/vi/3UyYXnCpPd8/maxresdefault.jpg","3UyYXnCpPd8",{"type":1132,"children":1244,"toc":1245},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1246},[],"content:3.videos:uniform:009-3UyYXnCpPd8.md","3.videos/uniform/009-3UyYXnCpPd8.md",{"_path":660,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":659,"description":1250,"date":1251,"position":1252,"image":1253,"videoId":1254,"body":1255,"_type":1137,"_id":1259,"_source":1139,"_file":1260,"_extension":1141},"In this video @timbenniks shows you how to get started with Project Map and what type of SDK functions you can use to render a navigation or a sitemap for your website.\n\nWant to know more? Visit https://uniform.dev or join us on Discord at: https://uniform.to/discord","2023-07-20T07:57:29Z","010","https://i.ytimg.com/vi/KrCtdwmF9fg/maxresdefault.jpg","KrCtdwmF9fg",{"type":1132,"children":1256,"toc":1257},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1258},[],"content:3.videos:uniform:010-KrCtdwmF9fg.md","3.videos/uniform/010-KrCtdwmF9fg.md",{"_path":663,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":662,"description":1262,"date":1263,"position":1264,"image":1265,"videoId":1266,"body":1267,"_type":1137,"_id":1271,"_source":1139,"_file":1272,"_extension":1141},"This video explains why Uniform DXCP exists, and after that, it explains how to actually get started.\n\nJoin us on discord to ask your questions https://uniform.to/discord\n\n00:00 The why\n12:27 The how","2023-07-20T07:57:47Z","011","https://i.ytimg.com/vi/j0zQlcmTseQ/maxresdefault.jpg","j0zQlcmTseQ",{"type":1132,"children":1268,"toc":1269},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1270},[],"content:3.videos:uniform:011-j0zQlcmTseQ.md","3.videos/uniform/011-j0zQlcmTseQ.md",{"_path":666,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":665,"description":1274,"date":1275,"position":1276,"image":1277,"videoId":1278,"body":1279,"_type":1137,"_id":1283,"_source":1139,"_file":1284,"_extension":1141},"We’re delighted to release a major update to the Uniform + Algolia integration, which uses the power of Algolia search to accelerate and automate the creation of digital experiences - helping brands to create great apps and websites for marketing and commerce that drive conversions. \n\nTwo key features: Automated content or product suggestions based on search parameters in Algolia, easy to set up via the Uniform Visual editor.\nAnd create customized faceted search pages with instant search components from Algolia, and control how they are displayed in Uniform Canvas.\n\nWant to get started yourself? Check out this video: https://youtu.be/lfkshoNh3oc","2023-07-20T07:57:52Z","012","https://i.ytimg.com/vi/aOaQO3tlZpw/maxresdefault.jpg","aOaQO3tlZpw",{"type":1132,"children":1280,"toc":1281},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1282},[],"content:3.videos:uniform:012-aOaQO3tlZpw.md","3.videos/uniform/012-aOaQO3tlZpw.md",{"_path":669,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":668,"description":1286,"date":1287,"position":1288,"image":1289,"videoId":1290,"body":1291,"_type":1137,"_id":1295,"_source":1139,"_file":1296,"_extension":1141},"This video shows the steps to integrate Algolia with Uniform!","2023-07-20T07:57:59Z","013","https://i.ytimg.com/vi/lfkshoNh3oc/maxresdefault.jpg","lfkshoNh3oc",{"type":1132,"children":1292,"toc":1293},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1294},[],"content:3.videos:uniform:013-lfkshoNh3oc.md","3.videos/uniform/013-lfkshoNh3oc.md",{"_path":672,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":671,"description":1298,"date":1299,"position":1300,"image":1169,"videoId":1301,"body":1302,"_type":1137,"_id":1306,"_source":1139,"_file":1307,"_extension":1141},"See the possibilities for content creation and orchestration to empower marketers using the new version of Canvas. \nhttps://uniform.dev/dxc-assembly\n\nSession moderated by Richard Bausek, Principal Product Manager, Uniform and Tim Benniks, Principal Developer Advocate, Uniform.\nhttps://twitter.com/richardbausek\nhttps://www.linkedin.com/in/richard-bausek/\nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2023-07-20T07:58:10Z","014","T3AVoBqVWPs",{"type":1132,"children":1303,"toc":1304},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1305},[],"content:3.videos:uniform:014-T3AVoBqVWPs.md","3.videos/uniform/014-T3AVoBqVWPs.md",{"_path":675,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":674,"description":1309,"date":1310,"position":1311,"image":1312,"videoId":1313,"body":1314,"_type":1137,"_id":1318,"_source":1139,"_file":1319,"_extension":1141},"Uniform's visual canvas editor offers content editors a flexible way to interact with an Algolia search index while it allows developers to connect to Algolia in any way they want. \n\nCheck out this video to see how magical the combination is.\n\nJoin us on Discord: https://uniform.to/discord","2023-07-20T07:58:31Z","015","https://i.ytimg.com/vi/z_41xOh9W1w/maxresdefault.jpg","z_41xOh9W1w",{"type":1132,"children":1315,"toc":1316},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1317},[],"content:3.videos:uniform:015-z_41xOh9W1w.md","3.videos/uniform/015-z_41xOh9W1w.md",{"_path":678,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":677,"description":1321,"date":1322,"position":1323,"image":1324,"videoId":1325,"body":1326,"_type":1137,"_id":1330,"_source":1139,"_file":1331,"_extension":1141},"In this video, Tim shows how Cloudinary integrates with Uniform as a headless DAM.\n\nhttps://docs.uniform.app/integrations/content/cloudinary\nhttps://uniform.to/discord\nhttps://cloudinary.com","2023-07-20T07:58:38Z","016","https://i.ytimg.com/vi/OQQJ-tU-urc/maxresdefault.jpg","OQQJ-tU-urc",{"type":1132,"children":1327,"toc":1328},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1329},[],"content:3.videos:uniform:016-OQQJ-tU-urc.md","3.videos/uniform/016-OQQJ-tU-urc.md",{"_path":681,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":680,"description":1333,"date":1334,"position":1335,"image":1336,"videoId":1337,"body":1338,"_type":1137,"_id":1342,"_source":1139,"_file":1343,"_extension":1141},"This is an alternative approach to using Markdown files with Nuxt 3 and the Nuxt Content module. Uniform allows developers and content editors to compose with different sources. Markdown is one of these sources. Want to do a POC of a personal site, but you don't want a CMS and the hassle of content modeling and an account? This is a great way to use your own tooling but still show off the composability approach of a modern stack.\n\nhttps://content.nuxtjs.org\nhttps://docs.uniform.app\n\nhttps://uniform.to/discord","2023-07-20T07:58:43Z","017","https://i.ytimg.com/vi/sY9xKQRXzk8/maxresdefault.jpg","sY9xKQRXzk8",{"type":1132,"children":1339,"toc":1340},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1341},[],"content:3.videos:uniform:017-sY9xKQRXzk8.md","3.videos/uniform/017-sY9xKQRXzk8.md",{"_path":684,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":683,"description":1345,"date":1346,"position":1347,"image":1169,"videoId":1348,"body":1349,"_type":1137,"_id":1353,"_source":1139,"_file":1354,"_extension":1141},"The Uniform CLI enables you to interact with Uniform from a command-line interface.\n\nIn this video, we go over how you can manage your component definitions and your compositions via the Uniform CLI. You can pull all data into a folder on your local machine to make some manual changes (or save all of it in git). \n\nYou can also push the data back to Uniform, making it easy to generate different environments for a project.\n\nThe documentation:\nhttps://docs.uniform.app/guides/tools/cli\nhttps://docs.uniform.app/reference/cli/canvas\n\nJoin our Discord server if you have questions:\nhttps://uniform.to/discord","2023-07-20T07:58:47Z","018","E-9YllTYkZk",{"type":1132,"children":1350,"toc":1351},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1352},[],"content:3.videos:uniform:018-E-9YllTYkZk.md","3.videos/uniform/018-E-9YllTYkZk.md",{"_path":687,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":686,"description":1356,"date":1357,"position":1358,"image":1359,"videoId":1360,"body":1361,"_type":1137,"_id":1365,"_source":1139,"_file":1366,"_extension":1141},"We are excited to announce that the Uniform SDK is ready for Vue 3 and Nuxt 3. Today's ever-expanding landscape of headless products demands that developers somehow connect them all. Wouldn't it be cool if you had one SDK that takes care of connecting up these different APIs? Uniform is a new category of product. It lets you take control of your stack, so creating composable architecture becomes a breeze! \n\nIt enables content editors to drag and drop content from headless sources to create page compositions. Without the help of developers, they can add or remove integrations, do an A/B test or personalize across multiple headless products. Want to change up your CMS? The front end stays the same. You can retrieve a page composition through an SDK function, query, and map data as you prefer, and pass it as props to your components. It works with SSG, SSR, Edge functions, and everything in between.\n\nBlog: https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3\nGet a free account: https://uniform.dev/free\nJoin our Discord: https://uniform.to/discord","2023-07-20T07:58:53Z","019","https://i.ytimg.com/vi/hKCXN_R0m54/maxresdefault.jpg","hKCXN_R0m54",{"type":1132,"children":1362,"toc":1363},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1364},[],"content:3.videos:uniform:019-hKCXN_R0m54.md","3.videos/uniform/019-hKCXN_R0m54.md",{"_path":690,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":689,"description":1368,"date":1369,"position":1370,"image":1371,"videoId":1372,"body":1373,"_type":1137,"_id":1377,"_source":1139,"_file":1378,"_extension":1141},"Uniform Canvas live preview has been built into the Uniform Nuxt module and utilizes Nuxt's native preview functionality. This video shows you how to set it up.\n\nWant to get started with Nuxt 3 and Uniform? \nhttps://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3\n\nDocs: https://docs.uniform.app/guides/composition/live-preview#nuxt-3\nGet a free account: https://uniform.dev/free\nJoin our Discord: https://uniform.to/discord\n\nMore info:\nWe are excited to announce that the Uniform SDK is ready for Vue 3 and Nuxt 3. Today's ever-expanding landscape of headless products demands that developers somehow connect them all. Wouldn't it be cool if you had one SDK that takes care of connecting up these different APIs? Uniform is a new category of product. It lets you take control of your stack, so creating composable architecture becomes a breeze! \n\nIt enables content editors to drag and drop content from headless sources to create page compositions. Without the help of developers, they can add or remove integrations, do an A/B test or personalize across multiple headless products. Want to change up your CMS? The front end stays the same. You can retrieve a page composition through an SDK function, query, and map data as you prefer, and pass it as props to your components. It works with SSG, SSR, Edge functions, and everything in between.","2023-07-20T07:58:58Z","020","https://i.ytimg.com/vi/U41OmxoadtQ/maxresdefault.jpg","U41OmxoadtQ",{"type":1132,"children":1374,"toc":1375},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1376},[],"content:3.videos:uniform:020-U41OmxoadtQ.md","3.videos/uniform/020-U41OmxoadtQ.md",{"_path":693,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":692,"description":1380,"date":1381,"position":1382,"image":1383,"videoId":1384,"body":1385,"_type":1137,"_id":1389,"_source":1139,"_file":1390,"_extension":1141},"Uniform won the Maturity award and the Audience Choice award at this year's MACHathon! The winning project from Rage against the MACHine was a composable accelerator for commerce sites. This video is a demo of how it works (and a bit about how we made it work). Here's why we built it: to allow businesses to spin up actually useable eCommerce websites with the click of one button. But how was it made? And why is it important that it was built with composability in mind and a MACH architecture? You can find out these and more details in the blog post we wrote on the subject: https://uniform.to/uniform-wins-MACH-awards","2023-07-20T07:59:03Z","021","https://i.ytimg.com/vi/h-l_nJ5Aojs/maxresdefault.jpg","h-l_nJ5Aojs",{"type":1132,"children":1386,"toc":1387},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1388},[],"content:3.videos:uniform:021-h-l_nJ5Aojs.md","3.videos/uniform/021-h-l_nJ5Aojs.md",{"_path":696,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":695,"description":1392,"date":1393,"position":1394,"image":1169,"videoId":1395,"body":1396,"_type":1137,"_id":1400,"_source":1139,"_file":1401,"_extension":1141},"In today’s digital landscape, data-driven experimentation has become the lynchpin of growth strategies. “Build, test, tear down and repeat” has become a mantra for businesses focused on product-led growth and customer acquisition loops. With a composable architecture based on MACH principles, businesses have the essential pieces in place to apply growth principles to the very brands they put in front of customers.\n\nBy both removing the technical barriers that slow down the launch of a consistent, repeatable stack and adopting an architecture that allows for an ultra-flexible approach to front-end component design, forward-thinking companies can hyper-target sub-brands, audience segments, global regions, verticals, or product categories - without starting from scratch every time a new site needs to be built. While much of the content may be the same as the master brand site, companies can build a site to support a specific play, test its performance with the target audience, tear it down and repeat.\n\nScaffolding composable stacks need to be more accessible to all stakeholders and not just a tech team.\n\nWhat it does\n\nFor our MACHathon Accelerate entry, team \"Rage against the MACHine\" has collaborated to deliver a next-gen MVP for a “composable commerce stack accelerator” based on Uniform experience orchestration, a BigCommerce headless commerce, and Contentstack headless CMS. This software offers the ability to scaffold new stacks easily as a business user, test performance, tear them down, then repeat.","2023-07-20T07:59:11Z","022","w4PPzyuCoWM",{"type":1132,"children":1397,"toc":1398},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1399},[],"content:3.videos:uniform:022-w4PPzyuCoWM.md","3.videos/uniform/022-w4PPzyuCoWM.md",{"_path":699,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":698,"description":1403,"date":1404,"position":1405,"image":1406,"videoId":1407,"body":1408,"_type":1137,"_id":1412,"_source":1139,"_file":1413,"_extension":1141},"In this Video @timbenniks shows blazing fast #personalization with Uniform and Clearbit on his #jamstack site. \n\nUniform Context delivers sophisticated personalization without sacrificing page performance or scalability. Couple this with Clearbit, the leading data activation platform, and you get magic.\n\nWant to know more? Join the Uniform discord here: https://uniform.to/discord","2023-07-20T07:59:18Z","023","https://i.ytimg.com/vi/IB6DglGF7uc/maxresdefault.jpg","IB6DglGF7uc",{"type":1132,"children":1409,"toc":1410},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1411},[],"content:3.videos:uniform:023-IB6DglGF7uc.md","3.videos/uniform/023-IB6DglGF7uc.md",{"_path":702,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":701,"description":1415,"date":1416,"position":1417,"image":1418,"videoId":1419,"body":1420,"_type":1137,"_id":1424,"_source":1139,"_file":1425,"_extension":1141},"In this video Tims shows how to compose pages using multiple sources with Uniform Canvas. In composed architectures data comes in from many different places and while developers love this, content editors tend to struggle. Uniform workflow solves these issues and makes all stakeholders friends again!\n\nIn this video we use Contentful, BigCommerce, and Cloudinary.","2023-07-20T07:59:23Z","024","https://i.ytimg.com/vi/4XyKmRzO8HA/maxresdefault.jpg","4XyKmRzO8HA",{"type":1132,"children":1421,"toc":1422},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1423},[],"content:3.videos:uniform:024-4XyKmRzO8HA.md","3.videos/uniform/024-4XyKmRzO8HA.md",{"_path":705,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":704,"description":1427,"date":1428,"position":1429,"image":1430,"videoId":1431,"body":1432,"_type":1137,"_id":1436,"_source":1139,"_file":1437,"_extension":1141},"Article here: https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g\n\nIn modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire.\n\nIn this video:\nYou will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech.\n\n1. Use the Jamstack with your favourite framework and host on your favourite CDN.\n2. Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers.\n\nCombining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future.","2023-07-20T07:59:28Z","025","https://i.ytimg.com/vi/4TuixEx-iwk/maxresdefault.jpg","4TuixEx-iwk",{"type":1132,"children":1433,"toc":1434},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1435},[],"content:3.videos:uniform:025-4TuixEx-iwk.md","3.videos/uniform/025-4TuixEx-iwk.md",{"_path":708,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":707,"description":1439,"date":1440,"position":1441,"image":1442,"videoId":1443,"body":1444,"_type":1137,"_id":1448,"_source":1139,"_file":1449,"_extension":1141},"When deploying anything other than a simple POC or personal website, a reliable application will need Environments. What is the right pattern for implementing environments for local developers as well as shared ones like staging and production?\n\nLet's look at how Uniform separates your configuration and content. Then look at how we can migrate both to new higher environments as a feature progresses through its software development workflow.","2023-07-20T07:59:33Z","026","https://i.ytimg.com/vi/9q_1wZX_KjU/maxresdefault.jpg","9q_1wZX_KjU",{"type":1132,"children":1445,"toc":1446},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1447},[],"content:3.videos:uniform:026-9q_1wZX_KjU.md","3.videos/uniform/026-9q_1wZX_KjU.md",{"_path":711,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":710,"description":1451,"date":1452,"position":1453,"image":1454,"videoId":1455,"body":1456,"_type":1137,"_id":1460,"_source":1139,"_file":1461,"_extension":1141},"By customizing content for visitors, merchants and marketers can improve conversion rates and improve UX by presenting more relevant offers. Join Principal Developer Advocate Tim Benniks and Principal Sales Engineer Tony Mamedbekovfor a conversation about how you can use geo-IP localization to select the right content from a CMS and then present it to a user. You’ll also see them implement the solution using Uniform and Contentful.","2023-07-20T07:59:39Z","027","https://i.ytimg.com/vi/MYJ-IlD_rxk/maxresdefault.jpg","MYJ-IlD_rxk",{"type":1132,"children":1457,"toc":1458},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1459},[],"content:3.videos:uniform:027-MYJ-IlD_rxk.md","3.videos/uniform/027-MYJ-IlD_rxk.md",{"_path":714,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":713,"description":1463,"date":1464,"position":1465,"image":1466,"videoId":1467,"body":1468,"_type":1137,"_id":1472,"_source":1139,"_file":1473,"_extension":1141},"Building a composable DXP doesn't have to be out of reach for companies just beginning their digital journey. Join Uniform's principal developer advocate Tim Benniks to see how you can start easily -- and at no cost -- by using free plans from major vendors. \n\nTim shows you how to use Uniform to turn Contentful, BigCommerce, NextJS and Vercel into a powerful, agile platform for digital delivery. And once you set it up, nontechnical users can use Uniform Canvas to create, launch and iterate digital experiences without coming back to the dev team.","2023-07-20T07:59:44Z","028","https://i.ytimg.com/vi/jdl4A64kLrg/maxresdefault.jpg","jdl4A64kLrg",{"type":1132,"children":1469,"toc":1470},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1471},[],"content:3.videos:uniform:028-jdl4A64kLrg.md","3.videos/uniform/028-jdl4A64kLrg.md",{"_path":717,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":716,"description":1475,"date":1476,"position":1477,"image":1478,"videoId":1479,"body":1480,"_type":1137,"_id":1484,"_source":1139,"_file":1485,"_extension":1141},"This week we are showing off the ability to personalize parts of a website and A/B test using Uniform Canvas, Tailwind.ui and Next.js","2023-07-20T07:59:48Z","029","https://i.ytimg.com/vi/FEvAiVAS-yE/maxresdefault.jpg","FEvAiVAS-yE",{"type":1132,"children":1481,"toc":1482},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1483},[],"content:3.videos:uniform:029-FEvAiVAS-yE.md","3.videos/uniform/029-FEvAiVAS-yE.md",{"_path":720,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":719,"description":1487,"date":1488,"position":1489,"image":1490,"videoId":1491,"body":1492,"_type":1137,"_id":1496,"_source":1139,"_file":1497,"_extension":1141},"Uniform is now available on the BigCommerce Headless Edition marketplace! Join us to see how you can use Uniform to connect BigCommerce with a headless CMS like Contentful and front-end components from TailwindUI.\n\nThe result? An agile approach to eCommerce that allows your business users to quickly and easily create beautiful pages without a developer or coding. And Uniform allows you to add personalization to your site with built-in preview, so you can see how your store will look and behave for different audiences. Build better user experiences and increase conversions by showing your shoppers what they're most interested in.\n\nWant to talk to us about how Uniform can help you take your store to the next level? Sign up for a demo here: https://uniform.dev/demo","2023-07-20T07:59:54Z","030","https://i.ytimg.com/vi/_8gh9OYcsus/maxresdefault.jpg","_8gh9OYcsus",{"type":1132,"children":1493,"toc":1494},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1495},[],"content:3.videos:uniform:030-_8gh9OYcsus.md","3.videos/uniform/030-_8gh9OYcsus.md",{"_path":723,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":722,"description":1499,"date":1500,"position":1501,"image":1502,"videoId":1503,"body":1504,"_type":1137,"_id":1508,"_source":1139,"_file":1509,"_extension":1141},"Uniform is excited about some new features for Contentful headless CMS users - check out this video to see these in action:\n\nMulti-space support\nContentful customers can now connect Uniform components to any space (or environment) in their account. This means that once developers wire up components to various spaces, business users can easily use our no-code editor to build experiences without needing to understand where content is coming from. The final page will present *ahem* a Uniform experience for end users. Of course, you can run A/B tests and personalization on every component too. And a bonus - this works at the environment level too, so components can even pull from specific space environments.\nRead the documentation here: https://docs.uniform.app/canvas/tutorials/add-contentful/#connecting-to-multiple-contentful-spaces\n\nIntroducing patterns\nBuilding digital experiences at scale can be repetitive and eat up development time. We’ve added patterns - a way to share a component (which could also contain other components) between multiple compositions. For example, you could use a pattern to share a legal disclaimer, news release author bio, or standard global header across many compositions. These can also be revised once added to a composition, so developers can accelerate build times when designing large sites.\nRead the documentation here: https://docs.uniform.app/canvas/tutorials/patterns\n\nLocalization for global marketing and ecommerce\nUniform components and compositions can now be localized. In addition to localizing content inside Contentful, users can now localize front-end components inside Uniform - giving users more flexibility when it comes to adopting a localization strategy. Both devs and business users get full flexibility with the ability to localize at any level - composition, component, and content.","2023-07-20T07:59:59Z","031","https://i.ytimg.com/vi/vVLWWOnsQE8/maxresdefault.jpg","vVLWWOnsQE8",{"type":1132,"children":1505,"toc":1506},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1507},[],"content:3.videos:uniform:031-vVLWWOnsQE8.md","3.videos/uniform/031-vVLWWOnsQE8.md",{"_path":726,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":725,"description":1487,"date":1511,"position":1512,"image":1513,"videoId":1514,"body":1515,"_type":1137,"_id":1519,"_source":1139,"_file":1520,"_extension":1141},"2023-07-20T08:00:04Z","032","https://i.ytimg.com/vi/EvMwLFHV8wc/maxresdefault.jpg","EvMwLFHV8wc",{"type":1132,"children":1516,"toc":1517},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1518},[],"content:3.videos:uniform:032-EvMwLFHV8wc.md","3.videos/uniform/032-EvMwLFHV8wc.md",{"_path":729,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":728,"description":1125,"date":1522,"position":1523,"image":1524,"videoId":1525,"body":1526,"_type":1137,"_id":1530,"_source":1139,"_file":1531,"_extension":1141},"2023-07-20T08:00:18Z","033","https://i.ytimg.com/vi/jJwWWr9UiXo/maxresdefault.jpg","jJwWWr9UiXo",{"type":1132,"children":1527,"toc":1528},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1529},[],"content:3.videos:uniform:033-jJwWWr9UiXo.md","3.videos/uniform/033-jJwWWr9UiXo.md",{"_path":732,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":731,"description":1125,"date":1533,"position":1534,"image":1535,"videoId":1536,"body":1537,"_type":1137,"_id":1541,"_source":1139,"_file":1542,"_extension":1141},"2023-07-20T08:00:22Z","034","https://i.ytimg.com/vi/GWBkr9uT5-w/maxresdefault.jpg","GWBkr9uT5-w",{"type":1132,"children":1538,"toc":1539},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1540},[],"content:3.videos:uniform:034-GWBkr9uT5-w.md","3.videos/uniform/034-GWBkr9uT5-w.md",{"_path":735,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":734,"description":1125,"date":1544,"position":1545,"image":1546,"videoId":1547,"body":1548,"_type":1137,"_id":1552,"_source":1139,"_file":1553,"_extension":1141},"2023-07-20T08:00:27Z","035","https://i.ytimg.com/vi/0GP_Yf4Fvo8/maxresdefault.jpg","0GP_Yf4Fvo8",{"type":1132,"children":1549,"toc":1550},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1551},[],"content:3.videos:uniform:035-0GP_Yf4Fvo8.md","3.videos/uniform/035-0GP_Yf4Fvo8.md",{"_path":738,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":737,"description":1555,"date":1556,"position":1557,"image":1558,"videoId":1559,"body":1560,"_type":1137,"_id":1564,"_source":1139,"_file":1565,"_extension":1141},"In this video we'll be discussing the basic technical approaches of personalization. By the end you'll know why Uniform's approach is highly scalable and easy to use. Ready to dive in?","2023-07-20T08:00:32Z","036","https://i.ytimg.com/vi/_TKrRQdsoLk/maxresdefault.jpg","_TKrRQdsoLk",{"type":1132,"children":1561,"toc":1562},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1563},[],"content:3.videos:uniform:036-_TKrRQdsoLk.md","3.videos/uniform/036-_TKrRQdsoLk.md",{"_path":741,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":740,"description":1567,"date":1568,"position":1569,"image":1570,"videoId":1571,"body":1572,"_type":1137,"_id":1576,"_source":1139,"_file":1577,"_extension":1141},"See more at: https://uniform.to/zzkFwx\n\nIn recent years we've seen a lot of change in how enterprises use digital experiences to drive customer engagement and e-commerce.\n\nAlong with an explosion of infrastructure and tech stack options, decoupling from monolithic suites has offered more flexibility than ever.\n\nBut, traversing the headless landscape and orchestrating it into a cohesive architecture can present challenges, particularly as the number of business-critical tools behind great experiences continues to change and grow over time.\n\nToo often, that means that businesses need more and more developer expertise to tell their stories. And this at a time when developers are in short supply.\n\nContent editors and marketers are left struggling to keep up and frustrated by a lack of control they may have enjoyed with traditional suites.\n\nThat's why we're excited to announce Uniform, the world’s first truly composable DXP.\nAs a frictionless, composable digital experience platform, Uniform gives companies the power of choice to continuously adopt new tech without ever re-platforming.\n\nFront and center is the power of choice. Choose your own headless sources, your own tech stack and your own hosting. You can connect CMS, CRM and Commerce platforms with ease.\n\nUniform is completely opinion-less and therefore offers true composability. Not one integration is the center of the universe and all parts are equal. It acts as a platform to orchestrate both traditional and headless sources without telling marketers or developers what to do. Yes, you can even treat select monolithic systems like Sitecore as a headless source in Uniform.\n\nAnd with Uniform Canvas, you get powerful no-code tools to allow marketers to retain control over composition, personalization, A/B testing and managing brand experiences without developer support.\n\nUniform Canvas allows business users to seamlessly create engaging experiences based on a multitude of headless and legacy sources without concern for which systems that data is coming from, with instant preview allowing them to understand how changes impact a finished experience. Even when their tech stack changes over time.\n\nUniform ensures your team can continue to deliver incredible experiences as your architecture evolves. After all, change is the only constant. Super fast site performance, enterprise-grade security and great Core Web Vitals is only the beginning. Start telling your story now with Uniform.","2023-07-20T08:00:50Z","037","https://i.ytimg.com/vi/Pt1p8ixie-k/maxresdefault.jpg","Pt1p8ixie-k",{"type":1132,"children":1573,"toc":1574},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1575},[],"content:3.videos:uniform:037-Pt1p8ixie-k.md","3.videos/uniform/037-Pt1p8ixie-k.md",{"_path":744,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":743,"description":1579,"date":1580,"position":1581,"image":1582,"videoId":1583,"body":1584,"_type":1137,"_id":1588,"_source":1139,"_file":1589,"_extension":1141},"See more at: https://uniform.to/zzkFwx\n\nIn an ever expanding landscape of headless sources, developers are often the ones who have to connect them all. \n\nThe question of adding some products, content and personalization on one landing page always comes at a time developers are busy. The answer is generally “no” or a forced “yes, I’ll try to squeeze it in this week”.\n\nWouldn't it be cool if you only had to implement one SDK in your framework of choice and you never had to bother with this stuff again? This sounds too good to be true right? Let’s discuss what this SDK would look like.\n\nIt would allow content editors to drag and drop content from different headless sources to their heart’s content. They could add or remove integrations and even do an A/B test or add some personalization without having to wait for developers.\n\nIf the headless sources change, it would still work exactly the same way on the other end. Retrieve a page composition through an SDK function, map and enhance data to your liking and pass it as props to existing components. Regardless of tech stack, it would just work.\n\nI’m here to tell you we’ve actually built this. We proudly introduce Uniform, the world’s first truly composable DXP. The only DXP that gives developers the power of choice: from front-end framework to CDN to hosting as SSR, Jamstack, with Edge workers, partial SSG, anything goes.\n\nUniform offers a platform without opinion, without vendor lock-in and without a restricting roadmap. Not one integration is the center of the universe and nothing is tightly coupled.\nWant three different CMS systems and two commerce engines? Why not? Add an integration, query the data and map it to props for your components to use.\n\nNext to true composability regardless of tech stack, we’ve also introduced Uniform Canvas, a no-code composition builder that allows non-technical users to create experiences based on the components you define.\n\nUniform Canvas also provides a preview API with websockets, so end users can preview their composition live and in the actual codebase of the final product.\n\nUniform comes with an extremely flexible data enhancer API to help you map data from headless sources into your app. This API can run in your codebase or as an external service. We don’t care. Everything is built with flexibility in mind. You have the power of choice at your side.\n\nWe at Uniform know happy developers do better work. Good DX and great SDKs are just the beginning. With Uniform you can connect all the dots the way you like from a tech perspective. With a combination of out of the box tools for a fast time to market, and a set of APIs that allow extreme precision, we have created the world’s first truly composable DXP that will make both developers and content editors happy.","2023-07-20T08:00:56Z","038","https://i.ytimg.com/vi/jUL6H-3wrnQ/maxresdefault.jpg","jUL6H-3wrnQ",{"type":1132,"children":1585,"toc":1586},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1587},[],"content:3.videos:uniform:038-jUL6H-3wrnQ.md","3.videos/uniform/038-jUL6H-3wrnQ.md",{"_path":747,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":746,"description":1591,"date":1592,"position":1593,"image":1594,"videoId":1595,"body":1596,"_type":1137,"_id":1600,"_source":1139,"_file":1601,"_extension":1141},"See more here: https://uniform.dev\n\nIn this video we will discuss why #Jamstack is so important for the future of DXPs.\n\nNowadays the general consensus is that Jamstack is the way to go. The modern web is origin-less and Jamstack allows us to make that happen.\n\nStatic sites allow for easy scaling. They also score high core web vitals due to extremely fast TTFB and the use of modern web frameworks such as Next and Nuxt. API calls and data mapping happen at build time so at runtime nothing time consuming has to happen.\n\nStill need dynamic stuff for personalization, A/B testing, product catalogs or user logins? Use CDN edge workers or #serverless functions that run on the same CDN instance as the site so they are blazing fast and close to the end user.\n\nFor the business users among you: Highly performant web pages lead to higher conversion rates and better SEO. They also scale without issue during the black Friday peak.\n\nFor the developers among you: Jamstack sites allow developers to choose their stack freely as the end result is a static site. Jamstack sites do not have an opinion of how they are build and where they run. They offer the #powerofchoice for developers.","2023-07-20T08:01:01Z","039","https://i.ytimg.com/vi/PDEKgEzhFfI/maxresdefault.jpg","PDEKgEzhFfI",{"type":1132,"children":1597,"toc":1598},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1599},[],"content:3.videos:uniform:039-PDEKgEzhFfI.md","3.videos/uniform/039-PDEKgEzhFfI.md",{"_path":750,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":749,"description":1603,"date":1604,"position":1605,"image":1606,"videoId":1607,"body":1608,"_type":1137,"_id":1612,"_source":1139,"_file":1613,"_extension":1141},"The modern DXP is a group of headless tools connected to each other. This arrangement leaves content editors and marketers frustrated as they need to ask developers to connect services together to create a simple page.\n\nHow do we solve this? We need a low-code or no-code platform that allows content editors to easily compose pages from different headless sources with minimal developer involvement, But at the same time, developers need to love working with this platform, they need the flexibility and the #powerofchoice to choose their tech stack and anything else in the front-end.","2023-07-20T08:01:06Z","040","https://i.ytimg.com/vi/IAaBBJFIiRo/maxresdefault.jpg","IAaBBJFIiRo",{"type":1132,"children":1609,"toc":1610},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1611},[],"content:3.videos:uniform:040-IAaBBJFIiRo.md","3.videos/uniform/040-IAaBBJFIiRo.md",{"_path":753,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":752,"description":1615,"date":1616,"position":1617,"image":1618,"videoId":1619,"body":1620,"_type":1137,"_id":1624,"_source":1139,"_file":1625,"_extension":1141},"In this video we will discuss what true #composability is in the context of #DXP.\nNowadays, business leaders and developers are demanding freedom of choice across the board. And this puts traditional suite vendors in a state of chaos.They are trying to change the way they work while still staying mindful of the past 10 years of marketing the \"suite\" approach.\n\nThey are literally buying companies to try to create the feeling of composability while in fact they are only allowing you to compose with the components in their suite offering. You can't coin a term like composable DXP if you do not offer real flexibility.\n\nCustomers will still suffer from vendor lock-in, complex upgrade roadmaps and lot's of work to customize anything in the system. We've seen a huge explosion in digital experience tools over the past ten years, and the market is only moving faster. The tools you have today won't be the same tools you're using in 6 months time, or 2 years' time.\n\nTrue composability is the #powerofchoice in EVERYTHING. From Tech stack to hosting, CMS, media management, marketing tools, CDN, analytics, whatever.\n\nWe need an opinion-less platform in which nobody is the centre of the universe. A platform where all elements are equal and that offers flexibility and extendability whenever needed. Never re-platform again. Just switch out integrations.\n\nA truly composable DXP offers Freedom of choice in everything but with painkillers for orchestration and content composing.","2023-07-20T08:01:11Z","041","https://i.ytimg.com/vi/fo9cop0zNT0/maxresdefault.jpg","fo9cop0zNT0",{"type":1132,"children":1621,"toc":1622},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1623},[],"content:3.videos:uniform:041-fo9cop0zNT0.md","3.videos/uniform/041-fo9cop0zNT0.md",{"_path":756,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":755,"description":1627,"date":1628,"position":1629,"image":1630,"videoId":1631,"body":1632,"_type":1137,"_id":1636,"_source":1139,"_file":1637,"_extension":1141},"No more comparison of which framework is better, Vue and React can work together in the same app. We're back with another episode of #Jamstack Fridays where Tony and Tim explore #Astro and what this new kid on the block means for modern web development.","2023-07-20T08:01:20Z","042","https://i.ytimg.com/vi/sUrxtZA2sA0/maxresdefault.jpg","sUrxtZA2sA0",{"type":1132,"children":1633,"toc":1634},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1635},[],"content:3.videos:uniform:042-sUrxtZA2sA0.md","3.videos/uniform/042-sUrxtZA2sA0.md",{"_path":759,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":758,"description":1639,"date":1640,"position":1641,"image":1642,"videoId":1643,"body":1644,"_type":1137,"_id":1648,"_source":1139,"_file":1649,"_extension":1141},"Getting started with Uniform for your MACHathon project.\nTim and Christian help you get started with Uniform for your MACHathon project. Understand and see the basics of API first driven personalization with Uniform.\n\nhttps://uniform.dev\nhttps://docs.uniform.app\nhttps://twitter.com/timbenniks\nhttps://twitter.com/uniformdev","2023-07-20T08:01:39Z","043","https://i.ytimg.com/vi/woNTID8zkf0/maxresdefault.jpg","woNTID8zkf0",{"type":1132,"children":1645,"toc":1646},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1647},[],"content:3.videos:uniform:043-woNTID8zkf0.md","3.videos/uniform/043-woNTID8zkf0.md",{"_path":762,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":761,"description":1651,"date":1652,"position":1653,"image":1654,"videoId":1655,"body":1656,"_type":1137,"_id":1660,"_source":1139,"_file":1661,"_extension":1141},"Uniform and Kentico Kontent have recently partnered and we received a lovely and mysterious package from the Kontent team. \n\nSee how excited Tim is to open it!\n\nhttps://uniform.dev/uniform-for-kontent","2023-07-20T08:01:45Z","044","https://i.ytimg.com/vi/fngYHAaOgqc/maxresdefault.jpg","fngYHAaOgqc",{"type":1132,"children":1657,"toc":1658},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1659},[],"content:3.videos:uniform:044-fngYHAaOgqc.md","3.videos/uniform/044-fngYHAaOgqc.md",{"_path":765,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":764,"description":1663,"date":1664,"position":1665,"image":1666,"videoId":1667,"body":1668,"_type":1137,"_id":1672,"_source":1139,"_file":1673,"_extension":1141},"Uniform for Sitecore helps Sitecore customers to achieve the performance, scalability, cost and security benefits of the modern web without requiring expensive, risk and time-consuming upgrades.\n\nUniform for Sitecore offers two capabilities: Deploy and Optimize. These capabilities can be used separately or together.\n\nNew features for Uniform For Sitecore:\n* Edge-based personalization and decoupled tracking is available in Uniform Optimize.\n* Fully integrated incremental cache purge for Akamai (using Fast Purge) into the Sitecore publishing process.\n* Fully integrated incremental cache purge for Cloudflare into the Sitecore publishing process.\n\nImprovements:\n* Support for Sitecore JSS 16.\n* Ability to configure warnings that are shown to content authors when they try to make changes that once published will trigger full site redeployment.\n* New re-sync page and check page data buttons are added to facilitate in development and troubleshooting.\n* Item-based configuration has 'enabled' checkbox for temporary disabling services that were configured either via the item-configuration or even file-based config.\n* npm package dependencies updated across the board.\n* Improved content and media sync performance.\n* \"none\" publish target is now different from \"fake\" (\"none\" used to be an alias for \"fake\") and throws exceptions to remind that publish target needs to be configured.\n\nhttps://docs.uniform.dev/sitecore/\nhttps://uniform.dev/sign-up\nhttps://twitter.com/timbenniks","2023-07-20T08:01:50Z","045","https://i.ytimg.com/vi/Itk9sgW0N7U/maxresdefault.jpg","Itk9sgW0N7U",{"type":1132,"children":1669,"toc":1670},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1671},[],"content:3.videos:uniform:045-Itk9sgW0N7U.md","3.videos/uniform/045-Itk9sgW0N7U.md",{"_path":768,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":767,"description":1675,"date":1676,"position":1677,"image":1678,"videoId":1679,"body":1680,"_type":1137,"_id":1684,"_source":1139,"_file":1685,"_extension":1141},"Tim from Uniform shows how to integrate Uniform Optimize #personalization into the Kentico Kontent CMS.\n\nFeel free to reach out directly on Twitter at: @unformDev or @timbenniks\nThe docs: https://docs.uniform.app/optimize/dev/content-management/kontent/getting-started\nThe starter kit: https://github.com/uniformdev/uniform-optimize-next-kontent-starter","2023-07-20T08:01:55Z","046","https://i.ytimg.com/vi/HDUPeGqtjrM/maxresdefault.jpg","HDUPeGqtjrM",{"type":1132,"children":1681,"toc":1682},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1683},[],"content:3.videos:uniform:046-HDUPeGqtjrM.md","3.videos/uniform/046-HDUPeGqtjrM.md",{"_path":771,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":770,"description":1687,"date":1688,"position":1689,"image":1690,"videoId":1691,"body":1692,"_type":1137,"_id":1696,"_source":1139,"_file":1697,"_extension":1141},"We're back with another episode of #Jamstack Fridays where Tony shows @timbenniks how he connected Google #Oauth login with Firebase in #Nextjs with the Next Auth plugin.\n\nhttps://github.com/tmamedbekov/nextjs-nextauth\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:01:59Z","047","https://i.ytimg.com/vi/6jkEkHxmmAQ/maxresdefault.jpg","6jkEkHxmmAQ",{"type":1132,"children":1693,"toc":1694},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1695},[],"content:3.videos:uniform:047-6jkEkHxmmAQ.md","3.videos/uniform/047-6jkEkHxmmAQ.md",{"_path":774,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":773,"description":1699,"date":1700,"position":1701,"image":1702,"videoId":1703,"body":1704,"_type":1137,"_id":1708,"_source":1139,"_file":1709,"_extension":1141},"We’re back with another episode of #Jamstack Fridays where Tony shows @timbenniks how he connected Netlify Forms, Google Sheets and #Next.js for some #serverless goodness.\n\nhttps://github.com/tmamedbekov/netlify-forms-nextjs\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:05Z","048","https://i.ytimg.com/vi/H3y_jNBTroM/maxresdefault.jpg","H3y_jNBTroM",{"type":1132,"children":1705,"toc":1706},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1707},[],"content:3.videos:uniform:048-H3y_jNBTroM.md","3.videos/uniform/048-H3y_jNBTroM.md",{"_path":777,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":776,"description":1711,"date":1712,"position":1713,"image":1714,"videoId":1715,"body":1716,"_type":1137,"_id":1720,"_source":1139,"_file":1721,"_extension":1141},"In this episode Tony shares recent news from the Jamstack world.\n\nNews items: \nContentstack, Uniform and Epam event: https://info.contentstack.com/personalization-developer-workshop-uniform-05-26-2021.html\nFeaturepeek: https://www.netlify.com/blog/2021/05/19/next-generation-deploy-previews-plus-netlify-acquires-featurepeek/\nWebcontainers: https://blog.stackblitz.com/posts/introducing-webcontainers/\nNext JS Conf: https://nextjs.org/conf\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:10Z","049","https://i.ytimg.com/vi/Xr8Eo9G6bPs/maxresdefault.jpg","Xr8Eo9G6bPs",{"type":1132,"children":1717,"toc":1718},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1719},[],"content:3.videos:uniform:049-Xr8Eo9G6bPs.md","3.videos/uniform/049-Xr8Eo9G6bPs.md",{"_path":780,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":779,"description":1723,"date":1724,"position":1725,"image":1726,"videoId":1727,"body":1728,"_type":1137,"_id":1732,"_source":1139,"_file":1733,"_extension":1141},"In this episode Tony and Tim explore how you can scaffold a #Next.js Jamstack website with #Contentstack and dynamic personalisation by #Uniform in 10 minutes.\n\nWant to try this yourself? Go here: https://uniform.app\n\nTony shares news from the Jamstack world\nNotion API: https://developers.notion.com/\nGatsby 3.5: https://www.gatsbyjs.com/docs/reference/release-notes/v3.5/\nSanity Exchange: https://www.sanity.io/exchange\nNode 14.7: https://nodejs.org/en/blog/release/v14.17.0/\nNetlify: https://www.netlify.com/blog/2021/05/06/now-available-configure-build-plugins-by-deploy-context/\nCloudfront Functions: https://aws.amazon.com/about-aws/whats-new/2021/05/cloudfront-functions/\nOptimize Vitals: https://web.dev/optimize-vitals-lighthouse/\nSimple Login: https://simplelogin.io/\n\nTimestamps\n00:00 Introduction\n00:24 News: Notion API\n01:13 News: Gatsby v3.5\n01:49 News: Sanity Exchange\n02:20 News: Node v14.17 LTS\n02:57 News: Netlify Build plugins\n04:03 News: Amazon Edge compute\n04:36 News: Core Web Vitals\n05:14 News: Simple Login\n05:52 Setting up Next.js with Contentstack for p13n\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:15Z","050","https://i.ytimg.com/vi/4EepxPO9iqc/maxresdefault.jpg","4EepxPO9iqc",{"type":1132,"children":1729,"toc":1730},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1731},[],"content:3.videos:uniform:050-4EepxPO9iqc.md","3.videos/uniform/050-4EepxPO9iqc.md",{"_path":783,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":782,"description":1735,"date":1736,"position":1737,"image":1738,"videoId":1739,"body":1740,"_type":1137,"_id":1744,"_source":1139,"_file":1745,"_extension":1141},"In this episode Tony shares recent news from the Jamstack world.\n\nNews items: \nhttps://nextjs.org/blog/next-10-2\nhttps://www.gatsbyjs.com/solutions/shopify\nhttps://vercel.com/changelog/surfacing-the-environment-of-deployments-and-domains\nhttps://www.sanity.io/changelog?platforms=Studio#change-b5752bd2-159f-4dd3-9611-bc8bce42f8c2\nhttps://mantine.dev/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:19Z","051","https://i.ytimg.com/vi/fDouNaPTtFY/maxresdefault.jpg","fDouNaPTtFY",{"type":1132,"children":1741,"toc":1742},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1743},[],"content:3.videos:uniform:051-fDouNaPTtFY.md","3.videos/uniform/051-fDouNaPTtFY.md",{"_path":786,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":785,"description":1747,"date":1748,"position":1749,"image":1750,"videoId":1751,"body":1752,"_type":1137,"_id":1756,"_source":1139,"_file":1757,"_extension":1141},"In this product meet up Lars and Tim take personalization for #Jamstack websites to the next level. They discuss negative signals, overrides, thresholds and enrichments.\n\nWant to learn how to do #personalization on your website? Check this video. It has a wealth of information.\n\nRequest a demo here: https://uniform.dev/sign-up\n\nTimestamps:\n00:00 Introduction\n01:21 Personalization basics: intents & signals\n15:09 Negative Signals\n22:06 Overriding Signals\n26:28 Thresholds\n34:21 Enrichments\n41:46 Conclusions","2023-07-20T08:02:24Z","052","https://i.ytimg.com/vi/gSey28saQac/maxresdefault.jpg","gSey28saQac",{"type":1132,"children":1753,"toc":1754},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1755},[],"content:3.videos:uniform:052-gSey28saQac.md","3.videos/uniform/052-gSey28saQac.md",{"_path":789,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":788,"description":1759,"date":1760,"position":1761,"image":1762,"videoId":1763,"body":1764,"_type":1137,"_id":1768,"_source":1139,"_file":1769,"_extension":1141},"It's Friday again! Tony and Tim discuss the news, they recap the Vue Storefront Summit and they dive into performance and personalization of Jamstack wesbites.\n\nNews:\nhttps://blog.tailwindcss.com/tailwind-ui-now-with-react-and-vue-support\nhttps://www.netlify.com/blog/2021/04/14/faster-builds-for-large-sites-on-netlify-with-on-demand-builders-now-in-early-access/\nhttps://blog.cloudflare.com/announcing-cloudflare-images-beta/\nhttps://strapi.io/blog/announcing-content-internationalization-v3-6\nhttps://trekhleb.dev/blog/2021/content-aware-image-resizing-in-javascript/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:29Z","053","https://i.ytimg.com/vi/R2YGBT1TO4s/maxresdefault.jpg","R2YGBT1TO4s",{"type":1132,"children":1765,"toc":1766},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1767},[],"content:3.videos:uniform:053-R2YGBT1TO4s.md","3.videos/uniform/053-R2YGBT1TO4s.md",{"_path":792,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":791,"description":1771,"date":1772,"position":1773,"image":1774,"videoId":1775,"body":1776,"_type":1137,"_id":1780,"_source":1139,"_file":1781,"_extension":1141},"Join Tony and @timbenniks at another episode of Jamstack Fridays with T&T. This week the guys are discussing how to break #Jamstack #architecture cliches and they show an out-of-the box architecture for some Friday #inspiration!\n\nNews:\nhttps://www.netlify.com/blog/2021/03/31/test-drive-netlify-beta-features-with-netlify-labs/\nhttps://www.netlify.com/blog/2021/04/05/dark-mode-fans-take-these-steps-to-set-it-up-in-the-netlify-app/\nhttps://www.gatsbyjs.com/blog/meet-new-gatsby-image/\nhttps://blog.cloudflare.com/the-teams-dashboard-home/\nhttps://twitter.com/adamwathan/status/1379154041662541828\nhttps://next-auth.js.org/\nhttps://styled-chart.com/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:37Z","054","https://i.ytimg.com/vi/9M73VIcakO4/maxresdefault.jpg","9M73VIcakO4",{"type":1132,"children":1777,"toc":1778},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1779},[],"content:3.videos:uniform:054-9M73VIcakO4.md","3.videos/uniform/054-9M73VIcakO4.md",{"_path":795,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":794,"description":1783,"date":1784,"position":1785,"image":1786,"videoId":1787,"body":1788,"_type":1137,"_id":1792,"_source":1139,"_file":1793,"_extension":1141},"#Contenstack and #Uniform personalisation for #Jamstack websites. This website runs on Gatsby and we'll be showing you how easy it is to personalize website with Uniform!","2023-07-20T08:02:42Z","055","https://i.ytimg.com/vi/D41Ch2LNxTQ/maxresdefault.jpg","D41Ch2LNxTQ",{"type":1132,"children":1789,"toc":1790},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1791},[],"content:3.videos:uniform:055-D41Ch2LNxTQ.md","3.videos/uniform/055-D41Ch2LNxTQ.md",{"_path":798,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":797,"description":1795,"date":1796,"position":1797,"image":1798,"videoId":1799,"body":1800,"_type":1137,"_id":1804,"_source":1139,"_file":1805,"_extension":1141},"In this episode of Jamstack Fridays with T&T we discuss common questions our clients ask. In this video we discuss Gatsby vs Next.js and how to choose the right tool for you.\n\nNews:\nNextJS 10.1 Release\nhttps://nextjs.org/blog/next-10-1\n\nNetlify Build Plugin:\nhttps://www.netlify.com/blog/2021/03/26/netlify-build-plugin-of-the-week-lighthouse/\n\nSvelteKit:\nhttps://svelte.dev/blog/sveltekit-beta\n\n100 Day Challenge Create a Gatsby Theme\nhttps://www.gatsbyjs.com/blog/100days-challenge-5\n\nVisualized Content Modeling\nhttps://contentmodel.io/ \n\nFollow us here:\nTony: https://twitter.com/tmamedbekov\nTim: https://twitter.com/timbenniks\n\nhttps://uniform.dev","2023-07-20T08:02:47Z","056","https://i.ytimg.com/vi/EOHudN8Apm4/maxresdefault.jpg","EOHudN8Apm4",{"type":1132,"children":1801,"toc":1802},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1803},[],"content:3.videos:uniform:056-EOHudN8Apm4.md","3.videos/uniform/056-EOHudN8Apm4.md",1718484380312] \ No newline at end of file +[{"data":1,"prerenderedAt":1806},["Reactive",2],{"content-navigation-8C37fagqQL":3,"content-query-rEYRYuRDt6":1121},[4,7,799,876,1112,1115,1118],{"title":5,"_path":6},"About Tim","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,49,95,96,148,251,274,296,624],{"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},"Headless Creator","/videos/headless-creator",[34,37,40,43,46],{"title":35,"_path":36},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":38,"_path":39},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":41,"_path":42},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":44,"_path":45},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":47,"_path":48},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":50,"_path":51,"children":52},"Hygraph","/videos/hygraph",[53,56,59,62,65,68,71,74,77,80,83,86,89,92],{"title":54,"_path":55},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":57,"_path":58},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":60,"_path":61},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":63,"_path":64},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":66,"_path":67},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":69,"_path":70},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":72,"_path":73},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":75,"_path":76},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":78,"_path":79},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":81,"_path":82},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":84,"_path":85},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":87,"_path":88},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":90,"_path":91},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":93,"_path":94},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":8,"_path":9},{"title":97,"_path":98,"children":99},"Live Hygraph","/videos/live-hygraph",[100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"title":101,"_path":102},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":104,"_path":105},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":107,"_path":108},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":110,"_path":111},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":113,"_path":114},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":116,"_path":117},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":119,"_path":120},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":122,"_path":123},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":125,"_path":126},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":128,"_path":129},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":131,"_path":132},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":134,"_path":135},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":137,"_path":138},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":140,"_path":141},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":143,"_path":144},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":146,"_path":147},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":149,"_path":150,"children":151},"Live Uniform","/videos/live-uniform",[152,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248],{"title":153,"_path":154},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":156,"_path":157},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":159,"_path":160},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":162,"_path":163},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":165,"_path":166},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":168,"_path":169},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":171,"_path":172},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":174,"_path":175},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":177,"_path":178},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":180,"_path":181},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":183,"_path":184},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":186,"_path":187},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":189,"_path":190},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":192,"_path":193},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":195,"_path":196},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":198,"_path":199},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":201,"_path":202},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":204,"_path":205},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":207,"_path":208},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":210,"_path":211},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":213,"_path":214},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":216,"_path":217},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":219,"_path":220},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":222,"_path":223},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":225,"_path":226},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":228,"_path":229},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":231,"_path":232},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":234,"_path":235},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":237,"_path":238},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":240,"_path":241},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":243,"_path":244},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":246,"_path":247},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":249,"_path":250},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":252,"_path":253,"children":254},"Misc Streams","/videos/misc-streams",[255,258,261,264,266,268,271],{"title":256,"_path":257},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":259,"_path":260},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":262,"_path":263},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":246,"_path":265},"/videos/misc-streams/003-jvgiaotcerq",{"title":237,"_path":267},"/videos/misc-streams/004-ekut1koa2n8",{"title":269,"_path":270},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":272,"_path":273},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":275,"_path":276,"children":277},"Mp","/videos/mp",[278,281,284,287,290,293],{"title":279,"_path":280},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":282,"_path":283},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":285,"_path":286},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":288,"_path":289},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":291,"_path":292},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":294,"_path":295},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":297,"_path":298,"children":299},"Tim","/videos/tim",[300,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,352,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,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],{"title":19,"_path":301},"/videos/tim/000-mvq-_s20ndk",{"title":303,"_path":304},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":306,"_path":307},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":309,"_path":310},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":312,"_path":313},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":315,"_path":316},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":318,"_path":319},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":321,"_path":322},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":324,"_path":325},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":327,"_path":328},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":330,"_path":331},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":333,"_path":334},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":336,"_path":337},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":339,"_path":340},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":342,"_path":343},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":345,"_path":346},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":348,"_path":349},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":22,"_path":351},"/videos/tim/017-m0mrligs6i0",{"title":16,"_path":353},"/videos/tim/018-hhpitreyobi",{"title":355,"_path":356},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":358,"_path":359},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":361,"_path":362},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":364,"_path":365},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":367,"_path":368},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":370,"_path":371},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":373,"_path":374},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":376,"_path":377},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":379,"_path":380},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":382,"_path":383},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":385,"_path":386},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":388,"_path":389},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":391,"_path":392},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":394,"_path":395},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":397,"_path":398},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":400,"_path":401},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":403,"_path":404},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":406,"_path":407},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":409,"_path":410},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":412,"_path":413},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":415,"_path":416},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":418,"_path":419},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":421,"_path":422},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":424,"_path":425},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":427,"_path":428},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":430,"_path":431},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":433,"_path":434},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":436,"_path":437},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":439,"_path":440},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":442,"_path":443},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":445,"_path":446},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":448,"_path":449},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":451,"_path":452},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":454,"_path":455},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":457,"_path":458},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":460,"_path":461},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":463,"_path":464},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":466,"_path":467},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":469,"_path":470},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":472,"_path":473},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":475,"_path":476},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":478,"_path":479},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":481,"_path":482},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":484,"_path":485},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":487,"_path":488},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":490,"_path":491},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":493,"_path":494},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":496,"_path":497},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":499,"_path":500},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":502,"_path":503},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":505,"_path":506},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":508,"_path":509},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":511,"_path":512},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":514,"_path":515},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":517,"_path":518},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":520,"_path":521},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":523,"_path":524},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":526,"_path":527},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":529,"_path":530},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":532,"_path":533},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":535,"_path":536},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":538,"_path":539},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":541,"_path":542},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":544,"_path":545},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":547,"_path":548},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":550,"_path":551},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":553,"_path":554},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":556,"_path":557},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":559,"_path":560},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":562,"_path":563},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":565,"_path":566},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":568,"_path":569},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":571,"_path":572},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":574,"_path":575},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":577,"_path":578},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":580,"_path":581},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":583,"_path":584},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":586,"_path":587},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":589,"_path":590},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":592,"_path":593},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":595,"_path":596},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":598,"_path":599},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":601,"_path":602},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":604,"_path":605},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":607,"_path":608},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":610,"_path":611},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":613,"_path":614},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":616,"_path":617},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":619,"_path":620},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":622,"_path":623},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":625,"_path":626,"children":627},"Uniform","/videos/uniform",[628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796],{"title":629,"_path":630},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":632,"_path":633},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":635,"_path":636},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":638,"_path":639},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":641,"_path":642},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":644,"_path":645},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":647,"_path":648},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":650,"_path":651},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":653,"_path":654},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":656,"_path":657},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":659,"_path":660},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":662,"_path":663},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":665,"_path":666},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":668,"_path":669},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":671,"_path":672},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":674,"_path":675},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":677,"_path":678},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":680,"_path":681},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":683,"_path":684},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":686,"_path":687},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":689,"_path":690},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":692,"_path":693},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":695,"_path":696},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":698,"_path":699},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":701,"_path":702},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":704,"_path":705},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":707,"_path":708},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":710,"_path":711},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":713,"_path":714},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":716,"_path":717},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":719,"_path":720},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":722,"_path":723},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":725,"_path":726},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":728,"_path":729},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":731,"_path":732},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":734,"_path":735},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":737,"_path":738},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":740,"_path":741},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":743,"_path":744},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":746,"_path":747},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":749,"_path":750},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":752,"_path":753},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":755,"_path":756},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":758,"_path":759},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":761,"_path":762},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":764,"_path":765},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":767,"_path":768},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":770,"_path":771},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":773,"_path":774},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":776,"_path":777},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":779,"_path":780},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":782,"_path":783},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":785,"_path":786},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":788,"_path":789},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":791,"_path":792},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":794,"_path":795},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":797,"_path":798},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":800,"_path":801,"children":802},"Writing","/writing",[803,806,809,812,815,818,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873],{"title":804,"_path":805},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":807,"_path":808},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":810,"_path":811},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":813,"_path":814},"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":816,"_path":817},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":800,"_path":801},{"title":820,"_path":821},"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":823,"_path":824},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":826,"_path":827},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":829,"_path":830},"My Fitness Story","/writing/my-fitness-story",{"title":832,"_path":833},"New job alert!","/writing/new-job-alert",{"title":835,"_path":836},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":838,"_path":839},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":841,"_path":842},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":844,"_path":845},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":847,"_path":848},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":850,"_path":851},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":853,"_path":854},"The MACH monolith","/writing/the-mach-monolith",{"title":856,"_path":857},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":859,"_path":860},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":862,"_path":863},"This is headless 2.0","/writing/this-is-headless-20",{"title":865,"_path":866},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":868,"_path":869},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":871,"_path":872},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":874,"_path":875},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":877,"_path":878,"children":879},"Speaking","/speaking",[880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111],{"title":881,"_path":882},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":884,"_path":885},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":887,"_path":888},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":890,"_path":891},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":893,"_path":894},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":896,"_path":897},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":899,"_path":900},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":902,"_path":903},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":905,"_path":906},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":908,"_path":909},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":911,"_path":912},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":914,"_path":915},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":917,"_path":918},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":920,"_path":921},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":923,"_path":924},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":926,"_path":927},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":929,"_path":930},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":932,"_path":933},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":935,"_path":936},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":938,"_path":939},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":941,"_path":942},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":944,"_path":945},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":947,"_path":948},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":950,"_path":951},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":953,"_path":954},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":956,"_path":957},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":959,"_path":960},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":962,"_path":963},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":965,"_path":966},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":968,"_path":969},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":971,"_path":972},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":974,"_path":975},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":977,"_path":978},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":980,"_path":981},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":983,"_path":984},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":986,"_path":987},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":989,"_path":990},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":992,"_path":993},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":995,"_path":996},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":998,"_path":999},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1001,"_path":1002},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1004,"_path":1005},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1007,"_path":1008},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1010,"_path":1011},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1013,"_path":1014},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1016,"_path":1017},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1019,"_path":1020},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1022,"_path":1023},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1025,"_path":1026},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1028,"_path":1029},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1031,"_path":1032},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1034,"_path":1035},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1037,"_path":1038},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1040,"_path":1041},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1043,"_path":1044},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1046,"_path":1047},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1049,"_path":1050},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1052,"_path":1053},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1055,"_path":1056},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1058,"_path":1059},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1061,"_path":1062},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1064,"_path":1065},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1067,"_path":1068},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1070,"_path":1071},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1073,"_path":1074},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1076,"_path":1077},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1079,"_path":1080},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1082,"_path":1083},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1085,"_path":1086},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1088,"_path":1089},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1091,"_path":1092},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1094,"_path":1095},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1097,"_path":1098},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1100,"_path":1101},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1103,"_path":1104},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1106,"_path":1107},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1109,"_path":1110},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":877,"_path":878},{"title":1113,"_path":1114},"live streams","/livestreams",{"title":1116,"_path":1117},"Press kit","/presskit",{"title":1119,"_path":1120},"Alive and kicking","/alive-and-kicking",[1122,1142,1154,1165,1177,1189,1201,1213,1225,1237,1249,1261,1273,1285,1297,1308,1320,1332,1344,1355,1367,1379,1391,1402,1414,1426,1438,1450,1462,1474,1486,1498,1510,1521,1532,1543,1554,1566,1578,1590,1602,1614,1626,1638,1650,1662,1674,1686,1698,1710,1722,1734,1746,1758,1770,1782,1794],{"_path":630,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":629,"description":1126,"date":1127,"position":1128,"image":1129,"videoId":1130,"body":1131,"_type":1137,"_id":1138,"_source":1139,"_file":1140,"_extension":1141},"uniform",false,"","This is Uniform DXCP: composability with Headless 2.0","2023-07-20T07:53:52Z","000","https://i.ytimg.com/vi/sF8TCV5t9PA/maxresdefault.jpg","sF8TCV5t9PA",{"type":1132,"children":1133,"toc":1134},"root",[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1136},2,[],"markdown","content:3.videos:uniform:000-sF8TCV5t9PA.md","content","3.videos/uniform/000-sF8TCV5t9PA.md","md",{"_path":633,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":632,"description":1143,"date":1144,"position":1145,"image":1146,"videoId":1147,"body":1148,"_type":1137,"_id":1152,"_source":1139,"_file":1153,"_extension":1141},"Learn more at https://uniform.dev","2023-07-20T07:53:58Z","001","https://i.ytimg.com/vi/VkJWIqlM6_w/maxresdefault.jpg","VkJWIqlM6_w",{"type":1132,"children":1149,"toc":1150},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1151},[],"content:3.videos:uniform:001-VkJWIqlM6_w.md","3.videos/uniform/001-VkJWIqlM6_w.md",{"_path":636,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":635,"description":1143,"date":1155,"position":1156,"image":1157,"videoId":1158,"body":1159,"_type":1137,"_id":1163,"_source":1139,"_file":1164,"_extension":1141},"2023-07-20T07:54:06Z","002","https://i.ytimg.com/vi/nDrAbg4x6yA/maxresdefault.jpg","nDrAbg4x6yA",{"type":1132,"children":1160,"toc":1161},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1162},[],"content:3.videos:uniform:002-nDrAbg4x6yA.md","3.videos/uniform/002-nDrAbg4x6yA.md",{"_path":639,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":638,"description":1166,"date":1167,"position":1168,"image":1169,"videoId":1170,"body":1171,"_type":1137,"_id":1175,"_source":1139,"_file":1176,"_extension":1141},"Join us on Discord at https://uniform.to/discord\nLearn more at https://uniform.dev\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/unif... \nInstagram: https://www.instagram.com/uniform.dev/","2023-07-20T07:54:15Z","003","undefined","hcjLHnrjzpo",{"type":1132,"children":1172,"toc":1173},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1174},[],"content:3.videos:uniform:003-hcjLHnrjzpo.md","3.videos/uniform/003-hcjLHnrjzpo.md",{"_path":642,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":641,"description":1178,"date":1179,"position":1180,"image":1181,"videoId":1182,"body":1183,"_type":1137,"_id":1187,"_source":1139,"_file":1188,"_extension":1141},"Uniform introduces new features to make content management faster and more efficient for teams. The Component Starter Kit offers open-source, customizable components for building key pages, while improved data connections via Mesh allow for easier setup and fast edge-cached content delivery. \n\nUniform Canvas now supports dynamic component patterns and one-click integration with any data source, giving marketers more flexibility in content creation. \n\nEdgehancers automatically pull selected content to the CDN edge, ensuring pages render in under 50 ms for improved performance and SEO benefits.\n\nLearn more at https://uniform.dev","2023-07-20T07:54:21Z","004","https://i.ytimg.com/vi/qh_ekk7CfZw/maxresdefault.jpg","qh_ekk7CfZw",{"type":1132,"children":1184,"toc":1185},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1186},[],"content:3.videos:uniform:004-qh_ekk7CfZw.md","3.videos/uniform/004-qh_ekk7CfZw.md",{"_path":645,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":644,"description":1190,"date":1191,"position":1192,"image":1193,"videoId":1194,"body":1195,"_type":1137,"_id":1199,"_source":1139,"_file":1200,"_extension":1141},"When connecting external data to Uniform, once in a while you will encounter a list of items. Think about: the latest products, and best blog posts. If you want to show those on the page you'll have a list of items you have to loop over to be able to render them. \n\nLearn more at: https://uniform.dev","2023-07-20T07:54:27Z","005","https://i.ytimg.com/vi/ffWvyuyzEwU/maxresdefault.jpg","ffWvyuyzEwU",{"type":1132,"children":1196,"toc":1197},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1198},[],"content:3.videos:uniform:005-ffWvyuyzEwU.md","3.videos/uniform/005-ffWvyuyzEwU.md",{"_path":648,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":647,"description":1202,"date":1203,"position":1204,"image":1205,"videoId":1206,"body":1207,"_type":1137,"_id":1211,"_source":1139,"_file":1212,"_extension":1141},"Connecting external sources to Uniform design system components requires you to use data types. Uniform offers pre-built integration types (like Contentful, etc) or URL-based data types that offer REST APIs. From legacy to a custom microservice. Any source can be a data type and can be connected to design system component properties.\n\nLearn more at https://uniform.dev","2023-07-20T07:54:33Z","006","https://i.ytimg.com/vi/zbi8h6-fp5c/maxresdefault.jpg","zbi8h6-fp5c",{"type":1132,"children":1208,"toc":1209},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1210},[],"content:3.videos:uniform:006-zbi8h6-fp5c.md","3.videos/uniform/006-zbi8h6-fp5c.md",{"_path":651,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":650,"description":1214,"date":1215,"position":1216,"image":1217,"videoId":1218,"body":1219,"_type":1137,"_id":1223,"_source":1139,"_file":1224,"_extension":1141},"Components in uniform are highly flexible. Their properties are easy to change, some are stylistic and some are data-driven. To make it easy for content editors, Uniform has released component patterns. Patterns allow architects to create new entities of components that connect to specific data sources or with pre-defined stylistic attributes. They can add overrides to particular fields, so content editors have content management flexibility but do not need to handle complex data binding themselves.\n\nLearn more at https://uniform.dev","2023-07-20T07:54:41Z","007","https://i.ytimg.com/vi/MczGzArgIm8/maxresdefault.jpg","MczGzArgIm8",{"type":1132,"children":1220,"toc":1221},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1222},[],"content:3.videos:uniform:007-MczGzArgIm8.md","3.videos/uniform/007-MczGzArgIm8.md",{"_path":654,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":653,"description":1226,"date":1227,"position":1228,"image":1229,"videoId":1230,"body":1231,"_type":1137,"_id":1235,"_source":1139,"_file":1236,"_extension":1141},"This is Tim's conference talk for CityJS London. How to sniff out the glue-code monster. Learn about the various forms of glue code and how to avoid the technical-debt nightmare they cause.","2023-07-20T07:55:02Z","008","https://i.ytimg.com/vi/RARBrmxKh5I/maxresdefault.jpg","RARBrmxKh5I",{"type":1132,"children":1232,"toc":1233},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1234},[],"content:3.videos:uniform:008-RARBrmxKh5I.md","3.videos/uniform/008-RARBrmxKh5I.md",{"_path":657,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":656,"description":1238,"date":1239,"position":1240,"image":1241,"videoId":1242,"body":1243,"_type":1137,"_id":1247,"_source":1139,"_file":1248,"_extension":1141},"In this video @timbenniks shows how to get started with Visual Canvas, a feature that allows developers to implement agnostic, contextual, visual editing for content editors without having to annotate the source code with identifiers that tightly couple your components to an SDK.\n\nWant to know more? Visit https://uniform.dev or join us on Discord at: https://uniform.to/discord","2023-07-20T07:57:22Z","009","https://i.ytimg.com/vi/3UyYXnCpPd8/maxresdefault.jpg","3UyYXnCpPd8",{"type":1132,"children":1244,"toc":1245},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1246},[],"content:3.videos:uniform:009-3UyYXnCpPd8.md","3.videos/uniform/009-3UyYXnCpPd8.md",{"_path":660,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":659,"description":1250,"date":1251,"position":1252,"image":1253,"videoId":1254,"body":1255,"_type":1137,"_id":1259,"_source":1139,"_file":1260,"_extension":1141},"In this video @timbenniks shows you how to get started with Project Map and what type of SDK functions you can use to render a navigation or a sitemap for your website.\n\nWant to know more? Visit https://uniform.dev or join us on Discord at: https://uniform.to/discord","2023-07-20T07:57:29Z","010","https://i.ytimg.com/vi/KrCtdwmF9fg/maxresdefault.jpg","KrCtdwmF9fg",{"type":1132,"children":1256,"toc":1257},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1258},[],"content:3.videos:uniform:010-KrCtdwmF9fg.md","3.videos/uniform/010-KrCtdwmF9fg.md",{"_path":663,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":662,"description":1262,"date":1263,"position":1264,"image":1265,"videoId":1266,"body":1267,"_type":1137,"_id":1271,"_source":1139,"_file":1272,"_extension":1141},"This video explains why Uniform DXCP exists, and after that, it explains how to actually get started.\n\nJoin us on discord to ask your questions https://uniform.to/discord\n\n00:00 The why\n12:27 The how","2023-07-20T07:57:47Z","011","https://i.ytimg.com/vi/j0zQlcmTseQ/maxresdefault.jpg","j0zQlcmTseQ",{"type":1132,"children":1268,"toc":1269},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1270},[],"content:3.videos:uniform:011-j0zQlcmTseQ.md","3.videos/uniform/011-j0zQlcmTseQ.md",{"_path":666,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":665,"description":1274,"date":1275,"position":1276,"image":1277,"videoId":1278,"body":1279,"_type":1137,"_id":1283,"_source":1139,"_file":1284,"_extension":1141},"We’re delighted to release a major update to the Uniform + Algolia integration, which uses the power of Algolia search to accelerate and automate the creation of digital experiences - helping brands to create great apps and websites for marketing and commerce that drive conversions. \n\nTwo key features: Automated content or product suggestions based on search parameters in Algolia, easy to set up via the Uniform Visual editor.\nAnd create customized faceted search pages with instant search components from Algolia, and control how they are displayed in Uniform Canvas.\n\nWant to get started yourself? Check out this video: https://youtu.be/lfkshoNh3oc","2023-07-20T07:57:52Z","012","https://i.ytimg.com/vi/aOaQO3tlZpw/maxresdefault.jpg","aOaQO3tlZpw",{"type":1132,"children":1280,"toc":1281},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1282},[],"content:3.videos:uniform:012-aOaQO3tlZpw.md","3.videos/uniform/012-aOaQO3tlZpw.md",{"_path":669,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":668,"description":1286,"date":1287,"position":1288,"image":1289,"videoId":1290,"body":1291,"_type":1137,"_id":1295,"_source":1139,"_file":1296,"_extension":1141},"This video shows the steps to integrate Algolia with Uniform!","2023-07-20T07:57:59Z","013","https://i.ytimg.com/vi/lfkshoNh3oc/maxresdefault.jpg","lfkshoNh3oc",{"type":1132,"children":1292,"toc":1293},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1294},[],"content:3.videos:uniform:013-lfkshoNh3oc.md","3.videos/uniform/013-lfkshoNh3oc.md",{"_path":672,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":671,"description":1298,"date":1299,"position":1300,"image":1169,"videoId":1301,"body":1302,"_type":1137,"_id":1306,"_source":1139,"_file":1307,"_extension":1141},"See the possibilities for content creation and orchestration to empower marketers using the new version of Canvas. \nhttps://uniform.dev/dxc-assembly\n\nSession moderated by Richard Bausek, Principal Product Manager, Uniform and Tim Benniks, Principal Developer Advocate, Uniform.\nhttps://twitter.com/richardbausek\nhttps://www.linkedin.com/in/richard-bausek/\nhttps://twitter.com/timbenniks\nhttps://www.linkedin.com/in/timbenniks/\n\n\nJoin us on Discord at https://uniform.to/discord\n\nFollow us on:\nFacebook: https://www.facebook.com/people/Uniform/\nTwitter: https://twitter.com/UniformDev \nLinkedIn: https://www.linkedin.com/company/uniformdev/\nInstagram: https://www.instagram.com/uniform.dev/","2023-07-20T07:58:10Z","014","T3AVoBqVWPs",{"type":1132,"children":1303,"toc":1304},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1305},[],"content:3.videos:uniform:014-T3AVoBqVWPs.md","3.videos/uniform/014-T3AVoBqVWPs.md",{"_path":675,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":674,"description":1309,"date":1310,"position":1311,"image":1312,"videoId":1313,"body":1314,"_type":1137,"_id":1318,"_source":1139,"_file":1319,"_extension":1141},"Uniform's visual canvas editor offers content editors a flexible way to interact with an Algolia search index while it allows developers to connect to Algolia in any way they want. \n\nCheck out this video to see how magical the combination is.\n\nJoin us on Discord: https://uniform.to/discord","2023-07-20T07:58:31Z","015","https://i.ytimg.com/vi/z_41xOh9W1w/maxresdefault.jpg","z_41xOh9W1w",{"type":1132,"children":1315,"toc":1316},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1317},[],"content:3.videos:uniform:015-z_41xOh9W1w.md","3.videos/uniform/015-z_41xOh9W1w.md",{"_path":678,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":677,"description":1321,"date":1322,"position":1323,"image":1324,"videoId":1325,"body":1326,"_type":1137,"_id":1330,"_source":1139,"_file":1331,"_extension":1141},"In this video, Tim shows how Cloudinary integrates with Uniform as a headless DAM.\n\nhttps://docs.uniform.app/integrations/content/cloudinary\nhttps://uniform.to/discord\nhttps://cloudinary.com","2023-07-20T07:58:38Z","016","https://i.ytimg.com/vi/OQQJ-tU-urc/maxresdefault.jpg","OQQJ-tU-urc",{"type":1132,"children":1327,"toc":1328},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1329},[],"content:3.videos:uniform:016-OQQJ-tU-urc.md","3.videos/uniform/016-OQQJ-tU-urc.md",{"_path":681,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":680,"description":1333,"date":1334,"position":1335,"image":1336,"videoId":1337,"body":1338,"_type":1137,"_id":1342,"_source":1139,"_file":1343,"_extension":1141},"This is an alternative approach to using Markdown files with Nuxt 3 and the Nuxt Content module. Uniform allows developers and content editors to compose with different sources. Markdown is one of these sources. Want to do a POC of a personal site, but you don't want a CMS and the hassle of content modeling and an account? This is a great way to use your own tooling but still show off the composability approach of a modern stack.\n\nhttps://content.nuxtjs.org\nhttps://docs.uniform.app\n\nhttps://uniform.to/discord","2023-07-20T07:58:43Z","017","https://i.ytimg.com/vi/sY9xKQRXzk8/maxresdefault.jpg","sY9xKQRXzk8",{"type":1132,"children":1339,"toc":1340},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1341},[],"content:3.videos:uniform:017-sY9xKQRXzk8.md","3.videos/uniform/017-sY9xKQRXzk8.md",{"_path":684,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":683,"description":1345,"date":1346,"position":1347,"image":1169,"videoId":1348,"body":1349,"_type":1137,"_id":1353,"_source":1139,"_file":1354,"_extension":1141},"The Uniform CLI enables you to interact with Uniform from a command-line interface.\n\nIn this video, we go over how you can manage your component definitions and your compositions via the Uniform CLI. You can pull all data into a folder on your local machine to make some manual changes (or save all of it in git). \n\nYou can also push the data back to Uniform, making it easy to generate different environments for a project.\n\nThe documentation:\nhttps://docs.uniform.app/guides/tools/cli\nhttps://docs.uniform.app/reference/cli/canvas\n\nJoin our Discord server if you have questions:\nhttps://uniform.to/discord","2023-07-20T07:58:47Z","018","E-9YllTYkZk",{"type":1132,"children":1350,"toc":1351},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1352},[],"content:3.videos:uniform:018-E-9YllTYkZk.md","3.videos/uniform/018-E-9YllTYkZk.md",{"_path":687,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":686,"description":1356,"date":1357,"position":1358,"image":1359,"videoId":1360,"body":1361,"_type":1137,"_id":1365,"_source":1139,"_file":1366,"_extension":1141},"We are excited to announce that the Uniform SDK is ready for Vue 3 and Nuxt 3. Today's ever-expanding landscape of headless products demands that developers somehow connect them all. Wouldn't it be cool if you had one SDK that takes care of connecting up these different APIs? Uniform is a new category of product. It lets you take control of your stack, so creating composable architecture becomes a breeze! \n\nIt enables content editors to drag and drop content from headless sources to create page compositions. Without the help of developers, they can add or remove integrations, do an A/B test or personalize across multiple headless products. Want to change up your CMS? The front end stays the same. You can retrieve a page composition through an SDK function, query, and map data as you prefer, and pass it as props to your components. It works with SSG, SSR, Edge functions, and everything in between.\n\nBlog: https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3\nGet a free account: https://uniform.dev/free\nJoin our Discord: https://uniform.to/discord","2023-07-20T07:58:53Z","019","https://i.ytimg.com/vi/hKCXN_R0m54/maxresdefault.jpg","hKCXN_R0m54",{"type":1132,"children":1362,"toc":1363},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1364},[],"content:3.videos:uniform:019-hKCXN_R0m54.md","3.videos/uniform/019-hKCXN_R0m54.md",{"_path":690,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":689,"description":1368,"date":1369,"position":1370,"image":1371,"videoId":1372,"body":1373,"_type":1137,"_id":1377,"_source":1139,"_file":1378,"_extension":1141},"Uniform Canvas live preview has been built into the Uniform Nuxt module and utilizes Nuxt's native preview functionality. This video shows you how to set it up.\n\nWant to get started with Nuxt 3 and Uniform? \nhttps://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3\n\nDocs: https://docs.uniform.app/guides/composition/live-preview#nuxt-3\nGet a free account: https://uniform.dev/free\nJoin our Discord: https://uniform.to/discord\n\nMore info:\nWe are excited to announce that the Uniform SDK is ready for Vue 3 and Nuxt 3. Today's ever-expanding landscape of headless products demands that developers somehow connect them all. Wouldn't it be cool if you had one SDK that takes care of connecting up these different APIs? Uniform is a new category of product. It lets you take control of your stack, so creating composable architecture becomes a breeze! \n\nIt enables content editors to drag and drop content from headless sources to create page compositions. Without the help of developers, they can add or remove integrations, do an A/B test or personalize across multiple headless products. Want to change up your CMS? The front end stays the same. You can retrieve a page composition through an SDK function, query, and map data as you prefer, and pass it as props to your components. It works with SSG, SSR, Edge functions, and everything in between.","2023-07-20T07:58:58Z","020","https://i.ytimg.com/vi/U41OmxoadtQ/maxresdefault.jpg","U41OmxoadtQ",{"type":1132,"children":1374,"toc":1375},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1376},[],"content:3.videos:uniform:020-U41OmxoadtQ.md","3.videos/uniform/020-U41OmxoadtQ.md",{"_path":693,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":692,"description":1380,"date":1381,"position":1382,"image":1383,"videoId":1384,"body":1385,"_type":1137,"_id":1389,"_source":1139,"_file":1390,"_extension":1141},"Uniform won the Maturity award and the Audience Choice award at this year's MACHathon! The winning project from Rage against the MACHine was a composable accelerator for commerce sites. This video is a demo of how it works (and a bit about how we made it work). Here's why we built it: to allow businesses to spin up actually useable eCommerce websites with the click of one button. But how was it made? And why is it important that it was built with composability in mind and a MACH architecture? You can find out these and more details in the blog post we wrote on the subject: https://uniform.to/uniform-wins-MACH-awards","2023-07-20T07:59:03Z","021","https://i.ytimg.com/vi/h-l_nJ5Aojs/maxresdefault.jpg","h-l_nJ5Aojs",{"type":1132,"children":1386,"toc":1387},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1388},[],"content:3.videos:uniform:021-h-l_nJ5Aojs.md","3.videos/uniform/021-h-l_nJ5Aojs.md",{"_path":696,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":695,"description":1392,"date":1393,"position":1394,"image":1169,"videoId":1395,"body":1396,"_type":1137,"_id":1400,"_source":1139,"_file":1401,"_extension":1141},"In today’s digital landscape, data-driven experimentation has become the lynchpin of growth strategies. “Build, test, tear down and repeat” has become a mantra for businesses focused on product-led growth and customer acquisition loops. With a composable architecture based on MACH principles, businesses have the essential pieces in place to apply growth principles to the very brands they put in front of customers.\n\nBy both removing the technical barriers that slow down the launch of a consistent, repeatable stack and adopting an architecture that allows for an ultra-flexible approach to front-end component design, forward-thinking companies can hyper-target sub-brands, audience segments, global regions, verticals, or product categories - without starting from scratch every time a new site needs to be built. While much of the content may be the same as the master brand site, companies can build a site to support a specific play, test its performance with the target audience, tear it down and repeat.\n\nScaffolding composable stacks need to be more accessible to all stakeholders and not just a tech team.\n\nWhat it does\n\nFor our MACHathon Accelerate entry, team \"Rage against the MACHine\" has collaborated to deliver a next-gen MVP for a “composable commerce stack accelerator” based on Uniform experience orchestration, a BigCommerce headless commerce, and Contentstack headless CMS. This software offers the ability to scaffold new stacks easily as a business user, test performance, tear them down, then repeat.","2023-07-20T07:59:11Z","022","w4PPzyuCoWM",{"type":1132,"children":1397,"toc":1398},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1399},[],"content:3.videos:uniform:022-w4PPzyuCoWM.md","3.videos/uniform/022-w4PPzyuCoWM.md",{"_path":699,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":698,"description":1403,"date":1404,"position":1405,"image":1406,"videoId":1407,"body":1408,"_type":1137,"_id":1412,"_source":1139,"_file":1413,"_extension":1141},"In this Video @timbenniks shows blazing fast #personalization with Uniform and Clearbit on his #jamstack site. \n\nUniform Context delivers sophisticated personalization without sacrificing page performance or scalability. Couple this with Clearbit, the leading data activation platform, and you get magic.\n\nWant to know more? Join the Uniform discord here: https://uniform.to/discord","2023-07-20T07:59:18Z","023","https://i.ytimg.com/vi/IB6DglGF7uc/maxresdefault.jpg","IB6DglGF7uc",{"type":1132,"children":1409,"toc":1410},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1411},[],"content:3.videos:uniform:023-IB6DglGF7uc.md","3.videos/uniform/023-IB6DglGF7uc.md",{"_path":702,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":701,"description":1415,"date":1416,"position":1417,"image":1418,"videoId":1419,"body":1420,"_type":1137,"_id":1424,"_source":1139,"_file":1425,"_extension":1141},"In this video Tims shows how to compose pages using multiple sources with Uniform Canvas. In composed architectures data comes in from many different places and while developers love this, content editors tend to struggle. Uniform workflow solves these issues and makes all stakeholders friends again!\n\nIn this video we use Contentful, BigCommerce, and Cloudinary.","2023-07-20T07:59:23Z","024","https://i.ytimg.com/vi/4XyKmRzO8HA/maxresdefault.jpg","4XyKmRzO8HA",{"type":1132,"children":1421,"toc":1422},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1423},[],"content:3.videos:uniform:024-4XyKmRzO8HA.md","3.videos/uniform/024-4XyKmRzO8HA.md",{"_path":705,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":704,"description":1427,"date":1428,"position":1429,"image":1430,"videoId":1431,"body":1432,"_type":1137,"_id":1436,"_source":1139,"_file":1437,"_extension":1141},"Article here: https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g\n\nIn modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire.\n\nIn this video:\nYou will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech.\n\n1. Use the Jamstack with your favourite framework and host on your favourite CDN.\n2. Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers.\n\nCombining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future.","2023-07-20T07:59:28Z","025","https://i.ytimg.com/vi/4TuixEx-iwk/maxresdefault.jpg","4TuixEx-iwk",{"type":1132,"children":1433,"toc":1434},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1435},[],"content:3.videos:uniform:025-4TuixEx-iwk.md","3.videos/uniform/025-4TuixEx-iwk.md",{"_path":708,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":707,"description":1439,"date":1440,"position":1441,"image":1442,"videoId":1443,"body":1444,"_type":1137,"_id":1448,"_source":1139,"_file":1449,"_extension":1141},"When deploying anything other than a simple POC or personal website, a reliable application will need Environments. What is the right pattern for implementing environments for local developers as well as shared ones like staging and production?\n\nLet's look at how Uniform separates your configuration and content. Then look at how we can migrate both to new higher environments as a feature progresses through its software development workflow.","2023-07-20T07:59:33Z","026","https://i.ytimg.com/vi/9q_1wZX_KjU/maxresdefault.jpg","9q_1wZX_KjU",{"type":1132,"children":1445,"toc":1446},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1447},[],"content:3.videos:uniform:026-9q_1wZX_KjU.md","3.videos/uniform/026-9q_1wZX_KjU.md",{"_path":711,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":710,"description":1451,"date":1452,"position":1453,"image":1454,"videoId":1455,"body":1456,"_type":1137,"_id":1460,"_source":1139,"_file":1461,"_extension":1141},"By customizing content for visitors, merchants and marketers can improve conversion rates and improve UX by presenting more relevant offers. Join Principal Developer Advocate Tim Benniks and Principal Sales Engineer Tony Mamedbekovfor a conversation about how you can use geo-IP localization to select the right content from a CMS and then present it to a user. You’ll also see them implement the solution using Uniform and Contentful.","2023-07-20T07:59:39Z","027","https://i.ytimg.com/vi/MYJ-IlD_rxk/maxresdefault.jpg","MYJ-IlD_rxk",{"type":1132,"children":1457,"toc":1458},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1459},[],"content:3.videos:uniform:027-MYJ-IlD_rxk.md","3.videos/uniform/027-MYJ-IlD_rxk.md",{"_path":714,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":713,"description":1463,"date":1464,"position":1465,"image":1466,"videoId":1467,"body":1468,"_type":1137,"_id":1472,"_source":1139,"_file":1473,"_extension":1141},"Building a composable DXP doesn't have to be out of reach for companies just beginning their digital journey. Join Uniform's principal developer advocate Tim Benniks to see how you can start easily -- and at no cost -- by using free plans from major vendors. \n\nTim shows you how to use Uniform to turn Contentful, BigCommerce, NextJS and Vercel into a powerful, agile platform for digital delivery. And once you set it up, nontechnical users can use Uniform Canvas to create, launch and iterate digital experiences without coming back to the dev team.","2023-07-20T07:59:44Z","028","https://i.ytimg.com/vi/jdl4A64kLrg/maxresdefault.jpg","jdl4A64kLrg",{"type":1132,"children":1469,"toc":1470},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1471},[],"content:3.videos:uniform:028-jdl4A64kLrg.md","3.videos/uniform/028-jdl4A64kLrg.md",{"_path":717,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":716,"description":1475,"date":1476,"position":1477,"image":1478,"videoId":1479,"body":1480,"_type":1137,"_id":1484,"_source":1139,"_file":1485,"_extension":1141},"This week we are showing off the ability to personalize parts of a website and A/B test using Uniform Canvas, Tailwind.ui and Next.js","2023-07-20T07:59:48Z","029","https://i.ytimg.com/vi/FEvAiVAS-yE/maxresdefault.jpg","FEvAiVAS-yE",{"type":1132,"children":1481,"toc":1482},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1483},[],"content:3.videos:uniform:029-FEvAiVAS-yE.md","3.videos/uniform/029-FEvAiVAS-yE.md",{"_path":720,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":719,"description":1487,"date":1488,"position":1489,"image":1490,"videoId":1491,"body":1492,"_type":1137,"_id":1496,"_source":1139,"_file":1497,"_extension":1141},"Uniform is now available on the BigCommerce Headless Edition marketplace! Join us to see how you can use Uniform to connect BigCommerce with a headless CMS like Contentful and front-end components from TailwindUI.\n\nThe result? An agile approach to eCommerce that allows your business users to quickly and easily create beautiful pages without a developer or coding. And Uniform allows you to add personalization to your site with built-in preview, so you can see how your store will look and behave for different audiences. Build better user experiences and increase conversions by showing your shoppers what they're most interested in.\n\nWant to talk to us about how Uniform can help you take your store to the next level? Sign up for a demo here: https://uniform.dev/demo","2023-07-20T07:59:54Z","030","https://i.ytimg.com/vi/_8gh9OYcsus/maxresdefault.jpg","_8gh9OYcsus",{"type":1132,"children":1493,"toc":1494},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1495},[],"content:3.videos:uniform:030-_8gh9OYcsus.md","3.videos/uniform/030-_8gh9OYcsus.md",{"_path":723,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":722,"description":1499,"date":1500,"position":1501,"image":1502,"videoId":1503,"body":1504,"_type":1137,"_id":1508,"_source":1139,"_file":1509,"_extension":1141},"Uniform is excited about some new features for Contentful headless CMS users - check out this video to see these in action:\n\nMulti-space support\nContentful customers can now connect Uniform components to any space (or environment) in their account. This means that once developers wire up components to various spaces, business users can easily use our no-code editor to build experiences without needing to understand where content is coming from. The final page will present *ahem* a Uniform experience for end users. Of course, you can run A/B tests and personalization on every component too. And a bonus - this works at the environment level too, so components can even pull from specific space environments.\nRead the documentation here: https://docs.uniform.app/canvas/tutorials/add-contentful/#connecting-to-multiple-contentful-spaces\n\nIntroducing patterns\nBuilding digital experiences at scale can be repetitive and eat up development time. We’ve added patterns - a way to share a component (which could also contain other components) between multiple compositions. For example, you could use a pattern to share a legal disclaimer, news release author bio, or standard global header across many compositions. These can also be revised once added to a composition, so developers can accelerate build times when designing large sites.\nRead the documentation here: https://docs.uniform.app/canvas/tutorials/patterns\n\nLocalization for global marketing and ecommerce\nUniform components and compositions can now be localized. In addition to localizing content inside Contentful, users can now localize front-end components inside Uniform - giving users more flexibility when it comes to adopting a localization strategy. Both devs and business users get full flexibility with the ability to localize at any level - composition, component, and content.","2023-07-20T07:59:59Z","031","https://i.ytimg.com/vi/vVLWWOnsQE8/maxresdefault.jpg","vVLWWOnsQE8",{"type":1132,"children":1505,"toc":1506},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1507},[],"content:3.videos:uniform:031-vVLWWOnsQE8.md","3.videos/uniform/031-vVLWWOnsQE8.md",{"_path":726,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":725,"description":1487,"date":1511,"position":1512,"image":1513,"videoId":1514,"body":1515,"_type":1137,"_id":1519,"_source":1139,"_file":1520,"_extension":1141},"2023-07-20T08:00:04Z","032","https://i.ytimg.com/vi/EvMwLFHV8wc/maxresdefault.jpg","EvMwLFHV8wc",{"type":1132,"children":1516,"toc":1517},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1518},[],"content:3.videos:uniform:032-EvMwLFHV8wc.md","3.videos/uniform/032-EvMwLFHV8wc.md",{"_path":729,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":728,"description":1125,"date":1522,"position":1523,"image":1524,"videoId":1525,"body":1526,"_type":1137,"_id":1530,"_source":1139,"_file":1531,"_extension":1141},"2023-07-20T08:00:18Z","033","https://i.ytimg.com/vi/jJwWWr9UiXo/maxresdefault.jpg","jJwWWr9UiXo",{"type":1132,"children":1527,"toc":1528},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1529},[],"content:3.videos:uniform:033-jJwWWr9UiXo.md","3.videos/uniform/033-jJwWWr9UiXo.md",{"_path":732,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":731,"description":1125,"date":1533,"position":1534,"image":1535,"videoId":1536,"body":1537,"_type":1137,"_id":1541,"_source":1139,"_file":1542,"_extension":1141},"2023-07-20T08:00:22Z","034","https://i.ytimg.com/vi/GWBkr9uT5-w/maxresdefault.jpg","GWBkr9uT5-w",{"type":1132,"children":1538,"toc":1539},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1540},[],"content:3.videos:uniform:034-GWBkr9uT5-w.md","3.videos/uniform/034-GWBkr9uT5-w.md",{"_path":735,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":734,"description":1125,"date":1544,"position":1545,"image":1546,"videoId":1547,"body":1548,"_type":1137,"_id":1552,"_source":1139,"_file":1553,"_extension":1141},"2023-07-20T08:00:27Z","035","https://i.ytimg.com/vi/0GP_Yf4Fvo8/maxresdefault.jpg","0GP_Yf4Fvo8",{"type":1132,"children":1549,"toc":1550},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1551},[],"content:3.videos:uniform:035-0GP_Yf4Fvo8.md","3.videos/uniform/035-0GP_Yf4Fvo8.md",{"_path":738,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":737,"description":1555,"date":1556,"position":1557,"image":1558,"videoId":1559,"body":1560,"_type":1137,"_id":1564,"_source":1139,"_file":1565,"_extension":1141},"In this video we'll be discussing the basic technical approaches of personalization. By the end you'll know why Uniform's approach is highly scalable and easy to use. Ready to dive in?","2023-07-20T08:00:32Z","036","https://i.ytimg.com/vi/_TKrRQdsoLk/maxresdefault.jpg","_TKrRQdsoLk",{"type":1132,"children":1561,"toc":1562},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1563},[],"content:3.videos:uniform:036-_TKrRQdsoLk.md","3.videos/uniform/036-_TKrRQdsoLk.md",{"_path":741,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":740,"description":1567,"date":1568,"position":1569,"image":1570,"videoId":1571,"body":1572,"_type":1137,"_id":1576,"_source":1139,"_file":1577,"_extension":1141},"See more at: https://uniform.to/zzkFwx\n\nIn recent years we've seen a lot of change in how enterprises use digital experiences to drive customer engagement and e-commerce.\n\nAlong with an explosion of infrastructure and tech stack options, decoupling from monolithic suites has offered more flexibility than ever.\n\nBut, traversing the headless landscape and orchestrating it into a cohesive architecture can present challenges, particularly as the number of business-critical tools behind great experiences continues to change and grow over time.\n\nToo often, that means that businesses need more and more developer expertise to tell their stories. And this at a time when developers are in short supply.\n\nContent editors and marketers are left struggling to keep up and frustrated by a lack of control they may have enjoyed with traditional suites.\n\nThat's why we're excited to announce Uniform, the world’s first truly composable DXP.\nAs a frictionless, composable digital experience platform, Uniform gives companies the power of choice to continuously adopt new tech without ever re-platforming.\n\nFront and center is the power of choice. Choose your own headless sources, your own tech stack and your own hosting. You can connect CMS, CRM and Commerce platforms with ease.\n\nUniform is completely opinion-less and therefore offers true composability. Not one integration is the center of the universe and all parts are equal. It acts as a platform to orchestrate both traditional and headless sources without telling marketers or developers what to do. Yes, you can even treat select monolithic systems like Sitecore as a headless source in Uniform.\n\nAnd with Uniform Canvas, you get powerful no-code tools to allow marketers to retain control over composition, personalization, A/B testing and managing brand experiences without developer support.\n\nUniform Canvas allows business users to seamlessly create engaging experiences based on a multitude of headless and legacy sources without concern for which systems that data is coming from, with instant preview allowing them to understand how changes impact a finished experience. Even when their tech stack changes over time.\n\nUniform ensures your team can continue to deliver incredible experiences as your architecture evolves. After all, change is the only constant. Super fast site performance, enterprise-grade security and great Core Web Vitals is only the beginning. Start telling your story now with Uniform.","2023-07-20T08:00:50Z","037","https://i.ytimg.com/vi/Pt1p8ixie-k/maxresdefault.jpg","Pt1p8ixie-k",{"type":1132,"children":1573,"toc":1574},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1575},[],"content:3.videos:uniform:037-Pt1p8ixie-k.md","3.videos/uniform/037-Pt1p8ixie-k.md",{"_path":744,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":743,"description":1579,"date":1580,"position":1581,"image":1582,"videoId":1583,"body":1584,"_type":1137,"_id":1588,"_source":1139,"_file":1589,"_extension":1141},"See more at: https://uniform.to/zzkFwx\n\nIn an ever expanding landscape of headless sources, developers are often the ones who have to connect them all. \n\nThe question of adding some products, content and personalization on one landing page always comes at a time developers are busy. The answer is generally “no” or a forced “yes, I’ll try to squeeze it in this week”.\n\nWouldn't it be cool if you only had to implement one SDK in your framework of choice and you never had to bother with this stuff again? This sounds too good to be true right? Let’s discuss what this SDK would look like.\n\nIt would allow content editors to drag and drop content from different headless sources to their heart’s content. They could add or remove integrations and even do an A/B test or add some personalization without having to wait for developers.\n\nIf the headless sources change, it would still work exactly the same way on the other end. Retrieve a page composition through an SDK function, map and enhance data to your liking and pass it as props to existing components. Regardless of tech stack, it would just work.\n\nI’m here to tell you we’ve actually built this. We proudly introduce Uniform, the world’s first truly composable DXP. The only DXP that gives developers the power of choice: from front-end framework to CDN to hosting as SSR, Jamstack, with Edge workers, partial SSG, anything goes.\n\nUniform offers a platform without opinion, without vendor lock-in and without a restricting roadmap. Not one integration is the center of the universe and nothing is tightly coupled.\nWant three different CMS systems and two commerce engines? Why not? Add an integration, query the data and map it to props for your components to use.\n\nNext to true composability regardless of tech stack, we’ve also introduced Uniform Canvas, a no-code composition builder that allows non-technical users to create experiences based on the components you define.\n\nUniform Canvas also provides a preview API with websockets, so end users can preview their composition live and in the actual codebase of the final product.\n\nUniform comes with an extremely flexible data enhancer API to help you map data from headless sources into your app. This API can run in your codebase or as an external service. We don’t care. Everything is built with flexibility in mind. You have the power of choice at your side.\n\nWe at Uniform know happy developers do better work. Good DX and great SDKs are just the beginning. With Uniform you can connect all the dots the way you like from a tech perspective. With a combination of out of the box tools for a fast time to market, and a set of APIs that allow extreme precision, we have created the world’s first truly composable DXP that will make both developers and content editors happy.","2023-07-20T08:00:56Z","038","https://i.ytimg.com/vi/jUL6H-3wrnQ/maxresdefault.jpg","jUL6H-3wrnQ",{"type":1132,"children":1585,"toc":1586},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1587},[],"content:3.videos:uniform:038-jUL6H-3wrnQ.md","3.videos/uniform/038-jUL6H-3wrnQ.md",{"_path":747,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":746,"description":1591,"date":1592,"position":1593,"image":1594,"videoId":1595,"body":1596,"_type":1137,"_id":1600,"_source":1139,"_file":1601,"_extension":1141},"See more here: https://uniform.dev\n\nIn this video we will discuss why #Jamstack is so important for the future of DXPs.\n\nNowadays the general consensus is that Jamstack is the way to go. The modern web is origin-less and Jamstack allows us to make that happen.\n\nStatic sites allow for easy scaling. They also score high core web vitals due to extremely fast TTFB and the use of modern web frameworks such as Next and Nuxt. API calls and data mapping happen at build time so at runtime nothing time consuming has to happen.\n\nStill need dynamic stuff for personalization, A/B testing, product catalogs or user logins? Use CDN edge workers or #serverless functions that run on the same CDN instance as the site so they are blazing fast and close to the end user.\n\nFor the business users among you: Highly performant web pages lead to higher conversion rates and better SEO. They also scale without issue during the black Friday peak.\n\nFor the developers among you: Jamstack sites allow developers to choose their stack freely as the end result is a static site. Jamstack sites do not have an opinion of how they are build and where they run. They offer the #powerofchoice for developers.","2023-07-20T08:01:01Z","039","https://i.ytimg.com/vi/PDEKgEzhFfI/maxresdefault.jpg","PDEKgEzhFfI",{"type":1132,"children":1597,"toc":1598},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1599},[],"content:3.videos:uniform:039-PDEKgEzhFfI.md","3.videos/uniform/039-PDEKgEzhFfI.md",{"_path":750,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":749,"description":1603,"date":1604,"position":1605,"image":1606,"videoId":1607,"body":1608,"_type":1137,"_id":1612,"_source":1139,"_file":1613,"_extension":1141},"The modern DXP is a group of headless tools connected to each other. This arrangement leaves content editors and marketers frustrated as they need to ask developers to connect services together to create a simple page.\n\nHow do we solve this? We need a low-code or no-code platform that allows content editors to easily compose pages from different headless sources with minimal developer involvement, But at the same time, developers need to love working with this platform, they need the flexibility and the #powerofchoice to choose their tech stack and anything else in the front-end.","2023-07-20T08:01:06Z","040","https://i.ytimg.com/vi/IAaBBJFIiRo/maxresdefault.jpg","IAaBBJFIiRo",{"type":1132,"children":1609,"toc":1610},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1611},[],"content:3.videos:uniform:040-IAaBBJFIiRo.md","3.videos/uniform/040-IAaBBJFIiRo.md",{"_path":753,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":752,"description":1615,"date":1616,"position":1617,"image":1618,"videoId":1619,"body":1620,"_type":1137,"_id":1624,"_source":1139,"_file":1625,"_extension":1141},"In this video we will discuss what true #composability is in the context of #DXP.\nNowadays, business leaders and developers are demanding freedom of choice across the board. And this puts traditional suite vendors in a state of chaos.They are trying to change the way they work while still staying mindful of the past 10 years of marketing the \"suite\" approach.\n\nThey are literally buying companies to try to create the feeling of composability while in fact they are only allowing you to compose with the components in their suite offering. You can't coin a term like composable DXP if you do not offer real flexibility.\n\nCustomers will still suffer from vendor lock-in, complex upgrade roadmaps and lot's of work to customize anything in the system. We've seen a huge explosion in digital experience tools over the past ten years, and the market is only moving faster. The tools you have today won't be the same tools you're using in 6 months time, or 2 years' time.\n\nTrue composability is the #powerofchoice in EVERYTHING. From Tech stack to hosting, CMS, media management, marketing tools, CDN, analytics, whatever.\n\nWe need an opinion-less platform in which nobody is the centre of the universe. A platform where all elements are equal and that offers flexibility and extendability whenever needed. Never re-platform again. Just switch out integrations.\n\nA truly composable DXP offers Freedom of choice in everything but with painkillers for orchestration and content composing.","2023-07-20T08:01:11Z","041","https://i.ytimg.com/vi/fo9cop0zNT0/maxresdefault.jpg","fo9cop0zNT0",{"type":1132,"children":1621,"toc":1622},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1623},[],"content:3.videos:uniform:041-fo9cop0zNT0.md","3.videos/uniform/041-fo9cop0zNT0.md",{"_path":756,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":755,"description":1627,"date":1628,"position":1629,"image":1630,"videoId":1631,"body":1632,"_type":1137,"_id":1636,"_source":1139,"_file":1637,"_extension":1141},"No more comparison of which framework is better, Vue and React can work together in the same app. We're back with another episode of #Jamstack Fridays where Tony and Tim explore #Astro and what this new kid on the block means for modern web development.","2023-07-20T08:01:20Z","042","https://i.ytimg.com/vi/sUrxtZA2sA0/maxresdefault.jpg","sUrxtZA2sA0",{"type":1132,"children":1633,"toc":1634},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1635},[],"content:3.videos:uniform:042-sUrxtZA2sA0.md","3.videos/uniform/042-sUrxtZA2sA0.md",{"_path":759,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":758,"description":1639,"date":1640,"position":1641,"image":1642,"videoId":1643,"body":1644,"_type":1137,"_id":1648,"_source":1139,"_file":1649,"_extension":1141},"Getting started with Uniform for your MACHathon project.\nTim and Christian help you get started with Uniform for your MACHathon project. Understand and see the basics of API first driven personalization with Uniform.\n\nhttps://uniform.dev\nhttps://docs.uniform.app\nhttps://twitter.com/timbenniks\nhttps://twitter.com/uniformdev","2023-07-20T08:01:39Z","043","https://i.ytimg.com/vi/woNTID8zkf0/maxresdefault.jpg","woNTID8zkf0",{"type":1132,"children":1645,"toc":1646},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1647},[],"content:3.videos:uniform:043-woNTID8zkf0.md","3.videos/uniform/043-woNTID8zkf0.md",{"_path":762,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":761,"description":1651,"date":1652,"position":1653,"image":1654,"videoId":1655,"body":1656,"_type":1137,"_id":1660,"_source":1139,"_file":1661,"_extension":1141},"Uniform and Kentico Kontent have recently partnered and we received a lovely and mysterious package from the Kontent team. \n\nSee how excited Tim is to open it!\n\nhttps://uniform.dev/uniform-for-kontent","2023-07-20T08:01:45Z","044","https://i.ytimg.com/vi/fngYHAaOgqc/maxresdefault.jpg","fngYHAaOgqc",{"type":1132,"children":1657,"toc":1658},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1659},[],"content:3.videos:uniform:044-fngYHAaOgqc.md","3.videos/uniform/044-fngYHAaOgqc.md",{"_path":765,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":764,"description":1663,"date":1664,"position":1665,"image":1666,"videoId":1667,"body":1668,"_type":1137,"_id":1672,"_source":1139,"_file":1673,"_extension":1141},"Uniform for Sitecore helps Sitecore customers to achieve the performance, scalability, cost and security benefits of the modern web without requiring expensive, risk and time-consuming upgrades.\n\nUniform for Sitecore offers two capabilities: Deploy and Optimize. These capabilities can be used separately or together.\n\nNew features for Uniform For Sitecore:\n* Edge-based personalization and decoupled tracking is available in Uniform Optimize.\n* Fully integrated incremental cache purge for Akamai (using Fast Purge) into the Sitecore publishing process.\n* Fully integrated incremental cache purge for Cloudflare into the Sitecore publishing process.\n\nImprovements:\n* Support for Sitecore JSS 16.\n* Ability to configure warnings that are shown to content authors when they try to make changes that once published will trigger full site redeployment.\n* New re-sync page and check page data buttons are added to facilitate in development and troubleshooting.\n* Item-based configuration has 'enabled' checkbox for temporary disabling services that were configured either via the item-configuration or even file-based config.\n* npm package dependencies updated across the board.\n* Improved content and media sync performance.\n* \"none\" publish target is now different from \"fake\" (\"none\" used to be an alias for \"fake\") and throws exceptions to remind that publish target needs to be configured.\n\nhttps://docs.uniform.dev/sitecore/\nhttps://uniform.dev/sign-up\nhttps://twitter.com/timbenniks","2023-07-20T08:01:50Z","045","https://i.ytimg.com/vi/Itk9sgW0N7U/maxresdefault.jpg","Itk9sgW0N7U",{"type":1132,"children":1669,"toc":1670},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1671},[],"content:3.videos:uniform:045-Itk9sgW0N7U.md","3.videos/uniform/045-Itk9sgW0N7U.md",{"_path":768,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":767,"description":1675,"date":1676,"position":1677,"image":1678,"videoId":1679,"body":1680,"_type":1137,"_id":1684,"_source":1139,"_file":1685,"_extension":1141},"Tim from Uniform shows how to integrate Uniform Optimize #personalization into the Kentico Kontent CMS.\n\nFeel free to reach out directly on Twitter at: @unformDev or @timbenniks\nThe docs: https://docs.uniform.app/optimize/dev/content-management/kontent/getting-started\nThe starter kit: https://github.com/uniformdev/uniform-optimize-next-kontent-starter","2023-07-20T08:01:55Z","046","https://i.ytimg.com/vi/HDUPeGqtjrM/maxresdefault.jpg","HDUPeGqtjrM",{"type":1132,"children":1681,"toc":1682},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1683},[],"content:3.videos:uniform:046-HDUPeGqtjrM.md","3.videos/uniform/046-HDUPeGqtjrM.md",{"_path":771,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":770,"description":1687,"date":1688,"position":1689,"image":1690,"videoId":1691,"body":1692,"_type":1137,"_id":1696,"_source":1139,"_file":1697,"_extension":1141},"We're back with another episode of #Jamstack Fridays where Tony shows @timbenniks how he connected Google #Oauth login with Firebase in #Nextjs with the Next Auth plugin.\n\nhttps://github.com/tmamedbekov/nextjs-nextauth\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:01:59Z","047","https://i.ytimg.com/vi/6jkEkHxmmAQ/maxresdefault.jpg","6jkEkHxmmAQ",{"type":1132,"children":1693,"toc":1694},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1695},[],"content:3.videos:uniform:047-6jkEkHxmmAQ.md","3.videos/uniform/047-6jkEkHxmmAQ.md",{"_path":774,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":773,"description":1699,"date":1700,"position":1701,"image":1702,"videoId":1703,"body":1704,"_type":1137,"_id":1708,"_source":1139,"_file":1709,"_extension":1141},"We’re back with another episode of #Jamstack Fridays where Tony shows @timbenniks how he connected Netlify Forms, Google Sheets and #Next.js for some #serverless goodness.\n\nhttps://github.com/tmamedbekov/netlify-forms-nextjs\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:05Z","048","https://i.ytimg.com/vi/H3y_jNBTroM/maxresdefault.jpg","H3y_jNBTroM",{"type":1132,"children":1705,"toc":1706},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1707},[],"content:3.videos:uniform:048-H3y_jNBTroM.md","3.videos/uniform/048-H3y_jNBTroM.md",{"_path":777,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":776,"description":1711,"date":1712,"position":1713,"image":1714,"videoId":1715,"body":1716,"_type":1137,"_id":1720,"_source":1139,"_file":1721,"_extension":1141},"In this episode Tony shares recent news from the Jamstack world.\n\nNews items: \nContentstack, Uniform and Epam event: https://info.contentstack.com/personalization-developer-workshop-uniform-05-26-2021.html\nFeaturepeek: https://www.netlify.com/blog/2021/05/19/next-generation-deploy-previews-plus-netlify-acquires-featurepeek/\nWebcontainers: https://blog.stackblitz.com/posts/introducing-webcontainers/\nNext JS Conf: https://nextjs.org/conf\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:10Z","049","https://i.ytimg.com/vi/Xr8Eo9G6bPs/maxresdefault.jpg","Xr8Eo9G6bPs",{"type":1132,"children":1717,"toc":1718},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1719},[],"content:3.videos:uniform:049-Xr8Eo9G6bPs.md","3.videos/uniform/049-Xr8Eo9G6bPs.md",{"_path":780,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":779,"description":1723,"date":1724,"position":1725,"image":1726,"videoId":1727,"body":1728,"_type":1137,"_id":1732,"_source":1139,"_file":1733,"_extension":1141},"In this episode Tony and Tim explore how you can scaffold a #Next.js Jamstack website with #Contentstack and dynamic personalisation by #Uniform in 10 minutes.\n\nWant to try this yourself? Go here: https://uniform.app\n\nTony shares news from the Jamstack world\nNotion API: https://developers.notion.com/\nGatsby 3.5: https://www.gatsbyjs.com/docs/reference/release-notes/v3.5/\nSanity Exchange: https://www.sanity.io/exchange\nNode 14.7: https://nodejs.org/en/blog/release/v14.17.0/\nNetlify: https://www.netlify.com/blog/2021/05/06/now-available-configure-build-plugins-by-deploy-context/\nCloudfront Functions: https://aws.amazon.com/about-aws/whats-new/2021/05/cloudfront-functions/\nOptimize Vitals: https://web.dev/optimize-vitals-lighthouse/\nSimple Login: https://simplelogin.io/\n\nTimestamps\n00:00 Introduction\n00:24 News: Notion API\n01:13 News: Gatsby v3.5\n01:49 News: Sanity Exchange\n02:20 News: Node v14.17 LTS\n02:57 News: Netlify Build plugins\n04:03 News: Amazon Edge compute\n04:36 News: Core Web Vitals\n05:14 News: Simple Login\n05:52 Setting up Next.js with Contentstack for p13n\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:15Z","050","https://i.ytimg.com/vi/4EepxPO9iqc/maxresdefault.jpg","4EepxPO9iqc",{"type":1132,"children":1729,"toc":1730},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1731},[],"content:3.videos:uniform:050-4EepxPO9iqc.md","3.videos/uniform/050-4EepxPO9iqc.md",{"_path":783,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":782,"description":1735,"date":1736,"position":1737,"image":1738,"videoId":1739,"body":1740,"_type":1137,"_id":1744,"_source":1139,"_file":1745,"_extension":1141},"In this episode Tony shares recent news from the Jamstack world.\n\nNews items: \nhttps://nextjs.org/blog/next-10-2\nhttps://www.gatsbyjs.com/solutions/shopify\nhttps://vercel.com/changelog/surfacing-the-environment-of-deployments-and-domains\nhttps://www.sanity.io/changelog?platforms=Studio#change-b5752bd2-159f-4dd3-9611-bc8bce42f8c2\nhttps://mantine.dev/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:19Z","051","https://i.ytimg.com/vi/fDouNaPTtFY/maxresdefault.jpg","fDouNaPTtFY",{"type":1132,"children":1741,"toc":1742},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1743},[],"content:3.videos:uniform:051-fDouNaPTtFY.md","3.videos/uniform/051-fDouNaPTtFY.md",{"_path":786,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":785,"description":1747,"date":1748,"position":1749,"image":1750,"videoId":1751,"body":1752,"_type":1137,"_id":1756,"_source":1139,"_file":1757,"_extension":1141},"In this product meet up Lars and Tim take personalization for #Jamstack websites to the next level. They discuss negative signals, overrides, thresholds and enrichments.\n\nWant to learn how to do #personalization on your website? Check this video. It has a wealth of information.\n\nRequest a demo here: https://uniform.dev/sign-up\n\nTimestamps:\n00:00 Introduction\n01:21 Personalization basics: intents & signals\n15:09 Negative Signals\n22:06 Overriding Signals\n26:28 Thresholds\n34:21 Enrichments\n41:46 Conclusions","2023-07-20T08:02:24Z","052","https://i.ytimg.com/vi/gSey28saQac/maxresdefault.jpg","gSey28saQac",{"type":1132,"children":1753,"toc":1754},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1755},[],"content:3.videos:uniform:052-gSey28saQac.md","3.videos/uniform/052-gSey28saQac.md",{"_path":789,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":788,"description":1759,"date":1760,"position":1761,"image":1762,"videoId":1763,"body":1764,"_type":1137,"_id":1768,"_source":1139,"_file":1769,"_extension":1141},"It's Friday again! Tony and Tim discuss the news, they recap the Vue Storefront Summit and they dive into performance and personalization of Jamstack wesbites.\n\nNews:\nhttps://blog.tailwindcss.com/tailwind-ui-now-with-react-and-vue-support\nhttps://www.netlify.com/blog/2021/04/14/faster-builds-for-large-sites-on-netlify-with-on-demand-builders-now-in-early-access/\nhttps://blog.cloudflare.com/announcing-cloudflare-images-beta/\nhttps://strapi.io/blog/announcing-content-internationalization-v3-6\nhttps://trekhleb.dev/blog/2021/content-aware-image-resizing-in-javascript/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:29Z","053","https://i.ytimg.com/vi/R2YGBT1TO4s/maxresdefault.jpg","R2YGBT1TO4s",{"type":1132,"children":1765,"toc":1766},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1767},[],"content:3.videos:uniform:053-R2YGBT1TO4s.md","3.videos/uniform/053-R2YGBT1TO4s.md",{"_path":792,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":791,"description":1771,"date":1772,"position":1773,"image":1774,"videoId":1775,"body":1776,"_type":1137,"_id":1780,"_source":1139,"_file":1781,"_extension":1141},"Join Tony and @timbenniks at another episode of Jamstack Fridays with T&T. This week the guys are discussing how to break #Jamstack #architecture cliches and they show an out-of-the box architecture for some Friday #inspiration!\n\nNews:\nhttps://www.netlify.com/blog/2021/03/31/test-drive-netlify-beta-features-with-netlify-labs/\nhttps://www.netlify.com/blog/2021/04/05/dark-mode-fans-take-these-steps-to-set-it-up-in-the-netlify-app/\nhttps://www.gatsbyjs.com/blog/meet-new-gatsby-image/\nhttps://blog.cloudflare.com/the-teams-dashboard-home/\nhttps://twitter.com/adamwathan/status/1379154041662541828\nhttps://next-auth.js.org/\nhttps://styled-chart.com/\n\nFollow us here:\nhttps://twitter.com/tmamedbekov\nhttps://twitter.com/timbenniks","2023-07-20T08:02:37Z","054","https://i.ytimg.com/vi/9M73VIcakO4/maxresdefault.jpg","9M73VIcakO4",{"type":1132,"children":1777,"toc":1778},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1779},[],"content:3.videos:uniform:054-9M73VIcakO4.md","3.videos/uniform/054-9M73VIcakO4.md",{"_path":795,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":794,"description":1783,"date":1784,"position":1785,"image":1786,"videoId":1787,"body":1788,"_type":1137,"_id":1792,"_source":1139,"_file":1793,"_extension":1141},"#Contenstack and #Uniform personalisation for #Jamstack websites. This website runs on Gatsby and we'll be showing you how easy it is to personalize website with Uniform!","2023-07-20T08:02:42Z","055","https://i.ytimg.com/vi/D41Ch2LNxTQ/maxresdefault.jpg","D41Ch2LNxTQ",{"type":1132,"children":1789,"toc":1790},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1791},[],"content:3.videos:uniform:055-D41Ch2LNxTQ.md","3.videos/uniform/055-D41Ch2LNxTQ.md",{"_path":798,"_dir":1123,"_draft":1124,"_partial":1124,"_locale":1125,"title":797,"description":1795,"date":1796,"position":1797,"image":1798,"videoId":1799,"body":1800,"_type":1137,"_id":1804,"_source":1139,"_file":1805,"_extension":1141},"In this episode of Jamstack Fridays with T&T we discuss common questions our clients ask. In this video we discuss Gatsby vs Next.js and how to choose the right tool for you.\n\nNews:\nNextJS 10.1 Release\nhttps://nextjs.org/blog/next-10-1\n\nNetlify Build Plugin:\nhttps://www.netlify.com/blog/2021/03/26/netlify-build-plugin-of-the-week-lighthouse/\n\nSvelteKit:\nhttps://svelte.dev/blog/sveltekit-beta\n\n100 Day Challenge Create a Gatsby Theme\nhttps://www.gatsbyjs.com/blog/100days-challenge-5\n\nVisualized Content Modeling\nhttps://contentmodel.io/ \n\nFollow us here:\nTony: https://twitter.com/tmamedbekov\nTim: https://twitter.com/timbenniks\n\nhttps://uniform.dev","2023-07-20T08:02:47Z","056","https://i.ytimg.com/vi/EOHudN8Apm4/maxresdefault.jpg","EOHudN8Apm4",{"type":1132,"children":1801,"toc":1802},[],{"title":1125,"searchDepth":1135,"depth":1135,"links":1803},[],"content:3.videos:uniform:056-EOHudN8Apm4.md","3.videos/uniform/056-EOHudN8Apm4.md",1718484821246] \ No newline at end of file diff --git a/videos/uniform/index.html b/videos/uniform/index.html index 55796df0..663a10c1 100644 --- a/videos/uniform/index.html +++ b/videos/uniform/index.html @@ -2,7 +2,7 @@ - + - - - - - + + + + + - - - - - - + + + + + + - - + + - - -

Uniform Videos

- \ No newline at end of file + + +

Uniform Videos

+ \ No newline at end of file diff --git a/writing/_payload.json b/writing/_payload.json index 72f8629d..1704ddfa 100644 --- a/writing/_payload.json +++ b/writing/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":6949},["Reactive",2],{"content-query-wNhKu2rr0W":3,"content-navigation-8C37fagqQL":41,"content-query-SHQZeEL9Ii":1157},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":36,"_id":37,"_source":38,"_file":39,"_extension":40},"/writing","",false,"Writing","Writing desc",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":33},"root",[22,28],{"type":23,"tag":24,"props":25,"children":27},"element","title-block",{"tag":26,"title":7},"h1",[],{"type":23,"tag":29,"props":30,"children":32},"articles",{":small":31},"false",[],{"title":5,"searchDepth":34,"depth":34,"links":35},2,[],"markdown","content:4.writing:index.md","content","4.writing/index.md","md",[42,45,837,912,1148,1151,1154],{"title":43,"_path":44},"About","/about",{"title":46,"_path":47,"children":48},"videos","/videos",[49,68,87,133,134,186,289,312,334,662],{"title":50,"_path":51,"children":52},"Alive And Kicking","/videos/alive-and-kicking",[53,56,59,62,65],{"title":54,"_path":55},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":57,"_path":58},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":60,"_path":61},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":63,"_path":64},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":66,"_path":67},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":69,"_path":70,"children":71},"Headless Creator","/videos/headless-creator",[72,75,78,81,84],{"title":73,"_path":74},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":76,"_path":77},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":79,"_path":80},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":82,"_path":83},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":85,"_path":86},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":88,"_path":89,"children":90},"Hygraph","/videos/hygraph",[91,94,97,100,103,106,109,112,115,118,121,124,127,130],{"title":92,"_path":93},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":95,"_path":96},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":98,"_path":99},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":101,"_path":102},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":104,"_path":105},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":107,"_path":108},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":110,"_path":111},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":113,"_path":114},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":116,"_path":117},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":119,"_path":120},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":122,"_path":123},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":125,"_path":126},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":128,"_path":129},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":131,"_path":132},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":46,"_path":47},{"title":135,"_path":136,"children":137},"Live Hygraph","/videos/live-hygraph",[138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,183],{"title":139,"_path":140},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":142,"_path":143},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":145,"_path":146},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":148,"_path":149},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":151,"_path":152},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":154,"_path":155},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":157,"_path":158},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":160,"_path":161},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":163,"_path":164},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":166,"_path":167},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":169,"_path":170},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":172,"_path":173},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":175,"_path":176},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":178,"_path":179},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":181,"_path":182},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":184,"_path":185},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":187,"_path":188,"children":189},"Live Uniform","/videos/live-uniform",[190,193,196,199,202,205,208,211,214,217,220,223,226,229,232,235,238,241,244,247,250,253,256,259,262,265,268,271,274,277,280,283,286],{"title":191,"_path":192},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":194,"_path":195},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":197,"_path":198},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":200,"_path":201},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":203,"_path":204},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":206,"_path":207},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":209,"_path":210},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":212,"_path":213},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":215,"_path":216},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":218,"_path":219},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":221,"_path":222},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":224,"_path":225},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":227,"_path":228},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":230,"_path":231},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":233,"_path":234},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":236,"_path":237},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":239,"_path":240},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":242,"_path":243},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":245,"_path":246},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":248,"_path":249},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":251,"_path":252},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":254,"_path":255},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":257,"_path":258},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":260,"_path":261},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":263,"_path":264},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":266,"_path":267},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":269,"_path":270},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":272,"_path":273},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":275,"_path":276},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":278,"_path":279},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":281,"_path":282},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":284,"_path":285},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":287,"_path":288},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":290,"_path":291,"children":292},"Misc Streams","/videos/misc-streams",[293,296,299,302,304,306,309],{"title":294,"_path":295},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":297,"_path":298},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":300,"_path":301},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":284,"_path":303},"/videos/misc-streams/003-jvgiaotcerq",{"title":275,"_path":305},"/videos/misc-streams/004-ekut1koa2n8",{"title":307,"_path":308},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":310,"_path":311},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":313,"_path":314,"children":315},"Mp","/videos/mp",[316,319,322,325,328,331],{"title":317,"_path":318},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":320,"_path":321},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":323,"_path":324},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":326,"_path":327},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":329,"_path":330},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":332,"_path":333},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":335,"_path":336,"children":337},"Tim","/videos/tim",[338,340,343,346,349,352,355,358,361,364,367,370,373,376,379,382,385,388,390,392,395,398,401,404,407,410,413,416,419,422,425,428,431,434,437,440,443,446,449,452,455,458,461,464,467,470,473,476,479,482,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659],{"title":57,"_path":339},"/videos/tim/000-mvq-_s20ndk",{"title":341,"_path":342},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":344,"_path":345},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":347,"_path":348},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":350,"_path":351},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":353,"_path":354},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":356,"_path":357},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":359,"_path":360},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":362,"_path":363},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":365,"_path":366},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":368,"_path":369},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":371,"_path":372},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":374,"_path":375},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":377,"_path":378},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":380,"_path":381},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":383,"_path":384},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":386,"_path":387},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":60,"_path":389},"/videos/tim/017-m0mrligs6i0",{"title":54,"_path":391},"/videos/tim/018-hhpitreyobi",{"title":393,"_path":394},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":396,"_path":397},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":399,"_path":400},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":402,"_path":403},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":405,"_path":406},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":408,"_path":409},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":411,"_path":412},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":414,"_path":415},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":417,"_path":418},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":420,"_path":421},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":423,"_path":424},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":426,"_path":427},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":429,"_path":430},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":432,"_path":433},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":435,"_path":436},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":438,"_path":439},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":441,"_path":442},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":444,"_path":445},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":447,"_path":448},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":450,"_path":451},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":453,"_path":454},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":456,"_path":457},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":459,"_path":460},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":462,"_path":463},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":465,"_path":466},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":468,"_path":469},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":471,"_path":472},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":474,"_path":475},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":477,"_path":478},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":480,"_path":481},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":483,"_path":484},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":486,"_path":487},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":489,"_path":490},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":492,"_path":493},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":495,"_path":496},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":498,"_path":499},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":501,"_path":502},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":504,"_path":505},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":507,"_path":508},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":510,"_path":511},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":513,"_path":514},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":516,"_path":517},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":519,"_path":520},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":522,"_path":523},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":525,"_path":526},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":528,"_path":529},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":531,"_path":532},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":534,"_path":535},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":537,"_path":538},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":540,"_path":541},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":543,"_path":544},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":546,"_path":547},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":549,"_path":550},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":552,"_path":553},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":555,"_path":556},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":558,"_path":559},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":561,"_path":562},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":564,"_path":565},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":567,"_path":568},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":570,"_path":571},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":573,"_path":574},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":576,"_path":577},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":579,"_path":580},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":582,"_path":583},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":585,"_path":586},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":588,"_path":589},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":591,"_path":592},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":594,"_path":595},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":597,"_path":598},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":600,"_path":601},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":603,"_path":604},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":606,"_path":607},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":609,"_path":610},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":612,"_path":613},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":615,"_path":616},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":618,"_path":619},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":621,"_path":622},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":624,"_path":625},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":627,"_path":628},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":630,"_path":631},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":633,"_path":634},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":636,"_path":637},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":639,"_path":640},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":642,"_path":643},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":645,"_path":646},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":648,"_path":649},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":651,"_path":652},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":654,"_path":655},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":657,"_path":658},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":660,"_path":661},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":663,"_path":664,"children":665},"Uniform","/videos/uniform",[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,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834],{"title":667,"_path":668},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":670,"_path":671},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":673,"_path":674},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":676,"_path":677},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":679,"_path":680},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":682,"_path":683},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":685,"_path":686},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":688,"_path":689},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":691,"_path":692},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":694,"_path":695},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":697,"_path":698},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":700,"_path":701},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":703,"_path":704},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":706,"_path":707},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":709,"_path":710},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":712,"_path":713},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":715,"_path":716},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":718,"_path":719},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":721,"_path":722},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":724,"_path":725},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":727,"_path":728},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":730,"_path":731},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":733,"_path":734},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":736,"_path":737},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":739,"_path":740},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":742,"_path":743},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":745,"_path":746},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":748,"_path":749},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":751,"_path":752},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":754,"_path":755},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":757,"_path":758},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":760,"_path":761},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":763,"_path":764},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":766,"_path":767},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":769,"_path":770},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":772,"_path":773},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":775,"_path":776},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":778,"_path":779},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":781,"_path":782},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":784,"_path":785},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":787,"_path":788},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":790,"_path":791},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":793,"_path":794},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":796,"_path":797},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":799,"_path":800},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":802,"_path":803},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":805,"_path":806},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":808,"_path":809},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":811,"_path":812},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":814,"_path":815},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":817,"_path":818},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":820,"_path":821},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":823,"_path":824},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":826,"_path":827},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":829,"_path":830},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":832,"_path":833},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":835,"_path":836},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":7,"_path":4,"children":838},[839,842,845,848,851,854,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909],{"title":840,"_path":841},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":843,"_path":844},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":846,"_path":847},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":849,"_path":850},"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":852,"_path":853},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":7,"_path":4},{"title":856,"_path":857},"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":859,"_path":860},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":862,"_path":863},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":865,"_path":866},"My Fitness Story","/writing/my-fitness-story",{"title":868,"_path":869},"New job alert!","/writing/new-job-alert",{"title":871,"_path":872},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":874,"_path":875},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":877,"_path":878},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":880,"_path":881},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":883,"_path":884},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":886,"_path":887},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":889,"_path":890},"The MACH monolith","/writing/the-mach-monolith",{"title":892,"_path":893},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":895,"_path":896},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":898,"_path":899},"This is headless 2.0","/writing/this-is-headless-20",{"title":901,"_path":902},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":904,"_path":905},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":907,"_path":908},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":910,"_path":911},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":913,"_path":914,"children":915},"Speaking","/speaking",[916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147],{"title":917,"_path":918},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":920,"_path":921},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":923,"_path":924},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":926,"_path":927},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":929,"_path":930},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":932,"_path":933},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":935,"_path":936},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":938,"_path":939},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":941,"_path":942},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":944,"_path":945},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":947,"_path":948},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":950,"_path":951},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":953,"_path":954},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":956,"_path":957},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":959,"_path":960},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":962,"_path":963},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":965,"_path":966},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":968,"_path":969},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":971,"_path":972},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":974,"_path":975},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":977,"_path":978},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":980,"_path":981},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":983,"_path":984},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":986,"_path":987},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":989,"_path":990},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":992,"_path":993},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":995,"_path":996},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":998,"_path":999},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1001,"_path":1002},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1004,"_path":1005},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1007,"_path":1008},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1010,"_path":1011},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1013,"_path":1014},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1016,"_path":1017},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1019,"_path":1020},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1022,"_path":1023},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1025,"_path":1026},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1028,"_path":1029},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1031,"_path":1032},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1034,"_path":1035},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1037,"_path":1038},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1040,"_path":1041},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1043,"_path":1044},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1046,"_path":1047},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1049,"_path":1050},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1052,"_path":1053},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1055,"_path":1056},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1058,"_path":1059},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1061,"_path":1062},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1064,"_path":1065},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1067,"_path":1068},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1070,"_path":1071},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1073,"_path":1074},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1076,"_path":1077},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1079,"_path":1080},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1082,"_path":1083},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1085,"_path":1086},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1088,"_path":1089},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1091,"_path":1092},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1094,"_path":1095},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1097,"_path":1098},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1100,"_path":1101},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1103,"_path":1104},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1106,"_path":1107},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1109,"_path":1110},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1112,"_path":1113},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1115,"_path":1116},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1118,"_path":1119},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1121,"_path":1122},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1124,"_path":1125},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1127,"_path":1128},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1130,"_path":1131},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1133,"_path":1134},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1136,"_path":1137},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1139,"_path":1140},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1142,"_path":1143},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1145,"_path":1146},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":913,"_path":914},{"title":1149,"_path":1150},"live streams","/livestreams",{"title":1152,"_path":1153},"press kit","/presskit",{"title":1155,"_path":1156},"alive and kicking","/alive-and-kicking",[1158,1404,1780,2179,2296,2400,2655,2757,3010,3412,3737,4071,4202,4385,4855,5020,5156,5367,5644,5887,6025,6180,6337,6611],{"_path":875,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":874,"description":1160,"id":1161,"slug":1162,"date":1163,"image":1164,"canonical_url":1165,"tags":1166,"collection_id":1167,"body":1168,"_type":36,"_id":1402,"_source":38,"_file":1403,"_extension":40},"writing","Content management is as essential as it is complex, especially at scale. As brands grow, they often...",1683758,"the-content-graph-is-the-future","2023-12-05T10:40:00Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ilcbgm74yygk14s4g7.png","https://hygraph.com/blog/the-content-graph-is-the-future",[],22300,{"type":20,"children":1169,"toc":1392},[1170,1177,1184,1189,1194,1199,1219,1225,1230,1243,1249,1254,1259,1264,1269,1274,1282,1288,1293,1318,1324,1329,1335,1340,1345,1351,1356,1361,1366,1371,1376,1381,1387],{"type":23,"tag":1171,"props":1172,"children":1173},"p",{},[1174],{"type":1175,"value":1176},"text","Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph.",{"type":23,"tag":1178,"props":1179,"children":1181},"h2",{"id":1180},"the-emergence-of-new-buzzwords-best-of-breed-and-composable",[1182],{"type":1175,"value":1183},"The emergence of new buzzwords: best-of-breed and composable",{"type":23,"tag":1171,"props":1185,"children":1186},{},[1187],{"type":1175,"value":1188},"Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability.",{"type":23,"tag":1171,"props":1190,"children":1191},{},[1192],{"type":1175,"value":1193},"A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs.",{"type":23,"tag":1171,"props":1195,"children":1196},{},[1197],{"type":1175,"value":1198},"Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements.",{"type":23,"tag":1200,"props":1201,"children":1202},"blockquote",{},[1203],{"type":23,"tag":1171,"props":1204,"children":1205},{},[1206,1208,1217],{"type":1175,"value":1207},"If you want to learn more details about industry buzzwords, check out this ",{"type":23,"tag":1209,"props":1210,"children":1214},"a",{"href":1211,"rel":1212},"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords",[1213],"nofollow",[1215],{"type":1175,"value":1216},"blog post",{"type":1175,"value":1218},".",{"type":23,"tag":1178,"props":1220,"children":1222},{"id":1221},"its-not-all-sunshine-and-rainbows",[1223],{"type":1175,"value":1224},"It’s not all sunshine and rainbows",{"type":23,"tag":1171,"props":1226,"children":1227},{},[1228],{"type":1175,"value":1229},"Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous.",{"type":23,"tag":1171,"props":1231,"children":1232},{},[1233],{"type":23,"tag":1234,"props":1235,"children":1242},"img",{"alt":1236,"height":1237,"loading":1238,"provider":1239,"sizes":1240,"src":1241,"width":13},"Composable challenges",720,"lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgy63rwzc7dm5mnmk9wl.png",[],{"type":23,"tag":1178,"props":1244,"children":1246},{"id":1245},"introducing-the-content-graph",[1247],{"type":1175,"value":1248},"Introducing the content graph",{"type":23,"tag":1171,"props":1250,"children":1251},{},[1252],{"type":1175,"value":1253},"The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub.",{"type":23,"tag":1171,"props":1255,"children":1256},{},[1257],{"type":1175,"value":1258},"The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources.",{"type":23,"tag":1171,"props":1260,"children":1261},{},[1262],{"type":1175,"value":1263},"In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything.",{"type":23,"tag":1171,"props":1265,"children":1266},{},[1267],{"type":1175,"value":1268},"An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible.",{"type":23,"tag":1171,"props":1270,"children":1271},{},[1272],{"type":1175,"value":1273},"To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities.",{"type":23,"tag":1171,"props":1275,"children":1276},{},[1277],{"type":23,"tag":1234,"props":1278,"children":1281},{"alt":1279,"height":1237,"loading":1238,"provider":1239,"sizes":1240,"src":1280,"width":13},"The Contwnt Graph","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qngsih12lys9s6yww0j.png",[],{"type":23,"tag":1178,"props":1283,"children":1285},{"id":1284},"the-benefits",[1286],{"type":1175,"value":1287},"The benefits",{"type":23,"tag":1171,"props":1289,"children":1290},{},[1291],{"type":1175,"value":1292},"Use these one-liners when you talk about this subject to your boss.",{"type":23,"tag":1294,"props":1295,"children":1296},"ul",{},[1297,1303,1308,1313],{"type":23,"tag":1298,"props":1299,"children":1300},"li",{},[1301],{"type":1175,"value":1302},"The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas.",{"type":23,"tag":1298,"props":1304,"children":1305},{},[1306],{"type":1175,"value":1307},"With the content graph, you query only what you need from any source and in the same unified way.",{"type":23,"tag":1298,"props":1309,"children":1310},{},[1311],{"type":1175,"value":1312},"The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all.",{"type":23,"tag":1298,"props":1314,"children":1315},{},[1316],{"type":1175,"value":1317},"The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple.",{"type":23,"tag":1178,"props":1319,"children":1321},{"id":1320},"challenges-and-considerations",[1322],{"type":1175,"value":1323},"Challenges and considerations",{"type":23,"tag":1171,"props":1325,"children":1326},{},[1327],{"type":1175,"value":1328},"This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph.",{"type":23,"tag":1178,"props":1330,"children":1332},{"id":1331},"the-tech-behind-the-content-graph",[1333],{"type":1175,"value":1334},"The tech behind the content graph",{"type":23,"tag":1171,"props":1336,"children":1337},{},[1338],{"type":1175,"value":1339},"You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL.",{"type":23,"tag":1171,"props":1341,"children":1342},{},[1343],{"type":1175,"value":1344},"An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it.",{"type":23,"tag":1178,"props":1346,"children":1348},{"id":1347},"a-real-life-use-case-for-the-content-graph",[1349],{"type":1175,"value":1350},"A real-life use case for the content graph",{"type":23,"tag":1171,"props":1352,"children":1353},{},[1354],{"type":1175,"value":1355},"An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands.",{"type":23,"tag":1171,"props":1357,"children":1358},{},[1359],{"type":1175,"value":1360},"Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching.",{"type":23,"tag":1171,"props":1362,"children":1363},{},[1364],{"type":1175,"value":1365},"Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use.",{"type":23,"tag":1171,"props":1367,"children":1368},{},[1369],{"type":1175,"value":1370},"Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine.",{"type":23,"tag":1171,"props":1372,"children":1373},{},[1374],{"type":1175,"value":1375},"The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change.",{"type":23,"tag":1171,"props":1377,"children":1378},{},[1379],{"type":1175,"value":1380},"One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly.",{"type":23,"tag":1178,"props":1382,"children":1384},{"id":1383},"conclusion",[1385],{"type":1175,"value":1386},"Conclusion",{"type":23,"tag":1171,"props":1388,"children":1389},{},[1390],{"type":1175,"value":1391},"The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures.",{"title":5,"searchDepth":34,"depth":34,"links":1393},[1394,1395,1396,1397,1398,1399,1400,1401],{"id":1180,"depth":34,"text":1183},{"id":1221,"depth":34,"text":1224},{"id":1245,"depth":34,"text":1248},{"id":1284,"depth":34,"text":1287},{"id":1320,"depth":34,"text":1323},{"id":1331,"depth":34,"text":1334},{"id":1347,"depth":34,"text":1350},{"id":1383,"depth":34,"text":1386},"content:4.writing:the-content-graph-is-the-future.md","4.writing/the-content-graph-is-the-future.md",{"_path":908,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":907,"description":1405,"id":1406,"slug":1407,"date":1408,"image":1409,"canonical_url":1410,"tags":1411,"collection_id":1167,"body":1412,"_type":36,"_id":1778,"_source":38,"_file":1779,"_extension":40},"Different ways of working require different approaches to content design. In this post, I will...",1664371,"what-type-of-content-organization-do-you-need","2023-11-12T09:03:33Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd58lvz3nrm8lre4gdtuw.png","https://hygraph.com/blog/what-type-of-content-organization-do-you-need",[],{"type":20,"children":1413,"toc":1758},[1414,1419,1424,1429,1437,1442,1448,1453,1458,1463,1468,1474,1479,1486,1491,1499,1505,1510,1517,1523,1528,1536,1542,1547,1552,1559,1565,1570,1575,1583,1589,1594,1599,1606,1612,1617,1623,1628,1637,1642,1650,1656,1661,1666,1674,1680,1692,1699,1704,1711,1717,1722,1730,1736,1741,1749,1753],{"type":23,"tag":1171,"props":1415,"children":1416},{},[1417],{"type":1175,"value":1418},"Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally.",{"type":23,"tag":1171,"props":1420,"children":1421},{},[1422],{"type":1175,"value":1423},"Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between.",{"type":23,"tag":1171,"props":1425,"children":1426},{},[1427],{"type":1175,"value":1428},"One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent.",{"type":23,"tag":1171,"props":1430,"children":1431},{},[1432],{"type":23,"tag":1234,"props":1433,"children":1436},{"alt":1434,"loading":1238,"provider":1239,"sizes":1240,"src":1435,"width":13},"Centralized / Decentralized","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xioylw3zkxljytzhwtft.png",[],{"type":23,"tag":1171,"props":1438,"children":1439},{},[1440],{"type":1175,"value":1441},"Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly.",{"type":23,"tag":1178,"props":1443,"children":1445},{"id":1444},"how-to-organize-your-content-without-going-crazy",[1446],{"type":1175,"value":1447},"How to organize your content without going crazy",{"type":23,"tag":1171,"props":1449,"children":1450},{},[1451],{"type":1175,"value":1452},"If your content flows between different systems, federation is one of the most effective ways to manage it.",{"type":23,"tag":1171,"props":1454,"children":1455},{},[1456],{"type":1175,"value":1457},"Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications.",{"type":23,"tag":1171,"props":1459,"children":1460},{},[1461],{"type":1175,"value":1462},"Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation.",{"type":23,"tag":1171,"props":1464,"children":1465},{},[1466],{"type":1175,"value":1467},"In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements.",{"type":23,"tag":1178,"props":1469,"children":1471},{"id":1470},"forms-of-federation",[1472],{"type":1175,"value":1473},"Forms of federation",{"type":23,"tag":1171,"props":1475,"children":1476},{},[1477],{"type":1175,"value":1478},"There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns.",{"type":23,"tag":1480,"props":1481,"children":1483},"h3",{"id":1482},"data-stitching-and-custom-middleware",[1484],{"type":1175,"value":1485},"Data stitching and custom middleware",{"type":23,"tag":1171,"props":1487,"children":1488},{},[1489],{"type":1175,"value":1490},"Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time.",{"type":23,"tag":1171,"props":1492,"children":1493},{},[1494],{"type":23,"tag":1234,"props":1495,"children":1498},{"alt":1496,"loading":1238,"provider":1239,"sizes":1240,"src":1497,"width":13},"Data stitching","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iacwgoeaolz9znalbc56.png",[],{"type":23,"tag":1480,"props":1500,"children":1502},{"id":1501},"content-hub",[1503],{"type":1175,"value":1504},"Content Hub",{"type":23,"tag":1171,"props":1506,"children":1507},{},[1508],{"type":1175,"value":1509},"A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication.",{"type":23,"tag":1171,"props":1511,"children":1512},{},[1513],{"type":23,"tag":1234,"props":1514,"children":1516},{"alt":1504,"loading":1238,"provider":1239,"sizes":1240,"src":1515,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc8fp49qbswr93cg5r62.png",[],{"type":23,"tag":1480,"props":1518,"children":1520},{"id":1519},"data-lake",[1521],{"type":1175,"value":1522},"Data Lake",{"type":23,"tag":1171,"props":1524,"children":1525},{},[1526],{"type":1175,"value":1527},"A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand.",{"type":23,"tag":1171,"props":1529,"children":1530},{},[1531],{"type":23,"tag":1234,"props":1532,"children":1535},{"alt":1533,"loading":1238,"provider":1239,"sizes":1240,"src":1534,"width":13},"Data lake","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u388o0c1oy5p0m31afl0.png",[],{"type":23,"tag":1480,"props":1537,"children":1539},{"id":1538},"content-federation",[1540],{"type":1175,"value":1541},"Content Federation",{"type":23,"tag":1171,"props":1543,"children":1544},{},[1545],{"type":1175,"value":1546},"Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation.",{"type":23,"tag":1171,"props":1548,"children":1549},{},[1550],{"type":1175,"value":1551},"Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs.",{"type":23,"tag":1171,"props":1553,"children":1554},{},[1555],{"type":23,"tag":1234,"props":1556,"children":1558},{"alt":1541,"loading":1238,"provider":1239,"sizes":1240,"src":1557,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wsbl6uzmoscfxq31yrv.png",[],{"type":23,"tag":1480,"props":1560,"children":1562},{"id":1561},"dxo-digital-experience-orchestration",[1563],{"type":1175,"value":1564},"DXO (digital experience orchestration)",{"type":23,"tag":1171,"props":1566,"children":1567},{},[1568],{"type":1175,"value":1569},"Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources.",{"type":23,"tag":1171,"props":1571,"children":1572},{},[1573],{"type":1175,"value":1574},"Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone.",{"type":23,"tag":1171,"props":1576,"children":1577},{},[1578],{"type":23,"tag":1234,"props":1579,"children":1582},{"alt":1580,"loading":1238,"provider":1239,"sizes":1240,"src":1581,"width":13},"DXO","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfrsz1i6hjq68mbsmrui.png",[],{"type":23,"tag":1480,"props":1584,"children":1586},{"id":1585},"graphql-federation",[1587],{"type":1175,"value":1588},"GraphQL Federation",{"type":23,"tag":1171,"props":1590,"children":1591},{},[1592],{"type":1175,"value":1593},"GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints.",{"type":23,"tag":1171,"props":1595,"children":1596},{},[1597],{"type":1175,"value":1598},"A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver.",{"type":23,"tag":1171,"props":1600,"children":1601},{},[1602],{"type":23,"tag":1234,"props":1603,"children":1605},{"alt":1588,"loading":1238,"provider":1239,"sizes":1240,"src":1604,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rtx6y1lqmon1nhe6c4t0.png",[],{"type":23,"tag":1178,"props":1607,"children":1609},{"id":1608},"which-federation-is-for-you",[1610],{"type":1175,"value":1611},"Which federation is for you?",{"type":23,"tag":1171,"props":1613,"children":1614},{},[1615],{"type":1175,"value":1616},"Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions.",{"type":23,"tag":1480,"props":1618,"children":1620},{"id":1619},"what-is-your-digital-organization-direction-centralized-or-decentralized",[1621],{"type":1175,"value":1622},"What is your digital organization direction: centralized or decentralized?",{"type":23,"tag":1171,"props":1624,"children":1625},{},[1626],{"type":1175,"value":1627},"The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top.",{"type":23,"tag":1171,"props":1629,"children":1630},{},[1631],{"type":23,"tag":1632,"props":1633,"children":1634},"em",{},[1635],{"type":1175,"value":1636},"Federation type to choose: Content Federation",{"type":23,"tag":1171,"props":1638,"children":1639},{},[1640],{"type":1175,"value":1641},"If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice.",{"type":23,"tag":1171,"props":1643,"children":1644},{},[1645],{"type":23,"tag":1632,"props":1646,"children":1647},{},[1648],{"type":1175,"value":1649},"Federation type to choose: Content Hub",{"type":23,"tag":1480,"props":1651,"children":1653},{"id":1652},"how-much-cleanup-does-your-data-need",[1654],{"type":1175,"value":1655},"How much cleanup does your data need?",{"type":23,"tag":1171,"props":1657,"children":1658},{},[1659],{"type":1175,"value":1660},"Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails.",{"type":23,"tag":1171,"props":1662,"children":1663},{},[1664],{"type":1175,"value":1665},"If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph.",{"type":23,"tag":1171,"props":1667,"children":1668},{},[1669],{"type":23,"tag":1632,"props":1670,"children":1671},{},[1672],{"type":1175,"value":1673},"Federation type to choose: DXO, Content Federation",{"type":23,"tag":1480,"props":1675,"children":1677},{"id":1676},"how-autonomous-do-your-data-sources-need-to-be",[1678],{"type":1175,"value":1679},"How autonomous do your data sources need to be?",{"type":23,"tag":1171,"props":1681,"children":1682},{},[1683,1685,1690],{"type":1175,"value":1684},"At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the ",{"type":23,"tag":1632,"props":1686,"children":1687},{},[1688],{"type":1175,"value":1689},"autonomy",{"type":1175,"value":1691}," to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below.",{"type":23,"tag":1171,"props":1693,"children":1694},{},[1695],{"type":23,"tag":1632,"props":1696,"children":1697},{},[1698],{"type":1175,"value":1636},{"type":23,"tag":1171,"props":1700,"children":1701},{},[1702],{"type":1175,"value":1703},"If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data.",{"type":23,"tag":1171,"props":1705,"children":1706},{},[1707],{"type":23,"tag":1632,"props":1708,"children":1709},{},[1710],{"type":1175,"value":1649},{"type":23,"tag":1480,"props":1712,"children":1714},{"id":1713},"are-you-dealing-with-big-data",[1715],{"type":1175,"value":1716},"Are you dealing with big data?",{"type":23,"tag":1171,"props":1718,"children":1719},{},[1720],{"type":1175,"value":1721},"Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS.",{"type":23,"tag":1171,"props":1723,"children":1724},{},[1725],{"type":23,"tag":1632,"props":1726,"children":1727},{},[1728],{"type":1175,"value":1729},"Federation type to choose: Content Lake",{"type":23,"tag":1480,"props":1731,"children":1733},{"id":1732},"are-you-a-saas-with-multiple-tech-silos",[1734],{"type":1175,"value":1735},"Are you a SaaS with multiple tech silos?",{"type":23,"tag":1171,"props":1737,"children":1738},{},[1739],{"type":1175,"value":1740},"If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL.",{"type":23,"tag":1171,"props":1742,"children":1743},{},[1744],{"type":23,"tag":1632,"props":1745,"children":1746},{},[1747],{"type":1175,"value":1748},"Federation type to choose: GraphQL Federation",{"type":23,"tag":1178,"props":1750,"children":1751},{"id":1383},[1752],{"type":1175,"value":1386},{"type":23,"tag":1171,"props":1754,"children":1755},{},[1756],{"type":1175,"value":1757},"As always, the answer is: \"It depends\". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases.",{"title":5,"searchDepth":34,"depth":34,"links":1759},[1760,1761,1770,1777],{"id":1444,"depth":34,"text":1447},{"id":1470,"depth":34,"text":1473,"children":1762},[1763,1765,1766,1767,1768,1769],{"id":1482,"depth":1764,"text":1485},3,{"id":1501,"depth":1764,"text":1504},{"id":1519,"depth":1764,"text":1522},{"id":1538,"depth":1764,"text":1541},{"id":1561,"depth":1764,"text":1564},{"id":1585,"depth":1764,"text":1588},{"id":1608,"depth":34,"text":1611,"children":1771},[1772,1773,1774,1775,1776],{"id":1619,"depth":1764,"text":1622},{"id":1652,"depth":1764,"text":1655},{"id":1676,"depth":1764,"text":1679},{"id":1713,"depth":1764,"text":1716},{"id":1732,"depth":1764,"text":1735},{"id":1383,"depth":34,"text":1386},"content:4.writing:what-type-of-content-organization-do-you-need.md","4.writing/what-type-of-content-organization-do-you-need.md",{"_path":896,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":895,"description":1781,"id":1782,"slug":1783,"date":1784,"image":1785,"canonical_url":1211,"tags":1786,"collection_id":1167,"body":1791,"_type":36,"_id":2177,"_source":38,"_file":2178,"_extension":40},"Buzzwords are labels that describe tech approaches that become so commonplace over time that the...",1614626,"the-real-deal-about-content-management-buzzword","2023-09-28T14:43:37Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr5frm3ra3q3liidcpev.jpg",[1787,1788,1789,1790],"buzzwords","dxp","composable","cms",{"type":20,"children":1792,"toc":2163},[1793,1798,1803,1817,1829,1835,1847,1852,1896,1903,1908,1920,1925,1930,1937,1943,1957,1962,1969,1975,1987,1992,2000,2005,2010,2015,2023,2029,2041,2047,2052,2066,2072,2077,2082,2087,2110,2118,2123,2129,2134,2139,2147,2153,2158],{"type":23,"tag":1171,"props":1794,"children":1795},{},[1796],{"type":1175,"value":1797},"Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too.",{"type":23,"tag":1171,"props":1799,"children":1800},{},[1801],{"type":1175,"value":1802},"First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter.",{"type":23,"tag":1171,"props":1804,"children":1805},{},[1806,1808,1815],{"type":1175,"value":1807},"Do you like watching more than reading? Watch this ",{"type":23,"tag":1209,"props":1809,"children":1812},{"href":1810,"rel":1811},"https://www.youtube.com/watch?v=EXzp3OkQTXk",[1213],[1813],{"type":1175,"value":1814},"YouTube video",{"type":1175,"value":1816}," instead.",{"type":23,"tag":1171,"props":1818,"children":1819},{},[1820,1822,1827],{"type":1175,"value":1821},"{% embed ",{"type":23,"tag":1209,"props":1823,"children":1825},{"href":1810,"rel":1824},[1213],[1826],{"type":1175,"value":1810},{"type":1175,"value":1828}," %}",{"type":23,"tag":1178,"props":1830,"children":1832},{"id":1831},"mach",[1833],{"type":1175,"value":1834},"MACH",{"type":23,"tag":1171,"props":1836,"children":1837},{},[1838,1845],{"type":23,"tag":1209,"props":1839,"children":1842},{"href":1840,"rel":1841},"https://hygraph.com/blog/mach-architecture",[1213],[1843],{"type":1175,"value":1844},"MACH architecture",{"type":1175,"value":1846}," comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless.",{"type":23,"tag":1171,"props":1848,"children":1849},{},[1850],{"type":1175,"value":1851},"Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members.",{"type":23,"tag":1294,"props":1853,"children":1854},{},[1855,1866,1876,1886],{"type":23,"tag":1298,"props":1856,"children":1857},{},[1858,1864],{"type":23,"tag":1859,"props":1860,"children":1861},"strong",{},[1862],{"type":1175,"value":1863},"Microservices",{"type":1175,"value":1865}," are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures.",{"type":23,"tag":1298,"props":1867,"children":1868},{},[1869,1874],{"type":23,"tag":1859,"props":1870,"children":1871},{},[1872],{"type":1175,"value":1873},"API-first",{"type":1175,"value":1875}," means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications.",{"type":23,"tag":1298,"props":1877,"children":1878},{},[1879,1884],{"type":23,"tag":1859,"props":1880,"children":1881},{},[1882],{"type":1175,"value":1883},"Cloud-native",{"type":1175,"value":1885}," means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing.",{"type":23,"tag":1298,"props":1887,"children":1888},{},[1889,1894],{"type":23,"tag":1859,"props":1890,"children":1891},{},[1892],{"type":1175,"value":1893},"Headless",{"type":1175,"value":1895}," means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end.",{"type":23,"tag":1171,"props":1897,"children":1898},{},[1899],{"type":23,"tag":1234,"props":1900,"children":1902},{"alt":1831,"loading":1238,"provider":1239,"sizes":1240,"src":1901,"width":13},"https://media.graphassets.com/jZfjXdJMSGTG1gLrwGQQ",[],{"type":23,"tag":1178,"props":1904,"children":1905},{"id":1789},[1906],{"type":1175,"value":1907},"Composable",{"type":23,"tag":1171,"props":1909,"children":1910},{},[1911,1918],{"type":23,"tag":1209,"props":1912,"children":1915},{"href":1913,"rel":1914},"https://hygraph.com/blog/composable-architecture",[1213],[1916],{"type":1175,"value":1917},"Composable architecture",{"type":1175,"value":1919}," refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems.",{"type":23,"tag":1171,"props":1921,"children":1922},{},[1923],{"type":1175,"value":1924},"While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first \"A\" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware.",{"type":23,"tag":1171,"props":1926,"children":1927},{},[1928],{"type":1175,"value":1929},"Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions.",{"type":23,"tag":1171,"props":1931,"children":1932},{},[1933],{"type":23,"tag":1234,"props":1934,"children":1936},{"alt":1789,"loading":1238,"provider":1239,"sizes":1240,"src":1935,"width":13},"https://media.graphassets.com/D2oCAxwTpuhKfZ5xwEB0",[],{"type":23,"tag":1178,"props":1938,"children":1940},{"id":1939},"dxp-digital-experience-platform",[1941],{"type":1175,"value":1942},"DXP (Digital Experience Platform)",{"type":23,"tag":1171,"props":1944,"children":1945},{},[1946,1948,1955],{"type":1175,"value":1947},"A ",{"type":23,"tag":1209,"props":1949,"children":1952},{"href":1950,"rel":1951},"https://hygraph.com/blog/what-is-a-dxp",[1213],[1953],{"type":1175,"value":1954},"digital experience platform (DXP)",{"type":1175,"value":1956}," is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences.",{"type":23,"tag":1171,"props":1958,"children":1959},{},[1960],{"type":1175,"value":1961},"Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies.",{"type":23,"tag":1171,"props":1963,"children":1964},{},[1965],{"type":23,"tag":1234,"props":1966,"children":1968},{"alt":1788,"loading":1238,"provider":1239,"sizes":1240,"src":1967,"width":13},"https://media.graphassets.com/rIUS6taoQJ2pcvTDA2YZ",[],{"type":23,"tag":1178,"props":1970,"children":1972},{"id":1971},"dxc-digital-experience-composition",[1973],{"type":1175,"value":1974},"DXC (Digital Experience Composition)",{"type":23,"tag":1171,"props":1976,"children":1977},{},[1978,1985],{"type":23,"tag":1209,"props":1979,"children":1982},{"href":1980,"rel":1981},"https://hygraph.com/blog/digital-experience-composition",[1213],[1983],{"type":1175,"value":1984},"Digital experience composition",{"type":1175,"value":1986}," refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data.",{"type":23,"tag":1171,"props":1988,"children":1989},{},[1990],{"type":1175,"value":1991},"DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone.",{"type":23,"tag":1171,"props":1993,"children":1994},{},[1995],{"type":23,"tag":1234,"props":1996,"children":1999},{"alt":1997,"loading":1238,"provider":1239,"sizes":1240,"src":1998,"width":13},"dxc","https://media.graphassets.com/irNrx7isRUKaZ0QoDnzQ",[],{"type":23,"tag":1178,"props":2001,"children":2002},{"id":1561},[2003],{"type":1175,"value":2004},"DXO (Digital Experience Orchestration)",{"type":23,"tag":1171,"props":2006,"children":2007},{},[2008],{"type":1175,"value":2009},"Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience.",{"type":23,"tag":1171,"props":2011,"children":2012},{},[2013],{"type":1175,"value":2014},"DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user.",{"type":23,"tag":1171,"props":2016,"children":2017},{},[2018],{"type":23,"tag":1234,"props":2019,"children":2022},{"alt":2020,"loading":1238,"provider":1239,"sizes":1240,"src":2021,"width":13},"dxo","https://media.graphassets.com/WgGDwsNLTTa4wAoL7WVd",[],{"type":23,"tag":1178,"props":2024,"children":2026},{"id":2025},"why-you-dont-have-to-care-about-the-buzzwords",[2027],{"type":1175,"value":2028},"Why you don’t have to care about the buzzwords",{"type":23,"tag":1171,"props":2030,"children":2031},{},[2032,2034,2039],{"type":1175,"value":2033},"Ultimately, it is up to ",{"type":23,"tag":1632,"props":2035,"children":2036},{},[2037],{"type":1175,"value":2038},"you",{"type":1175,"value":2040}," to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before.",{"type":23,"tag":1480,"props":2042,"children":2044},{"id":2043},"company-maturity",[2045],{"type":1175,"value":2046},"Company maturity",{"type":23,"tag":1171,"props":2048,"children":2049},{},[2050],{"type":1175,"value":2051},"As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases.",{"type":23,"tag":1171,"props":2053,"children":2054},{},[2055,2057,2064],{"type":1175,"value":2056},"However, as companies mature, they may struggle with the ",{"type":23,"tag":1209,"props":2058,"children":2061},{"href":2059,"rel":2060},"https://hygraph.com/blog/monolithic-cms-limitations",[1213],[2062],{"type":1175,"value":2063},"limitations of these monoliths",{"type":1175,"value":2065},". Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry.",{"type":23,"tag":1480,"props":2067,"children":2069},{"id":2068},"connecting-it-all",[2070],{"type":1175,"value":2071},"Connecting it all",{"type":23,"tag":1171,"props":2073,"children":2074},{},[2075],{"type":1175,"value":2076},"Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use.",{"type":23,"tag":1171,"props":2078,"children":2079},{},[2080],{"type":1175,"value":2081},"The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture.",{"type":23,"tag":1480,"props":2083,"children":2084},{"id":1538},[2085],{"type":1175,"value":2086},"Content federation",{"type":23,"tag":1171,"props":2088,"children":2089},{},[2090,2092,2099,2101,2108],{"type":1175,"value":2091},"To avoid a ",{"type":23,"tag":1209,"props":2093,"children":2096},{"href":2094,"rel":2095},"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/",[1213],[2097],{"type":1175,"value":2098},"MACH monolith",{"type":1175,"value":2100}," or ",{"type":23,"tag":1209,"props":2102,"children":2105},{"href":2103,"rel":2104},"https://www.youtube.com/watch?v=so7-c2bOXpA",[1213],[2106],{"type":1175,"value":2107},"MACHlash",{"type":1175,"value":2109},", you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems.",{"type":23,"tag":1171,"props":2111,"children":2112},{},[2113],{"type":23,"tag":1234,"props":2114,"children":2117},{"alt":2115,"loading":1238,"provider":1239,"sizes":1240,"src":2116,"width":13},"content federation","https://media.graphassets.com/fbNw1hhTSHykSwk19ggJ",[],{"type":23,"tag":1171,"props":2119,"children":2120},{},[2121],{"type":1175,"value":2122},"Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information.",{"type":23,"tag":1480,"props":2124,"children":2126},{"id":2125},"after-content-federation-is-in-place",[2127],{"type":1175,"value":2128},"After Content federation is in place",{"type":23,"tag":1171,"props":2130,"children":2131},{},[2132],{"type":1175,"value":2133},"Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later.",{"type":23,"tag":1171,"props":2135,"children":2136},{},[2137],{"type":1175,"value":2138},"If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool.",{"type":23,"tag":1171,"props":2140,"children":2141},{},[2142],{"type":23,"tag":1234,"props":2143,"children":2146},{"alt":2144,"loading":1238,"provider":1239,"sizes":1240,"src":2145,"width":13},"after content federation","https://media.graphassets.com/4xZbpHRgTI2CzXQ88GG7",[],{"type":23,"tag":1178,"props":2148,"children":2150},{"id":2149},"concluding",[2151],{"type":1175,"value":2152},"Concluding",{"type":23,"tag":1171,"props":2154,"children":2155},{},[2156],{"type":1175,"value":2157},"Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems.",{"type":23,"tag":1171,"props":2159,"children":2160},{},[2161],{"type":1175,"value":2162},"Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between.",{"title":5,"searchDepth":34,"depth":34,"links":2164},[2165,2166,2167,2168,2169,2170,2176],{"id":1831,"depth":34,"text":1834},{"id":1789,"depth":34,"text":1907},{"id":1939,"depth":34,"text":1942},{"id":1971,"depth":34,"text":1974},{"id":1561,"depth":34,"text":2004},{"id":2025,"depth":34,"text":2028,"children":2171},[2172,2173,2174,2175],{"id":2043,"depth":1764,"text":2046},{"id":2068,"depth":1764,"text":2071},{"id":1538,"depth":1764,"text":2086},{"id":2125,"depth":1764,"text":2128},{"id":2149,"depth":34,"text":2152},"content:4.writing:the-real-deal-about-content-management-buzzword.md","4.writing/the-real-deal-about-content-management-buzzword.md",{"_path":878,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":877,"description":2180,"id":2181,"slug":2182,"date":2183,"image":2184,"canonical_url":2185,"tags":2186,"collection_id":1167,"body":2190,"_type":36,"_id":2294,"_source":38,"_file":2295,"_extension":40},"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing...",1614623,"the-future-of-headless-cms-content-federation-with-graphql","2023-09-28T14:39:16Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pk8b2ihfddxqlt3w4tu.jpg","https://hygraph.com/blog/content-federation-with-graphql",[2187,1790,2188,2189],"headless","graphql","federation",{"type":20,"children":2191,"toc":2290},[2192,2197,2209,2214,2219,2224,2229,2247,2252,2260,2266,2271,2276,2281,2285],{"type":23,"tag":1171,"props":2193,"children":2194},{},[2195],{"type":1175,"value":2196},"Federation is a popular topic of conversation these days, and for good reason. With the ever-growing amount of fragmentation in tooling, it offers a way to decouple data and systems, giving organizations more flexibility and agility.",{"type":23,"tag":1171,"props":2198,"children":2199},{},[2200,2202,2208],{"type":1175,"value":2201},"Despite the promise of headless architecture, data, and systems easily become tightly coupled. Whether through custom middleware or frontend stitching, one system can have ripple effects on all others. This can make it difficult to manage and update content and causes technical debt. In the past, I called this the",{"type":23,"tag":1209,"props":2203,"children":2205},{"href":2094,"rel":2204},[1213],[2206],{"type":1175,"value":2207}," MACH Monolith",{"type":1175,"value":1218},{"type":23,"tag":1171,"props":2210,"children":2211},{},[2212],{"type":1175,"value":2213},"A federated architecture, on the other hand, truly decouples data and systems. Federation is a technique of using autonomous systems to work with the data and logic they’re best suited for. What differentiates that from the MACH Monolith is how the data comes back together. Federation takes these autonomous services and crafts a unified, standardized, and powerful API for use in any application.",{"type":23,"tag":1171,"props":2215,"children":2216},{},[2217],{"type":1175,"value":2218},"While there are many patterns for accomplishing federation, one architecture is Content Federation. Content federation is the process of bringing together content from multiple sources into a single, unified view that can be accessed both at the API layer, as well as at the editor level.",{"type":23,"tag":1171,"props":2220,"children":2221},{},[2222],{"type":1175,"value":2223},"In a federated architecture, the content federation layer brings together content from the different systems. This layer acts as a single point of access for data, making it easy for users to get the content they need, regardless of where it is stored.",{"type":23,"tag":1171,"props":2225,"children":2226},{},[2227],{"type":1175,"value":2228},"A few benefits of a federated architecture include:",{"type":23,"tag":1294,"props":2230,"children":2231},{},[2232,2237,2242],{"type":23,"tag":1298,"props":2233,"children":2234},{},[2235],{"type":1175,"value":2236},"Increased flexibility and agility: Each system is responsible for its data and logic, which gives them more autonomy and flexibility. This makes it easier to manage and update systems and makes it easier to add new systems to the architecture.",{"type":23,"tag":1298,"props":2238,"children":2239},{},[2240],{"type":1175,"value":2241},"Improved security: A federated architecture can reduce the attack surface. When data and systems are tightly coupled, a vulnerability in one system can compromise other systems. A federated architecture reduces the risk of this happening by decoupling data and systems.",{"type":23,"tag":1298,"props":2243,"children":2244},{},[2245],{"type":1175,"value":2246},"Reduced complexity: A federated architecture can simplify how data is managed. In a traditional architecture, data is often stored in multiple systems, making it difficult to keep track of. A federated architecture brings together data from different systems into a single, unified view, which makes it easier to manage, inspect, and use data. The implementation layer has one standardized, unified way to ask for the content.",{"type":23,"tag":1171,"props":2248,"children":2249},{},[2250],{"type":1175,"value":2251},"Overall, a federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security.",{"type":23,"tag":1171,"props":2253,"children":2254},{},[2255],{"type":23,"tag":1234,"props":2256,"children":2259},{"alt":2257,"loading":1238,"provider":1239,"sizes":1240,"src":2258,"width":13},"Federated Content Platform","https://media.graphassets.com/4wC9B4MBSaZDeQvB26QA",[],{"type":23,"tag":1178,"props":2261,"children":2263},{"id":2262},"the-importance-of-autonomy-in-a-federated-architecture",[2264],{"type":1175,"value":2265},"The importance of autonomy in a federated architecture",{"type":23,"tag":1171,"props":2267,"children":2268},{},[2269],{"type":1175,"value":2270},"While most federation articles focus on the benefits of unification, system autonomy is really the key benefit. This autonomy means that systems can be developed and managed independently without worrying about the other systems in the architecture. This can be a major advantage, as it allows organizations to be more agile and responsive to change while still maintaining standards.",{"type":23,"tag":1171,"props":2272,"children":2273},{},[2274],{"type":1175,"value":2275},"This enforced autonomy increases the reach of standardization. In an e-commerce application, product information — pricing, description, categorization — should be standardized wherever it’s used. Without Content Federation, the product data would be re-entered in the systems that don’t house it. When an editor of the blog goes to create a post about a product, they introduce the human potential for error. If they merely select a product from the e-commerce system, they can rely on the owners of that data to keep their data standardized.",{"type":23,"tag":1171,"props":2277,"children":2278},{},[2279],{"type":1175,"value":2280},"When the standards for a particular piece of data changes, the data is changed in the home system, and each other system is ready to receive that change. No additional work necessary.",{"type":23,"tag":1178,"props":2282,"children":2283},{"id":1383},[2284],{"type":1175,"value":1386},{"type":23,"tag":1171,"props":2286,"children":2287},{},[2288],{"type":1175,"value":2289},"A federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security. Federation brings autonomy to the data layer while also giving rise to a unification layer Content Federation brings a deeper sense of standardization through systemic change instead of human change. Without autonomy, we have complexity; without unification and standardization, we have glue code. We need both in the modern stack.",{"title":5,"searchDepth":34,"depth":34,"links":2291},[2292,2293],{"id":2262,"depth":34,"text":2265},{"id":1383,"depth":34,"text":1386},"content:4.writing:the-future-of-headless-cms-content-federation-with-graphql.md","4.writing/the-future-of-headless-cms-content-federation-with-graphql.md",{"_path":869,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":868,"description":2297,"id":2298,"slug":2299,"date":2300,"image":2301,"canonical_url":2302,"tags":2303,"collection_id":1167,"body":2307,"_type":36,"_id":2398,"_source":38,"_file":2399,"_extension":40},"After an exciting journey at Uniform, it's time for a new adventure. At Uniform, we thrived during...",1569148,"new-job-alert","2023-08-16T13:42:10Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadfg5ciysfamka395zir.png","https://dev.to/timbenniks/new-job-alert-443n",[2304,2305,2306],"career","webdev","devrel",{"type":20,"children":2308,"toc":2396},[2309,2322,2327,2340,2345,2376,2381,2386,2391],{"type":23,"tag":1171,"props":2310,"children":2311},{},[2312,2314,2320],{"type":1175,"value":2313},"After an exciting journey at ",{"type":23,"tag":1209,"props":2315,"children":2318},{"href":2316,"rel":2317},"https://uniform.dev",[1213],[2319],{"type":1175,"value":663},{"type":1175,"value":2321},", it's time for a new adventure.",{"type":23,"tag":1171,"props":2323,"children":2324},{},[2325],{"type":1175,"value":2326},"At Uniform, we thrived during the pandemic, hiring the best talent remotely and finding success in a new product category. I not only learnt a lot but also created value towards company perception and trust along the way.",{"type":23,"tag":1171,"props":2328,"children":2329},{},[2330,2332,2338],{"type":1175,"value":2331},"Inspired by the startup life, I wanted a new challenge at a company further along their journey. ",{"type":23,"tag":1209,"props":2333,"children":2336},{"href":2334,"rel":2335},"https://hygraph.com",[1213],[2337],{"type":1175,"value":88},{"type":1175,"value":2339}," caught my attention with its product-led growth, open source SDKs, solid product-market fit, and strong fit for developer relations.",{"type":23,"tag":1171,"props":2341,"children":2342},{},[2343],{"type":1175,"value":2344},"I'm excited to join Hygraph as the Developer Relations Lead for Outreach and Awareness. With 15 years of agency experience, deep knowledge of the developer space, and connections within the MACH alliance, I'm confident in bringing my skills to this product-led growth company.",{"type":23,"tag":1171,"props":2346,"children":2347},{},[2348,2350,2357,2359,2366,2368,2375],{"type":1175,"value":2349},"Working alongside experienced professionals like ",{"type":23,"tag":1209,"props":2351,"children":2354},{"href":2352,"rel":2353},"https://www.linkedin.com/in/bryanlrobinson/",[1213],[2355],{"type":1175,"value":2356},"Bryan Robinson",{"type":1175,"value":2358}," (Orbit, Algolia, Sanity) and ",{"type":23,"tag":1209,"props":2360,"children":2363},{"href":2361,"rel":2362},"https://www.linkedin.com/in/lowisren/",[1213],[2364],{"type":1175,"value":2365},"Lo Etheridge",{"type":1175,"value":2367}," (Sanity, and many other dev gigs), I'll be part of Hygraph's developer relations team within the larger marketing organization led by ",{"type":23,"tag":1209,"props":2369,"children":2372},{"href":2370,"rel":2371},"https://www.linkedin.com/in/omergokcetumer/",[1213],[2373],{"type":1175,"value":2374},"Omer Gokce Tumer",{"type":1175,"value":1218},{"type":23,"tag":1171,"props":2377,"children":2378},{},[2379],{"type":1175,"value":2380},"Hygraph is at the forefront of the composability and content federation space. They provide a solution to the challenges faced by scaled headless architectures, bringing stability and flexibility. Companies like Netlify, Conscia, and Octoo have embraced Hygraph's approach to content federation, validating the category.",{"type":23,"tag":1171,"props":2382,"children":2383},{},[2384],{"type":1175,"value":2385},"If you're seeking content federation at scale, Hygraph has a remarkable head start and addresses the current code-first problems in the MACH architecture space.",{"type":23,"tag":1171,"props":2387,"children":2388},{},[2389],{"type":1175,"value":2390},"I'm eager to get started and can't wait for what lies ahead. See you soon!",{"type":23,"tag":1171,"props":2392,"children":2393},{},[2394],{"type":1175,"value":2395},"Cheers,\nTim",{"title":5,"searchDepth":34,"depth":34,"links":2397},[],"content:4.writing:new-job-alert.md","4.writing/new-job-alert.md",{"_path":899,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":898,"description":2401,"id":2402,"slug":2403,"date":2404,"image":2405,"canonical_url":2406,"tags":2407,"collection_id":1167,"body":2409,"_type":36,"_id":2653,"_source":38,"_file":2654,"_extension":40},"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about...",1533031,"this-is-headless-20","2023-07-11T07:48:19Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4ykeb6acv0q288ygpaj.png","https://www.linkedin.com/pulse/headless-20-tim-benniks/",[2305,1831,2187,2408],"architecture",{"type":20,"children":2410,"toc":2647},[2411,2424,2430,2435,2440,2460,2474,2482,2486,2492,2497,2510,2515,2523,2527,2539,2545,2550,2555,2578,2583,2588,2593,2601,2606,2612,2617,2622,2635,2640],{"type":23,"tag":1171,"props":2412,"children":2413},{},[2414,2416,2422],{"type":1175,"value":2415},"That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about the ",{"type":23,"tag":1209,"props":2417,"children":2420},{"href":2418,"rel":2419},"https://www.linkedin.com/pulse/mach-monolith-tim-benniks",[1213],[2421],{"type":1175,"value":2098},{"type":1175,"value":2423}," before. Here, I’ll describe how to avoid ending up in a codebase full of technical debt, aka glue code—chores that overburden and frustrate developers.",{"type":23,"tag":1480,"props":2425,"children":2427},{"id":2426},"the-why",[2428],{"type":1175,"value":2429},"The why",{"type":23,"tag":1171,"props":2431,"children":2432},{},[2433],{"type":1175,"value":2434},"Headless technology has gained prominence in web development, offering benefits like higher performance, front-end freedom, DX features, and management through APIs—a thrill for techies. However, at scale, complexities arise due to an endless need for glue code for connecting content sources, let alone authoring issues caused by disconnects between content editors and front-end presentation.",{"type":23,"tag":1171,"props":2436,"children":2437},{},[2438],{"type":1175,"value":2439},"In particular, separation of content authoring and presentation results in a steep learning curve for content editors, who would need help to preview their work and ensure a correct display. But how do you preview content that connects to multiple sources, all offering some form of preview capability? As a fix, people do either of the following:",{"type":23,"tag":1294,"props":2441,"children":2442},{},[2443,2455],{"type":23,"tag":1298,"props":2444,"children":2445},{},[2446,2448,2453],{"type":1175,"value":2447},"Connect to the sources via CMS plugins and add data-modeling capabilities for page layouts unrelated to core CMS functionalities. For more details, read my article on the ",{"type":23,"tag":1209,"props":2449,"children":2451},{"href":2418,"rel":2450},[1213],[2452],{"type":1175,"value":2098},{"type":1175,"value":2454},". ",{"type":23,"tag":1298,"props":2456,"children":2457},{},[2458],{"type":1175,"value":2459},"Hard-code all the connections in the front end, forcing content editors to file IT tickets for updates.",{"type":23,"tag":1171,"props":2461,"children":2462},{},[2463,2465,2472],{"type":1175,"value":2464},"For web projects to succeed, since developers, marketers, and content editors boast ",{"type":23,"tag":1209,"props":2466,"children":2469},{"href":2467,"rel":2468},"https://dev.to/timbenniks/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pros-17k",[1213],[2470],{"type":1175,"value":2471},"different strengths",{"type":1175,"value":2473},", teams must be able to collaborate harmoniously and seamlessly. For all that headless promises freedom and excellent developer experience, it pushes the pain threshold of marketers.",{"type":23,"tag":1171,"props":2475,"children":2476},{},[2477],{"type":23,"tag":1234,"props":2478,"children":2481},{"alt":2479,"loading":1238,"provider":1239,"sizes":1240,"src":2480,"width":13},"Connecting lots of services creates glue code and technical debt.","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7a0lii31280n03qva7v.png",[],{"type":23,"tag":1171,"props":2483,"children":2484},{},[2485],{"type":1175,"value":2479},{"type":23,"tag":1480,"props":2487,"children":2489},{"id":2488},"the-how",[2490],{"type":1175,"value":2491},"The how",{"type":23,"tag":1171,"props":2493,"children":2494},{},[2495],{"type":1175,"value":2496},"Two things are paramount as a fix:",{"type":23,"tag":1294,"props":2498,"children":2499},{},[2500,2505],{"type":23,"tag":1298,"props":2501,"children":2502},{},[2503],{"type":1175,"value":2504},"Simple, easy-to-maintain front-end codebases that contain minimal glue code and technical debt. ",{"type":23,"tag":1298,"props":2506,"children":2507},{},[2508],{"type":1175,"value":2509},"Elimination of the need for content editors to tackle the abstractness of a composable architecture populated by a plethora of different tools. Content editors need a visual-editing capability across headless sources to ensure the display is exactly what they desire without giving up on a solid technical architecture.",{"type":23,"tag":1171,"props":2511,"children":2512},{},[2513],{"type":1175,"value":2514},"In other words, content editors need a page-composition process similar in concept to that of GraphQL, i.e., one that returns only the needed properties and content of all page components. All the editors need to do is add the component props with data from external sources—with no need to know the data’s origin. The result is curated, page-specific JSON output that can be consumed by the front end, which need not connect to external data sources.",{"type":23,"tag":1171,"props":2516,"children":2517},{},[2518],{"type":23,"tag":1234,"props":2519,"children":2522},{"alt":2520,"loading":1238,"provider":1239,"sizes":1240,"src":2521,"width":13},"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually.","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fu1m8gqp9r20nq7fx7dy.png",[],{"type":23,"tag":1171,"props":2524,"children":2525},{},[2526],{"type":1175,"value":2520},{"type":23,"tag":1171,"props":2528,"children":2529},{},[2530,2532,2537],{"type":1175,"value":2531},"What emerges is a transparent and simple platform on which to compose pages based on design components, whose props point to a field in an external API endpoint. That platform would ",{"type":23,"tag":1632,"props":2533,"children":2534},{},[2535],{"type":1175,"value":2536},"not",{"type":1175,"value":2538}," be a CMS or data-federation tool. All it needs to know is which component points to which data source for a specific page composition.",{"type":23,"tag":1480,"props":2540,"children":2542},{"id":2541},"a-visual-workspace",[2543],{"type":1175,"value":2544},"A visual workspace",{"type":23,"tag":1171,"props":2546,"children":2547},{},[2548],{"type":1175,"value":2549},"Therefore, the job of the platform, which represents all the design components with linked data sources (CMS, PIM, DAM), is to connect them and store the result like a curated GraphQL query on a CDN edge. The only data this platform would potentially store are one-off content strings like “latest blog posts” or the fact that a particular component variant, e.g., the image on the left or right, is shown in a specific context.",{"type":23,"tag":1171,"props":2551,"children":2552},{},[2553],{"type":1175,"value":2554},"That setup gives rise to a streamlined workflow:",{"type":23,"tag":1294,"props":2556,"children":2557},{},[2558,2563,2568,2573],{"type":23,"tag":1298,"props":2559,"children":2560},{},[2561],{"type":1175,"value":2562},"To publish content, editors visually connect external data to components properties. That data can come from any source.",{"type":23,"tag":1298,"props":2564,"children":2565},{},[2566],{"type":1175,"value":2567},"Editors compose their design-system components visually to represent the page design they want.",{"type":23,"tag":1298,"props":2569,"children":2570},{},[2571],{"type":1175,"value":2572},"A curated JSON structure of the composition is saved to the CDN edge.",{"type":23,"tag":1298,"props":2574,"children":2575},{},[2576],{"type":1175,"value":2577},"The front end connects to the API endpoint of the platform. An intuitive and light SDK connects to the CDN edge, keeping the front end code simple.",{"type":23,"tag":1171,"props":2579,"children":2580},{},[2581],{"type":1175,"value":2582},"To make it all visual for content editors, match the naming of the design-system components in the codebase to the ones in the platform and have the SDK show the components in a preview window. Simultaneously, content editors can bind data from external sources to the props and design how the components should look and behave.",{"type":23,"tag":1171,"props":2584,"children":2585},{},[2586],{"type":1175,"value":2587},"With solid cache purging for data sources, you can create dynamic pages that connect to any amount of data and deliver in less than 50ms from a CDN edge near you. In case of external data-source changes, the TTL on the field or a webhook purges the cache, resulting in fresh data. ",{"type":23,"tag":1171,"props":2589,"children":2590},{},[2591],{"type":1175,"value":2592},"If used in conjunction with the latest Next, NuxtJS, or Astro features, this approach leads to a robust yet no-frills front end with no need to connect to data sources in code or mapping their data to component props. Talk about happy developers!",{"type":23,"tag":1171,"props":2594,"children":2595},{},[2596],{"type":23,"tag":1234,"props":2597,"children":2600},{"alt":2598,"loading":1238,"provider":1239,"sizes":1240,"src":2599,"width":13},"Image description","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gxchvyapco21ibgpkxl9.png",[],{"type":23,"tag":1171,"props":2602,"children":2603},{},[2604],{"type":1175,"value":2605},"Map design system component props to individual API response fields to create a visual editor that works across headless sources.",{"type":23,"tag":1480,"props":2607,"children":2609},{"id":2608},"a-recap",[2610],{"type":1175,"value":2611},"A recap",{"type":23,"tag":1171,"props":2613,"children":2614},{},[2615],{"type":1175,"value":2616},"Connecting everything code-first at scale is painful for developers and content editors alike, the former having to maintain the connections and content mappings, and the latter getting lost in the abstract tools with no clues of what happens on a click to publish.",{"type":23,"tag":1171,"props":2618,"children":2619},{},[2620],{"type":1175,"value":2621},"A composable architecture of headless sources must be a team buy, not just a developer choice. What’s needed is a visual workspace that’s—",{"type":23,"tag":1294,"props":2623,"children":2624},{},[2625,2630],{"type":23,"tag":1298,"props":2626,"children":2627},{},[2628],{"type":1175,"value":2629},"Friendly to content editors but also feature-rich for developers while maintaining excellent technical architecture without compromises. ",{"type":23,"tag":1298,"props":2631,"children":2632},{},[2633],{"type":1175,"value":2634},"Agnostic and not a one-size-fits-all offering from a single CMS vendor. ",{"type":23,"tag":1171,"props":2636,"children":2637},{},[2638],{"type":1175,"value":2639},"In other words, we need a modern, composable form of the old-school DXPs like Adobe AEM. I believe what I described above resembles digital experience composition as coined by Gartner.",{"type":23,"tag":1171,"props":2641,"children":2642},{},[2643],{"type":23,"tag":1632,"props":2644,"children":2645},{},[2646],{"type":1175,"value":371},{"title":5,"searchDepth":34,"depth":34,"links":2648},[2649,2650,2651,2652],{"id":2426,"depth":1764,"text":2429},{"id":2488,"depth":1764,"text":2491},{"id":2541,"depth":1764,"text":2544},{"id":2608,"depth":1764,"text":2611},"content:4.writing:this-is-headless-20.md","4.writing/this-is-headless-20.md",{"_path":887,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":886,"description":2656,"id":2657,"slug":2658,"date":2659,"image":2660,"canonical_url":2661,"tags":2662,"collection_id":1167,"body":2663,"_type":36,"_id":2755,"_source":38,"_file":2756,"_extension":40},"In recent years, headless technology, which boosts performance, developer experience, and...",1517485,"the-lost-promise-of-headless","2023-06-26T18:18:19Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrvfb6a8wh5lt0mbyzat.png","https://uniform.dev/blogs/the-lost-promise-of-headless",[2187,2408,1831],{"type":20,"children":2664,"toc":2750},[2665,2670,2675,2681,2686,2704,2710,2715,2720,2726,2731,2745],{"type":23,"tag":1171,"props":2666,"children":2667},{},[2668],{"type":1175,"value":2669},"In recent years, headless technology, which boosts performance, developer experience, and best-of-breed headless systems, has gained significant traction in web development. At its core, headless streamlines and accelerates the process of building and delivering web experiences  through APIs, which separates content creation and management from presentation. ",{"type":23,"tag":1171,"props":2671,"children":2672},{},[2673],{"type":1175,"value":2674},"However, despite the excitement and promise, headless technology has fallen short in living up to its potential in several key areas.",{"type":23,"tag":1178,"props":2676,"children":2678},{"id":2677},"technical-complexity",[2679],{"type":1175,"value":2680},"Technical complexity",{"type":23,"tag":1171,"props":2682,"children":2683},{},[2684],{"type":1175,"value":2685},"The primary appeal of headless technology lies in decoupling content creation and presentation, as a result of which developers can work on the presentation layer with their preferred tools and frameworks while content editors can focus on building and managing content. However, that separation comes at a cost. Specifically:",{"type":23,"tag":1294,"props":2687,"children":2688},{},[2689,2694,2699],{"type":23,"tag":1298,"props":2690,"children":2691},{},[2692],{"type":1175,"value":2693},"To connect the multiple layers, a significant amount of code must be written, which leads to technical debt, a heavier workload, and inflexibility. ",{"type":23,"tag":1298,"props":2695,"children":2696},{},[2697],{"type":1175,"value":2698},"Adding data to content models to address design-driven choices for an output channel, e.g., checkboxes to enlarge an image, pollutes the data model. The more design-related and channel-specific data you add to content models, the more technical debt you create.",{"type":23,"tag":1298,"props":2700,"children":2701},{},[2702],{"type":1175,"value":2703},"If you must connect a different data source to the same front-end component, but the content models do not align, issues arise. ",{"type":23,"tag":1178,"props":2705,"children":2707},{"id":2706},"content-editing-challenges",[2708],{"type":1175,"value":2709},"Content-editing challenges",{"type":23,"tag":1171,"props":2711,"children":2712},{},[2713],{"type":1175,"value":2714},"Another major challenge with headless technology is the disconnect between content editors and the systems they work with. Due to the abstract nature of headless CMS, content editors often struggle to pinpoint how their content will be displayed on the front end, leading to confusion, frustration, and a steep learning curve for novices.",{"type":23,"tag":1171,"props":2716,"children":2717},{},[2718],{"type":1175,"value":2719},"Moreover, the lack of a clear connection between content and presentation makes it difficult for content editors to preview their work and ensure that it looks and functions as intended. A suboptimal user experience results, let alone a time sink for revisions and troubleshooting.",{"type":23,"tag":1178,"props":2721,"children":2723},{"id":2722},"the-way-forward-dxcp",[2724],{"type":1175,"value":2725},"The way forward: DXCP",{"type":23,"tag":1171,"props":2727,"children":2728},{},[2729],{"type":1175,"value":2730},"Without question, despite the promise of headless technology for revolutionizing the way we build web experiences, serious hurdles remain. To overcome them, tools and processes that facilitate team collaboration and streamline the development process are necessary so that developers and content editors can work closely together to bridge the gap between content creation and presentation.",{"type":23,"tag":1171,"props":2732,"children":2733},{},[2734,2736,2743],{"type":1175,"value":2735},"A proven solution is a ",{"type":23,"tag":1209,"props":2737,"children":2740},{"href":2738,"rel":2739},"https://uniform.dev/what-is-digital-experience-composition",[1213],[2741],{"type":1175,"value":2742},"digital experience composition platform (DXCP)",{"type":1175,"value":2744},", which seamlessly integrates content and presentation. While on that platform, nondevelopers can visually create and manage digital experiences with content from multiple sources, delivering those experiences agnostically to a front-end of choice, significantly reducing technical debt, and gaining flexibility. Businesses can then adapt and innovate much faster, especially since the connection to all headless systems and APIs occurs in the DXCP, and the code remains clean.",{"type":23,"tag":1171,"props":2746,"children":2747},{},[2748],{"type":1175,"value":2749},"What’s more, the incorporation of a DXCP into the development process affords content editors a clear view of how their content will be displayed and the ability to interact with the presentation layer. Plus, the absence of data silos means a more streamlined and efficient workflow as well as a more intuitive user experience for both content creators and developers.",{"title":5,"searchDepth":34,"depth":34,"links":2751},[2752,2753,2754],{"id":2677,"depth":34,"text":2680},{"id":2706,"depth":34,"text":2709},{"id":2722,"depth":34,"text":2725},"content:4.writing:the-lost-promise-of-headless.md","4.writing/the-lost-promise-of-headless.md",{"_path":857,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":856,"description":2758,"id":2759,"slug":2760,"date":2761,"image":2762,"canonical_url":2763,"tags":2764,"collection_id":1167,"body":2767,"_type":36,"_id":3008,"_source":38,"_file":3009,"_extension":40},"Building outstanding user experiences takes, first and foremost, effective collaboration between...",1456239,"level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","2023-05-03T15:49:29Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhfuu567f1khlxvglcn0.png","https://uniform.dev/blogs/level-up-your-collaboration-game-developer-insights-for-winning-with",[2305,2765,2766],"marketing","collaboration",{"type":20,"children":2768,"toc":3002},[2769,2774,2779,2784,2789,2794,2799,2833,2838,2843,2866,2871,2877,2882,2905,2910,2916,2921,2934,2939,2945,2950,2955,2966,2979,2985,2990],{"type":23,"tag":1171,"props":2770,"children":2771},{},[2772],{"type":1175,"value":2773},"Building outstanding user experiences takes, first and foremost, effective collaboration between marketing and development teams. Oftentimes, however, those teams’ different perspectives lead to misunderstandings and opacity, which could seriously impact progress and revenue. Over the last two years of interacting and working within a marketing department as a seasoned technical leader, I've developed strategies to enhance collaboration, boost cross-team communications, and promote project success. ",{"type":23,"tag":1171,"props":2775,"children":2776},{},[2777],{"type":1175,"value":2778},"Below are the steps to take.",{"type":23,"tag":1171,"props":2780,"children":2781},{},[2782],{"type":1175,"value":2783},"##Set clear objectives",{"type":23,"tag":1171,"props":2785,"children":2786},{},[2787],{"type":1175,"value":2788},"Since both development and marketing play vital roles in implementing user experiences that drive business goals, the contributors in question must share clear, common objectives, e.g., projected sales, number of service signups, and brand messaging. ",{"type":23,"tag":1171,"props":2790,"children":2791},{},[2792],{"type":1175,"value":2793},"Reaching those goals sometimes requires both technical and marketing-driven activities, such as code refactoring, site-performance boosts, messaging-success measurements, and analytics gathering. Those work streams, whose specifics are highly contextual to the specific job marketers or developers do, could easily cause conflict.",{"type":23,"tag":1171,"props":2795,"children":2796},{},[2797],{"type":1175,"value":2798},"To avoid miscommunication, do the following:",{"type":23,"tag":2800,"props":2801,"children":2802},"ol",{},[2803,2813,2823],{"type":23,"tag":1298,"props":2804,"children":2805},{},[2806,2811],{"type":23,"tag":1859,"props":2807,"children":2808},{},[2809],{"type":1175,"value":2810},"Invite participation from all team members.",{"type":1175,"value":2812}," Involve them in planning sessions, explain the background of the strategies to be built, and ascertain that everyone is on the same page.",{"type":23,"tag":1298,"props":2814,"children":2815},{},[2816,2821],{"type":23,"tag":1859,"props":2817,"children":2818},{},[2819],{"type":1175,"value":2820},"Set SMART goals.",{"type":1175,"value":2822}," Create specific, measurable, attainable, relevant, and time-bound objectives.",{"type":23,"tag":1298,"props":2824,"children":2825},{},[2826,2831],{"type":23,"tag":1859,"props":2827,"children":2828},{},[2829],{"type":1175,"value":2830},"Plan together",{"type":1175,"value":2832},". Align schedules based on the teams’ different workflows.",{"type":23,"tag":1171,"props":2834,"children":2835},{},[2836],{"type":1175,"value":2837},"##Understand how the other discipline works",{"type":23,"tag":1171,"props":2839,"children":2840},{},[2841],{"type":1175,"value":2842},"A healthy dose of the qualities below is key:",{"type":23,"tag":1294,"props":2844,"children":2845},{},[2846,2856],{"type":23,"tag":1298,"props":2847,"children":2848},{},[2849,2854],{"type":23,"tag":1859,"props":2850,"children":2851},{},[2852],{"type":1175,"value":2853},"Respect.",{"type":1175,"value":2855}," To minimize friction, respect for each other's operating methods, styles, and process is essential. Besides acquiring an understanding of the various workflows, team members must be willing to compromise for alignment’s sake.",{"type":23,"tag":1298,"props":2857,"children":2858},{},[2859,2864],{"type":23,"tag":1859,"props":2860,"children":2861},{},[2862],{"type":1175,"value":2863},"Patience.",{"type":1175,"value":2865}," Be accommodating, thoughtful, and tolerant when explaining processes to the other team. A unified approach like Agile project management can forge collaboration by breaking projects into stages, constantly engaging with stakeholders, and enabling both teams to simultaneously track goals and meet objectives.",{"type":23,"tag":1171,"props":2867,"children":2868},{},[2869],{"type":1175,"value":2870},"Remember, a world of difference exists in how developers and marketers think. Establishing a mechanism through which they can learn about one another's tasks and routines goes a long way in championing collaboration.",{"type":23,"tag":1178,"props":2872,"children":2874},{"id":2873},"leverage-each-others-skills",[2875],{"type":1175,"value":2876},"Leverage each other’s skills",{"type":23,"tag":1171,"props":2878,"children":2879},{},[2880],{"type":1175,"value":2881},"Developers and marketers contribute unique, value-add skills:",{"type":23,"tag":1294,"props":2883,"children":2884},{},[2885,2895],{"type":23,"tag":1298,"props":2886,"children":2887},{},[2888,2893],{"type":23,"tag":1859,"props":2889,"children":2890},{},[2891],{"type":1175,"value":2892},"Developers",{"type":1175,"value":2894}," can offer product or technical insights by clarifying why certain code approaches and rendering modes help reach marketing goals.",{"type":23,"tag":1298,"props":2896,"children":2897},{},[2898,2903],{"type":23,"tag":1859,"props":2899,"children":2900},{},[2901],{"type":1175,"value":2902},"Marketers",{"type":1175,"value":2904}," can share user feedback, messaging learnings, and test data with developers as support for spiffing up the UI and product features.",{"type":23,"tag":1171,"props":2906,"children":2907},{},[2908],{"type":1175,"value":2909},"Essentially, developers work in the context of the “how,” and marketers, of the ”why.” Both are equally valuable for successful projects.",{"type":23,"tag":1178,"props":2911,"children":2913},{"id":2912},"make-data-based-decisions",[2914],{"type":1175,"value":2915},"Make data-based decisions",{"type":23,"tag":1171,"props":2917,"children":2918},{},[2919],{"type":1175,"value":2920},"Data is crucial for measuring success. Developers and marketers play a different role vis-à-vis data:",{"type":23,"tag":1294,"props":2922,"children":2923},{},[2924,2929],{"type":23,"tag":1298,"props":2925,"children":2926},{},[2927],{"type":1175,"value":2928},"Developers create technology for harnessing data that marketers need to optimize conversion.",{"type":23,"tag":1298,"props":2930,"children":2931},{},[2932],{"type":1175,"value":2933},"Marketers collect data and strategize campaigns accordingly. ",{"type":23,"tag":1171,"props":2935,"children":2936},{},[2937],{"type":1175,"value":2938},"Using analytics tools and personalization engines is instrumental for fulfilling project goals. Ultimately, developers must find a way to integrate “hated tools” so that both teams are happy.",{"type":23,"tag":1178,"props":2940,"children":2942},{"id":2941},"use-the-tools-that-appeal-to-both-teams",[2943],{"type":1175,"value":2944},"Use the tools that appeal to both teams",{"type":23,"tag":1171,"props":2946,"children":2947},{},[2948],{"type":1175,"value":2949},"Tools that propel collaboration fall into different categories. For example, Jira and Linear are process systems, and Figma and Zeplin are design devices. Other tools are slated for website architecture.",{"type":23,"tag":1171,"props":2951,"children":2952},{},[2953],{"type":1175,"value":2954},"Even though developers love the freedom to choose the tools they prefer to build websites, it comes at the price of abstract interfaces and many open tabs for marketers. As technology evolves, techies must keep up with industry trends without being bogged down by marketers’ tool choices. That’s where headless has failed us: The pendulum of architecture choices to build websites has swung too far. Developers love it, yet marketers hate it. ",{"type":23,"tag":1171,"props":2956,"children":2957},{},[2958,2959,2964],{"type":1175,"value":1947},{"type":23,"tag":1209,"props":2960,"children":2962},{"href":2738,"rel":2961},[1213],[2963],{"type":1175,"value":2742},{"type":1175,"value":2965}," affords both developers and marketers control of features, content, and the ever-ticking clock. Though technically agnostic, a DXCP—",{"type":23,"tag":1294,"props":2967,"children":2968},{},[2969,2974],{"type":23,"tag":1298,"props":2970,"children":2971},{},[2972],{"type":1175,"value":2973},"Helps developers funnel data to a front-end channel of their choice without compromises. ",{"type":23,"tag":1298,"props":2975,"children":2976},{},[2977],{"type":1175,"value":2978},"Enables marketers to independently and visually edit content in a no-code environment without having to seek developer assistance.",{"type":23,"tag":1178,"props":2980,"children":2982},{"id":2981},"faithfully-perform-the-paramount-steps",[2983],{"type":1175,"value":2984},"Faithfully perform the paramount steps",{"type":23,"tag":1171,"props":2986,"children":2987},{},[2988],{"type":1175,"value":2989},"By setting clear objectives, understanding each other's processes, leveraging each other’s unique skills, making data-driven decisions, and adopting tools that cater to both parties, marketing and development teams can cooperate smoothly, eliminate roadblocks, and deliver phenomenal projects. With the right strategies and mindset, the sky's the limit for the potential of those high-performing teams to achieve exceptional results.",{"type":23,"tag":1171,"props":2991,"children":2992},{},[2993,3000],{"type":23,"tag":1209,"props":2994,"children":2997},{"href":2995,"rel":2996},"https://uniform.dev/demo",[1213],[2998],{"type":1175,"value":2999},"Check out Uniform DXCP",{"type":1175,"value":3001},", on which developers and business teams can access all the tools they need to deliver well and fast.",{"title":5,"searchDepth":34,"depth":34,"links":3003},[3004,3005,3006,3007],{"id":2873,"depth":34,"text":2876},{"id":2912,"depth":34,"text":2915},{"id":2941,"depth":34,"text":2944},{"id":2981,"depth":34,"text":2984},"content:4.writing:level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","4.writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md",{"_path":850,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":849,"description":3011,"id":3012,"slug":3013,"date":3014,"image":3015,"canonical_url":3016,"tags":3017,"collection_id":3019,"body":3020,"_type":36,"_id":3410,"_source":38,"_file":3411,"_extension":40},"If you have used a webcam before you know what it means to look like shit on camera. Even the most...",1407808,"how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","2023-03-20T13:01:35Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finfev45k3ve6i4dgtu2r.png","https://dev.to/timbenniks/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps-5eo4",[3018],"webcam",22299,{"type":20,"children":3021,"toc":3404},[3022,3027,3032,3038,3052,3057,3065,3070,3077,3091,3096,3101,3107,3112,3117,3122,3128,3133,3139,3144,3150,3155,3162,3167,3172,3178,3183,3188,3194,3199,3204,3212,3217,3235,3240,3258,3263,3269,3274,3280,3285,3308,3316,3322,3327,3333,3346,3366,3372,3377,3383,3388,3396],{"type":23,"tag":1171,"props":3023,"children":3024},{},[3025],{"type":1175,"value":3026},"If you have used a webcam before you know what it means to look like shit on camera. Even the most expensive consumer webcams produce a “meh” result. So why do webcams suck? It’s their design. The webcam form factor has a bunch physical challenges that limits them from producing a good looking picture.",{"type":23,"tag":1171,"props":3028,"children":3029},{},[3030],{"type":1175,"value":3031},"Beware, the ideas outlined below are based on my experience and are by far not comprehensive or complete. That is not the idea of this post. Someone in the field of cameras will probably pick this apart on details. The global ideas stand, however.",{"type":23,"tag":1480,"props":3033,"children":3035},{"id":3034},"why-webcams-suck",[3036],{"type":1175,"value":3037},"Why webcams suck",{"type":23,"tag":1171,"props":3039,"children":3040},{},[3041,3043,3050],{"type":1175,"value":3042},"Let’s get a bit technical. Almost all webcam ",{"type":23,"tag":1209,"props":3044,"children":3047},{"href":3045,"rel":3046},"https://en.wikipedia.org/wiki/Image_sensor",[1213],[3048],{"type":1175,"value":3049},"image sensors",{"type":1175,"value":3051}," are somewhere between 1/4\" and 1/3\" in size and they have a crop factor of around 7. Crop factor is a term that describes the difference between your camera’s sensor size and a traditional 35mm film frame. In the case of a webcam’s image sensor size and its crop factor a normal 18mm lens is the equivalent of a 126mm zoom lens. I might be a bit off here. The idea is that the crop factor plays a huge role.",{"type":23,"tag":1171,"props":3053,"children":3054},{},[3055],{"type":1175,"value":3056},"A webcam tends to be positioned around 40cm (1.3 feet) from your face. Due to the high crop factor an extremely wide angle lens is needed to get a good visual at that distance. Think about it. If a 18mm lens is the equivalent of an 126mm lens it means that something we consider normal on a SLR camera is extremely zoomed in on a webcam. So, we need to zoom it out. BY A LOT. To do that, we use a wide angle lens.",{"type":23,"tag":1171,"props":3058,"children":3059},{},[3060],{"type":23,"tag":1234,"props":3061,"children":3064},{"alt":3062,"height":1237,"loading":1238,"provider":1239,"sizes":1240,"src":3063,"width":13},"Sensor explanation","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16nf6fvk0v76s11zb1ph.png",[],{"type":23,"tag":1171,"props":3066,"children":3067},{},[3068],{"type":1175,"value":3069},"The problem is, the wider you go, the less sharp the picture gets. If there wasn’t enough against the webcam form factor: the lenses in webcams are generally cheap and shitty. The webcam’s physical limitations make it terrible in low light situations. Even with studio lighting the image can appear grainy.",{"type":23,"tag":3071,"props":3072,"children":3074},"h4",{"id":3073},"there-are-more-issues-yikes",[3075],{"type":1175,"value":3076},"There are more issues. Yikes.",{"type":23,"tag":1171,"props":3078,"children":3079},{},[3080,3082,3089],{"type":1175,"value":3081},"If you check out high quality content there is always a nice ",{"type":23,"tag":1209,"props":3083,"children":3086},{"href":3084,"rel":3085},"https://en.wikipedia.org/wiki/Bokeh",[1213],[3087],{"type":1175,"value":3088},"bokeh effect",{"type":1175,"value":3090},". The more light a lens can capture (aperture) and the bigger the image sensor, the more bokeh you can expect. Bokeh is awesome, everybody needs bokeh.",{"type":23,"tag":1171,"props":3092,"children":3093},{},[3094],{"type":1175,"value":3095},"In webcams autofocus works from about 1cm until 60cm (2feet). After that everything is always sharp. Webcams have a shallow depth of field. No bokeh. Not even close.",{"type":23,"tag":1171,"props":3097,"children":3098},{},[3099],{"type":1175,"value":3100},"Combine a small sensor, a crappy wide angle lens and a shallow depth of field and you have the average webcam. A 200 euro webcam isn’t that much better than a 50 euro webcam. Sad but true.",{"type":23,"tag":3071,"props":3102,"children":3104},{"id":3103},"but-why-does-my-phone-camera-look-so-good",[3105],{"type":1175,"value":3106},"But why does my phone camera look so good?",{"type":23,"tag":1171,"props":3108,"children":3109},{},[3110],{"type":1175,"value":3111},"A real camera or a phone have much more computational power. The camera on a phone is almost its main feature nowadays. It’s where all the advertisement dollars go. Phones have bigger sensors, better lenses and sometimes even a dedicated hardware chip just for image processing.",{"type":23,"tag":1171,"props":3113,"children":3114},{},[3115],{"type":1175,"value":3116},"Most webcams also have some sort of processing power on board but it always kind of sucks. It mainly compresses the video feed so it’s streamable over the USB connection. Due to the compressed stream the PC hardly needs any processing to show the video. You have no access to aperture, shutter speed or ISO though.",{"type":23,"tag":1171,"props":3118,"children":3119},{},[3120],{"type":1175,"value":3121},"You can only post process the signal. But the damage is usually already done at this stage.",{"type":23,"tag":3071,"props":3123,"children":3125},{"id":3124},"but-why-arent-there-any-amazing-webcams-out-there",[3126],{"type":1175,"value":3127},"But why aren’t there any amazing webcams out there?",{"type":23,"tag":1171,"props":3129,"children":3130},{},[3131],{"type":1175,"value":3132},"It’s definitely possible and there are niche brands that build 1000 euro webcams. But if you have to spend that much, why not just buy a real camera? The actual market for webcams is likely just for conference calls, skype with family (if you don’t have a laptop or a phone) or content creators who are starting out. If webcams get too expensive, nobody will buy them.",{"type":23,"tag":1480,"props":3134,"children":3136},{"id":3135},"you-can-make-it-work-however",[3137],{"type":1175,"value":3138},"You can make it work however",{"type":23,"tag":1171,"props":3140,"children":3141},{},[3142],{"type":1175,"value":3143},"In this post I’ll outline some tips and tricks you can apply to make your webcam look better. All techniques described below are applicable to any sort of camera setup. If you have a proper camera it just works better. We will be covering two topics. Lighting and post processing settings.",{"type":23,"tag":3071,"props":3145,"children":3147},{"id":3146},"lighting",[3148],{"type":1175,"value":3149},"Lighting",{"type":23,"tag":1171,"props":3151,"children":3152},{},[3153],{"type":1175,"value":3154},"Lighting is by far the most important part of your setup if you want to make your webcam image look good. As mentioned before, webcams are not great in low light situations. To overcome this limitation you have to blast the filming subject (you) with light.",{"type":23,"tag":3156,"props":3157,"children":3159},"h5",{"id":3158},"light-temperatures",[3160],{"type":1175,"value":3161},"Light temperatures",{"type":23,"tag":1171,"props":3163,"children":3164},{},[3165],{"type":1175,"value":3166},"There are different types of light that need different white balance settings. Generally light bulbs are yellow and sun light is blue. When combining both you can green a green overtone. White balancing your camera in software is very important in this case.",{"type":23,"tag":1171,"props":3168,"children":3169},{},[3170],{"type":1175,"value":3171},"I’d suggest not to use sunlight as it is hard to control. Close your blinds and go for light bulbs or LED lights only. There are many cheap options out there. Most lights can deliver different color temperatures ranging from 2500 (sunset) to 10000 (blue sky). Generally 5500 is considered noon daylight.",{"type":23,"tag":3156,"props":3173,"children":3175},{"id":3174},"shadows-diffusion",[3176],{"type":1175,"value":3177},"Shadows & diffusion",{"type":23,"tag":1171,"props":3179,"children":3180},{},[3181],{"type":1175,"value":3182},"Light can be cast in different ways. Harder shadows and lighting from the top is used to depict movie villains for example. If you want an dramatic look, use hard shadows and light yourself from one side. If you want to look more mainstream use softer shadows and light yourself from more angles.",{"type":23,"tag":1171,"props":3184,"children":3185},{},[3186],{"type":1175,"value":3187},"To generate softer shadows you have to diffuse your light. The more focused a light source is, the harder the shadows. The more diffusion is added, the softer the shadows. I personally use a couple of cloths of white t-shirt fabric stretched over my lights. Obviously there are also more professional ways to diffuse light but these are not available to everyone.",{"type":23,"tag":3156,"props":3189,"children":3191},{"id":3190},"your-light-setup",[3192],{"type":1175,"value":3193},"Your light setup",{"type":23,"tag":1171,"props":3195,"children":3196},{},[3197],{"type":1175,"value":3198},"Now that we have our color temperatures and diffusion out of the way, let’s talk about how to set up your lights so you are lit properly for the webcam. If you have very limited options, just put a big light behind your camera and blast your face with white light. This will give you a 100% quality boost over having no lights.",{"type":23,"tag":1171,"props":3200,"children":3201},{},[3202],{"type":1175,"value":3203},"If you have a little bit more flexibility I suggest using a three point light setup. The three point light setup is considered industry standard and will generally give you great results.",{"type":23,"tag":1171,"props":3205,"children":3206},{},[3207],{"type":23,"tag":1234,"props":3208,"children":3211},{"alt":3209,"height":1237,"loading":1238,"provider":1239,"sizes":1240,"src":3210,"width":13},"Lighting setup","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/keef3ou8sbzpg24acrzj.png",[],{"type":23,"tag":1171,"props":3213,"children":3214},{},[3215],{"type":1175,"value":3216},"The three point light setup assumes you have a “key light”, a “fill light” and a “hair light”.",{"type":23,"tag":1294,"props":3218,"children":3219},{},[3220,3225,3230],{"type":23,"tag":1298,"props":3221,"children":3222},{},[3223],{"type":1175,"value":3224},"Key light: This is the main light source. It shines directly on the subject, usually from the front right or front left. It establishes the overall look and feel of the shot.",{"type":23,"tag":1298,"props":3226,"children":3227},{},[3228],{"type":1175,"value":3229},"Fill light: The fill light provides balance to the key light by “filling in” the rest of the subject’s face with softer light. It should be positioned to the side opposite side of the key light.",{"type":23,"tag":1298,"props":3231,"children":3232},{},[3233],{"type":1175,"value":3234},"Hair light: Also called “back light” or “rim light”. This light creates a flattering rim of light around the subject, separating him or her from the background.",{"type":23,"tag":1171,"props":3236,"children":3237},{},[3238],{"type":1175,"value":3239},"This is how to set up your lights. To start turn all lights off so you are in a dark room.",{"type":23,"tag":1294,"props":3241,"children":3242},{},[3243,3248,3253],{"type":23,"tag":1298,"props":3244,"children":3245},{},[3246],{"type":1175,"value":3247},"Turn on your key light. Your key light is the brightest light in the scene and the one that creates the overall feel of the shot. Adjust its brightness to your liking. You should position the key light in a relatively high spot to reduce shadows on the face.",{"type":23,"tag":1298,"props":3249,"children":3250},{},[3251],{"type":1175,"value":3252},"Add your fill light. The fill light should be on the opposite side of the key light, but still in front of the subject. Don’t make the key and fill lights symmetrical. The fill should be at the subject’s face level, and should get rid of any remaining shadows. The intensity of the fill light should be about half that of the key light.",{"type":23,"tag":1298,"props":3254,"children":3255},{},[3256],{"type":1175,"value":3257},"Bring in the hair light. The back light separates you from the background. It can be placed anywhere behind the subject. Make sure to keep it out of the shot. Angle it down from a high position to achieve a sharp outline on the edge of the subject.",{"type":23,"tag":1171,"props":3259,"children":3260},{},[3261],{"type":1175,"value":3262},"If there are lights behind you, make sure these have a very low intensity so they do not distract from you, the subject of the shot. To make the shot more interesting you can add some fun colored lights behind you as long as they are not too distracting. This is obviously not needed but it’s a fun thing to add.",{"type":23,"tag":1480,"props":3264,"children":3266},{"id":3265},"application-settings",[3267],{"type":1175,"value":3268},"Application settings",{"type":23,"tag":1171,"props":3270,"children":3271},{},[3272],{"type":1175,"value":3273},"We are almost there! Let’s tweak some settings to make the camera quality appear much higher.",{"type":23,"tag":3071,"props":3275,"children":3277},{"id":3276},"turn-things-off",[3278],{"type":1175,"value":3279},"Turn things off.",{"type":23,"tag":1171,"props":3281,"children":3282},{},[3283],{"type":1175,"value":3284},"I have a Logitech webcam. This camera comes with a little control panel that allows for some post process tweaking of the camera feed. If you are well lit you can turn off a bunch of things in this interface. First of all, keep the settings for brightness, contrast, saturation and sharpness at the default. We will fix these at a later stage.",{"type":23,"tag":2800,"props":3286,"children":3287},{},[3288,3293,3298,3303],{"type":23,"tag":1298,"props":3289,"children":3290},{},[3291],{"type":1175,"value":3292},"Set the white balance on a fixed setting and make sure it is not set to auto. For my setup a white balance at around 4000 works.",{"type":23,"tag":1298,"props":3294,"children":3295},{},[3296],{"type":1175,"value":3297},"Make sure to turn off Backlight compensation and Gain. We do not need these as we are well lit.",{"type":23,"tag":1298,"props":3299,"children":3300},{},[3301],{"type":1175,"value":3302},"In the next tab make sure exposure is set to “auto”. If you attempt to expose yourself manually with a Logitech webcam all hell brakes loose. The image either looks like crap or your framerate will drop significantly.",{"type":23,"tag":1298,"props":3304,"children":3305},{},[3306],{"type":1175,"value":3307},"Make sure to turn off Low Light compensation. There is no need for this as you are well lit.",{"type":23,"tag":1171,"props":3309,"children":3310},{},[3311],{"type":23,"tag":1234,"props":3312,"children":3315},{"alt":3313,"height":1237,"loading":1238,"provider":1239,"sizes":1240,"src":3314,"width":13},"Webcam settings","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rktns1m78yyy1owfexqd.png",[],{"type":23,"tag":3071,"props":3317,"children":3319},{"id":3318},"color-correction",[3320],{"type":1175,"value":3321},"Color correction",{"type":23,"tag":1171,"props":3323,"children":3324},{},[3325],{"type":1175,"value":3326},"I use OBS, which comes with a great plugin to color correct the video feed from your webcam. The smallest adjustments give a great result. Stay subtle with the changes and your video will look a lot better fast.",{"type":23,"tag":3071,"props":3328,"children":3330},{"id":3329},"lut",[3331],{"type":1175,"value":3332},"LUT",{"type":23,"tag":1171,"props":3334,"children":3335},{},[3336,3338,3344],{"type":1175,"value":3337},"Instagram filters can make a simple picture of food look like a very fancy picture of food. You can use these same kinds of filters on webcams too! It’s amazing what a little cosmetic tweak can do to your video quality. The filters I’m talking about are called ",{"type":23,"tag":1209,"props":3339,"children":3342},{"href":3340,"rel":3341},"https://en.wikipedia.org/wiki/3D_lookup_table",[1213],[3343],{"type":1175,"value":3332},{"type":1175,"value":3345},". LUT’s are generally used in the professional film world to color grade a movie.",{"type":23,"tag":1171,"props":3347,"children":3348},{},[3349,3351,3358,3360],{"type":1175,"value":3350},"LUT’s are simple, easy-to-use filters that can be applied directly into ",{"type":23,"tag":1209,"props":3352,"children":3355},{"href":3353,"rel":3354},"https://obsproject.com/",[1213],[3356],{"type":1175,"value":3357},"OBS",{"type":1175,"value":3359}," allowing your webcam presentation to become brighter or more cinematic. For a great free pack of LUT’s go here: ",{"type":23,"tag":1209,"props":3361,"children":3364},{"href":3362,"rel":3363},"https://gamingcareers.com/guides/30-free-webcam-filters-obs/",[1213],[3365],{"type":1175,"value":3362},{"type":23,"tag":3071,"props":3367,"children":3369},{"id":3368},"you-can-try-one-more-thing",[3370],{"type":1175,"value":3371},"You can try one more thing",{"type":23,"tag":1171,"props":3373,"children":3374},{},[3375],{"type":1175,"value":3376},"If you have a cheap camera with a shallow depth of field and your lights are set up well, you can use a program called xsplit vcam to create a software bokeh effect! Beware, you need a relatively strong graphics card and the lighting needs to be spot on. Also, the program is not free.",{"type":23,"tag":1480,"props":3378,"children":3380},{"id":3379},"thats-it",[3381],{"type":1175,"value":3382},"That's it",{"type":23,"tag":1171,"props":3384,"children":3385},{},[3386],{"type":1175,"value":3387},"This is the result I got after a bit of research and tweaking settings.",{"type":23,"tag":1171,"props":3389,"children":3390},{},[3391],{"type":23,"tag":1234,"props":3392,"children":3395},{"alt":3393,"height":1237,"loading":1238,"provider":1239,"sizes":1240,"src":3394,"width":13},"Before","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53ums57svft6zuza79l9.png",[],{"type":23,"tag":1171,"props":3397,"children":3398},{},[3399],{"type":23,"tag":1234,"props":3400,"children":3403},{"alt":3401,"height":1237,"loading":1238,"provider":1239,"sizes":1240,"src":3402,"width":13},"After","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h293vez6piv68hyzfy98.png",[],{"title":5,"searchDepth":34,"depth":34,"links":3405},[3406,3407,3408,3409],{"id":3034,"depth":1764,"text":3037},{"id":3135,"depth":1764,"text":3138},{"id":3265,"depth":1764,"text":3268},{"id":3379,"depth":1764,"text":3382},"content:4.writing:how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","4.writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md",{"_path":911,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":910,"description":3413,"id":3414,"slug":3415,"date":3416,"image":3417,"canonical_url":3418,"tags":3419,"collection_id":3019,"body":3423,"_type":36,"_id":3735,"_source":38,"_file":3736,"_extension":40},"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on...",1406190,"why-i-didnt-run-the-2016-marathon","2023-03-18T22:52:37Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafpsw3jbsie5bf7w8wp9.jpg","https://dev.to/timbenniks/why-i-didnt-run-the-2016-marathon-57e3",[3420,3421,3422],"personal","fitness","running",{"type":20,"children":3424,"toc":3728},[3425,3430,3436,3441,3447,3470,3478,3483,3488,3493,3501,3506,3520,3525,3531,3536,3541,3546,3568,3573,3578,3583,3597,3620,3625,3630,3642,3648,3653,3667,3672,3679,3685],{"type":23,"tag":1171,"props":3426,"children":3427},{},[3428],{"type":1175,"value":3429},"After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on October 16th 2016. I’ve learnt a life lesson about the balance between the load and capacity of the body while training for a marathon.",{"type":23,"tag":1480,"props":3431,"children":3433},{"id":3432},"tldr",[3434],{"type":1175,"value":3435},"tl;dr",{"type":23,"tag":1171,"props":3437,"children":3438},{},[3439],{"type":1175,"value":3440},"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won't be able to cope with the added stress.",{"type":23,"tag":1480,"props":3442,"children":3444},{"id":3443},"the-load-capacity-model",[3445],{"type":1175,"value":3446},"The Load-Capacity Model",{"type":23,"tag":1171,"props":3448,"children":3449},{},[3450,3452,3459,3461,3468],{"type":1175,"value":3451},"The Load-Capacity model was created in 1990 by A.T.M Bernards and L.H.A Hagenaars, two Dutch physiotherapists. The MDBB (Dutch abbreviation) model is meant to be a conceptual model for physiotherapy. ",{"type":23,"tag":1209,"props":3453,"children":3456},{"href":3454,"rel":3455},"https://www.researchgate.net/publication/224983108_Het_meerdimensionale_belasting-belastbaarheidsmodel_een_conceptueel_model_voor_de_fysiotherapie",[1213],[3457],{"type":1175,"value":3458},"This is one of their publications from 1999",{"type":1175,"value":3460},". They created this model to add the ",{"type":23,"tag":1209,"props":3462,"children":3465},{"href":3463,"rel":3464},"https://en.wikipedia.org/wiki/Biopsychosocial_model",[1213],[3466],{"type":1175,"value":3467},"biopsychosocial",{"type":1175,"value":3469}," element to physiotherapy treatments.",{"type":23,"tag":1171,"props":3471,"children":3472},{},[3473],{"type":23,"tag":1632,"props":3474,"children":3475},{},[3476],{"type":1175,"value":3477},"I just want to caveat that even though there is some merit to the claims made in this post, the Load-Capacity model is generally taught at physiotherapy school, most of the conclusions I ended up with are anecdotal. I’ll be using the Load-Capacity model specifically for my personal experience so my writing will be somewhat one-sided.",{"type":23,"tag":1171,"props":3479,"children":3480},{},[3481],{"type":1175,"value":3482},"On the physical side, the Load-Capacity model is a key concept in preventing and managing running injuries. It is all about understanding the balance between training load and the body’s capacity to handle that load. In a nutshell it’s a case of working within your limits and not pushing the training beyond what the body can cope with.",{"type":23,"tag":1171,"props":3484,"children":3485},{},[3486],{"type":1175,"value":3487},"Then there is the mental side. External stressors will also impact the balance between capacity and load. If you keep the load the same but your capacity goes down due to grief or work stress, the body will be pushed over the edge of what the it would normally tolerate.",{"type":23,"tag":1171,"props":3489,"children":3490},{},[3491],{"type":1175,"value":3492},"The load-capacity balance is different for everybody and could also change over time. As it did for me. I upped the load in a steady way by training for the marathon but my body’s capacity went down due to external stressors which I wasn’t able to identify. For one, I have a thick skull but I also wasn’t used to the fact that my body would tell me to stop. I could do whatever I wanted to it without stretching or any kind of warm up. If I twisted my ankle the pain would go away in a day.",{"type":23,"tag":1171,"props":3494,"children":3495},{},[3496],{"type":23,"tag":1234,"props":3497,"children":3500},{"alt":3498,"loading":1238,"provider":1239,"sizes":1240,"src":3499,"width":13},"Running","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtcthucv7qthp2sra697.jpg",[],{"type":23,"tag":1171,"props":3502,"children":3503},{},[3504],{"type":1175,"value":3505},"This year I was always stiff and I had to concentrate way harder to stick to proper form. Suddenly I got little pains like plantar fasciitis and an inflamed Achilles tendon. Even after stretching out my hips and calves it felt like I was running on stilts. The pains and stiffness started two months into training. Four months in, I started to get extremely tired, I developed a rash and I my IBS started to play up way more often. I also got sick after doing longer runs at marathon pace.",{"type":23,"tag":1171,"props":3507,"children":3508},{},[3509,3511,3518],{"type":1175,"value":3510},"The things I just described start to happen when the load is surpassing the capacity of the body for a length of time. I slowly got ",{"type":23,"tag":1209,"props":3512,"children":3515},{"href":3513,"rel":3514},"https://en.wikipedia.org/wiki/Overtraining",[1213],[3516],{"type":1175,"value":3517},"overtrained",{"type":1175,"value":3519},". As my body could normally handle anything I threw at it, I was a bit oblivious towards the symptoms of over training.",{"type":23,"tag":1171,"props":3521,"children":3522},{},[3523],{"type":1175,"value":3524},"My sweet wife is a physiotherapist and saw me coming from a mile away. Classic. I needed my wife and many of my peers to tell me that I was over trained. The cause was a combination of training and external circumstances.",{"type":23,"tag":1480,"props":3526,"children":3528},{"id":3527},"this-is-what-happened",[3529],{"type":1175,"value":3530},"This is what happened",{"type":23,"tag":1171,"props":3532,"children":3533},{},[3534],{"type":1175,"value":3535},"I started off well and I was determined to make less mistakes in the preparation this time around. I had plans to have my diet in check from day one. I would go to the gym as well. Next to this I kept a record of everything. Training sessions with Strava, sleep analysis and heart rate with Sleepcycle and food and weight with MyFitnessPal.",{"type":23,"tag":1171,"props":3537,"children":3538},{},[3539],{"type":1175,"value":3540},"This year I decided to go for a training plan which let me train five times per week. Of these five sessions only three where running. The other two were either biking or a gym session. Running only three times per week meant that I could be flexible with the days as I sometimes work nights or have social events to attend. The plan had me running more miles each run but at a slow pace.",{"type":23,"tag":1171,"props":3542,"children":3543},{},[3544],{"type":1175,"value":3545},"The first couple of months everything went well. I actually beat my personal bests on the 5km and 10km quite easily.",{"type":23,"tag":1171,"props":3547,"children":3548},{},[3549,3551,3558,3560,3566],{"type":1175,"value":3550},"Check out ",{"type":23,"tag":1209,"props":3552,"children":3555},{"href":3553,"rel":3554},"https://www.strava.com/activities/628465080",[1213],[3556],{"type":1175,"value":3557},"this",{"type":1175,"value":3559}," Strava run and ",{"type":23,"tag":1209,"props":3561,"children":3564},{"href":3562,"rel":3563},"https://www.strava.com/activities/655258214",[1213],[3565],{"type":1175,"value":3557},{"type":1175,"value":3567}," one.",{"type":23,"tag":1171,"props":3569,"children":3570},{},[3571],{"type":1175,"value":3572},"And I also found back my love for cycling. I bought the cheapest bike with the best reviews. It has a Microshift group set which isn’t as precise but works very well if maintained properly.",{"type":23,"tag":1171,"props":3574,"children":3575},{},[3576],{"type":1175,"value":3577},"Two and a half months in, things started to feel a bit painful, especially after running. I realise now that the stress I experienced outside of training impacted my capacity to handle the increased training load.",{"type":23,"tag":1171,"props":3579,"children":3580},{},[3581],{"type":1175,"value":3582},"A couple of things happened at the same time. We had a cancer scare in the family for which I went to Amsterdam for a while. Things are better now but I’ve had a lot to worry about. Right after I came back to Paris my wife miscarried. We’ve been trying to have a baby for a long time and each time it fails it’s like getting hit in the face.",{"type":23,"tag":1171,"props":3584,"children":3585},{},[3586,3588,3595],{"type":1175,"value":3587},"On top of these two things I found out that I have ",{"type":23,"tag":1209,"props":3589,"children":3592},{"href":3590,"rel":3591},"https://en.wikipedia.org/wiki/Irritable_bowel_syndrome",[1213],[3593],{"type":1175,"value":3594},"IBS",{"type":1175,"value":3596},". I’ve probably had it for a long time but it started to flare up around March this year. I’ve been trying to find the right diet and it’s not easy.",{"type":23,"tag":1171,"props":3598,"children":3599},{},[3600,3602,3609,3611,3618],{"type":1175,"value":3601},"It seems that the absorption of nutrients isn’t working well due to the inflammation in my gut. I had to try to eat less foods that contains ",{"type":23,"tag":1209,"props":3603,"children":3606},{"href":3604,"rel":3605},"https://en.wikipedia.org/wiki/FODMAP",[1213],[3607],{"type":1175,"value":3608},"FODMAPs",{"type":1175,"value":3610}," so that my insides would relax a bit. Having a constant belly ache and bad sleep as a result does not help the capacity of the body to deal with an increased training load. I made a little ",{"type":23,"tag":1209,"props":3612,"children":3615},{"href":3613,"rel":3614},"https://timbenniks.nl/fodmap",[1213],[3616],{"type":1175,"value":3617},"tool",{"type":1175,"value":3619}," to see which foods are allowed on the low FODMAP diet.",{"type":23,"tag":1171,"props":3621,"children":3622},{},[3623],{"type":1175,"value":3624},"Funnily enough I felt quite good during runs. Well, except when it was hot. I hate warm humid weather and have I trouble training in it. It was usually after the runs that I would suddenly feel the pain my body was in. Willpower is an amazing thing. I think I could actually run the marathon on sheer brain juice tomorrow. It would do horrible things to my body though.",{"type":23,"tag":1171,"props":3626,"children":3627},{},[3628],{"type":1175,"value":3629},"The run below seems to have gone very well but I got sick after and couldn’t train for a week. My whole body ached and I slept all weekend.",{"type":23,"tag":1171,"props":3631,"children":3632},{},[3633,3634,3640],{"type":1175,"value":3550},{"type":23,"tag":1209,"props":3635,"children":3638},{"href":3636,"rel":3637},"https://www.strava.com/activities/683549355/",[1213],[3639],{"type":1175,"value":3557},{"type":1175,"value":3641}," Strava run.",{"type":23,"tag":1480,"props":3643,"children":3645},{"id":3644},"what-i-have-learnt",[3646],{"type":1175,"value":3647},"What I have learnt",{"type":23,"tag":1171,"props":3649,"children":3650},{},[3651],{"type":1175,"value":3652},"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won’t be able to cope with the added stress.",{"type":23,"tag":1171,"props":3654,"children":3655},{},[3656,3658,3665],{"type":1175,"value":3657},"It took 20 years to start enjoying sports. I lost a ",{"type":23,"tag":1209,"props":3659,"children":3662},{"href":3660,"rel":3661},"https://timbenniks.dev/articles/my-fitness-story",[1213],[3663],{"type":1175,"value":3664},"lot of weight",{"type":1175,"value":3666}," and got hooked. I could throw anything at my body and it would bounce back. Now it doesn’t and I have to accept that. This summer of training thought me to be humble and to listen both my peers (my wife mainly, as she is always right) and my body.",{"type":23,"tag":1171,"props":3668,"children":3669},{},[3670],{"type":1175,"value":3671},"Not running this race was a hard decision for me as I always stick to the challenges I set for myself. I’ve decided that feeling good is more important than running a marathon. I’ve done it once before and have proven that I can do it. My body can deal with running but it’s not comfortable doing it. I have my build against me. I’m going to focus on being flexible and strong. I’ll be running shorter distances and I’ll be cycling way more. Also, I’m going back to the gym to do what my body was build to do. Lift iron. I might even try yoga…",{"type":23,"tag":1171,"props":3673,"children":3674},{},[3675],{"type":23,"tag":1234,"props":3676,"children":3678},{"alt":3498,"loading":1238,"provider":1239,"sizes":1240,"src":3677,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt09jc5r7w862n5smsas.jpg",[],{"type":23,"tag":1480,"props":3680,"children":3682},{"id":3681},"some-numbers",[3683],{"type":1175,"value":3684},"Some Numbers",{"type":23,"tag":1294,"props":3686,"children":3687},{},[3688,3693,3698,3703,3708,3713,3718,3723],{"type":23,"tag":1298,"props":3689,"children":3690},{},[3691],{"type":1175,"value":3692},"I ran 483.4km over 51 runs with an average pace of 05:40",{"type":23,"tag":1298,"props":3694,"children":3695},{},[3696],{"type":1175,"value":3697},"My average distance was 9.5km per run",{"type":23,"tag":1298,"props":3699,"children":3700},{},[3701],{"type":1175,"value":3702},"I went from 96.1 to 92.9 kilos",{"type":23,"tag":1298,"props":3704,"children":3705},{},[3706],{"type":1175,"value":3707},"I slept 8h 20m a night on average",{"type":23,"tag":1298,"props":3709,"children":3710},{},[3711],{"type":1175,"value":3712},"I ate 2258kcal a day on average",{"type":23,"tag":1298,"props":3714,"children":3715},{},[3716],{"type":1175,"value":3717},"I took 9565 steps a day on average",{"type":23,"tag":1298,"props":3719,"children":3720},{},[3721],{"type":1175,"value":3722},"I had an average resting HR of 63.5bpm",{"type":23,"tag":1298,"props":3724,"children":3725},{},[3726],{"type":1175,"value":3727},"My average food macro balance was 62.2% carbs, 16,2% fat, 21,5% protein.",{"title":5,"searchDepth":34,"depth":34,"links":3729},[3730,3731,3732,3733,3734],{"id":3432,"depth":1764,"text":3435},{"id":3443,"depth":1764,"text":3446},{"id":3527,"depth":1764,"text":3530},{"id":3644,"depth":1764,"text":3647},{"id":3681,"depth":1764,"text":3684},"content:4.writing:why-i-didnt-run-the-2016-marathon.md","4.writing/why-i-didnt-run-the-2016-marathon.md",{"_path":872,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":871,"description":3738,"id":3739,"slug":3740,"date":3741,"image":3742,"canonical_url":3743,"tags":3744,"collection_id":3019,"body":3745,"_type":36,"_id":4069,"_source":38,"_file":4070,"_extension":40},"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue...",1406188,"the-2015-paris-maratho","2023-03-18T22:45:48Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furlbqaankzj82uhwrfq7.jpg","https://dev.to/timbenniks/the-2015-paris-marathon-i0l",[3420,3421],{"type":20,"children":3746,"toc":4059},[3747,3752,3760,3765,3770,3775,3780,3786,3791,3798,3803,3808,3814,3819,3826,3831,3836,3841,3847,3852,3857,3864,3869,3875,3880,3885,3892,3898,3903,3910,3924,3938,3943,3948,3954,3959,3964,3969,3983,3989,3994,3999,4004,4009,4014,4022,4026],{"type":23,"tag":1171,"props":3748,"children":3749},{},[3750],{"type":1175,"value":3751},"Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue Saint-Antoine. Seeing all these people swooshing by impressed me so much that I signed-up for the 2015 marathon on the spot. The goal was set, the easy part was over.",{"type":23,"tag":1171,"props":3753,"children":3754},{},[3755],{"type":23,"tag":1234,"props":3756,"children":3759},{"alt":3757,"loading":1238,"provider":1239,"sizes":1240,"src":3758,"width":13},"Tim Running","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gu3psk58kwz3gfppsmc8.jpg",[],{"type":23,"tag":1171,"props":3761,"children":3762},{},[3763],{"type":1175,"value":3764},"I gave myself five months to conquer the beast. 42.195 kilometres. After running on and off for a couple of years it was time to get serious. As I work for AKQA I naturally chose to train with the Nike+ app and all the related products.",{"type":23,"tag":1171,"props":3766,"children":3767},{},[3768],{"type":1175,"value":3769},"Nike’s marathon training program was brutal. Even at the rookie level it made me run five times a week from the get-go. After living the good life for eight months in Paris both my endurance and cardio vascular strength were shit. It’s safe to say I was happy that the distances were short for the first couple of weeks.",{"type":23,"tag":1171,"props":3771,"children":3772},{},[3773],{"type":1175,"value":3774},"I didn’t have any specific goals in mind, just general stuff like: “I want to get a bit lighter so the running gets easier” or “I’d love to set a new half marathon personal best at one point”. I trusted the rigorous training schedule would get me there eventually.",{"type":23,"tag":1171,"props":3776,"children":3777},{},[3778],{"type":1175,"value":3779},"It didn’t. The training was so intense that I had skip workouts and I had to start experimenting with food to figure out how I could get my legs ready for the next run. My body could just not cope with the sheer amount of kilometres I had to run each week.",{"type":23,"tag":1480,"props":3781,"children":3783},{"id":3782},"january",[3784],{"type":1175,"value":3785},"January",{"type":23,"tag":1171,"props":3787,"children":3788},{},[3789],{"type":1175,"value":3790},"After two months of pain I had finally found a balance. Turns out that eating super low fat and high carb was the best for my recovery. I was basically eating according to the 80/10/10 principle. 80% carbs, 10% fats, 10% protein. I’m not preaching this way of eating, it was just great for me.",{"type":23,"tag":1171,"props":3792,"children":3793},{},[3794],{"type":23,"tag":1234,"props":3795,"children":3797},{"alt":3785,"loading":1238,"provider":1239,"sizes":1240,"src":3796,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9z60d58hzj247adpsmsn.jpg",[],{"type":23,"tag":1171,"props":3799,"children":3800},{},[3801],{"type":1175,"value":3802},"To achieve eating this macro ratio I had to cut out all animal products. If I ate too much fat on a rest day, like when you go out to dinner and you don’t want to be the asshole who can’t eat anything, I would have heavy legs the next day.",{"type":23,"tag":1171,"props":3804,"children":3805},{},[3806],{"type":1175,"value":3807},"I started eating copious amounts of fruit, rice, pasta, quinoa and veggies. My brain started functioning ten times better and I didn’t even think about coffee anymore. January was awesome. I ran pain free and the long distances started to become enjoyable. Good times. I ran 147km that month. This might not seem a lot to seasoned runners but I came from ~50km a month. I started a new chapter in my running career.",{"type":23,"tag":1480,"props":3809,"children":3811},{"id":3810},"february",[3812],{"type":1175,"value":3813},"February",{"type":23,"tag":1171,"props":3815,"children":3816},{},[3817],{"type":1175,"value":3818},"We went on a ski trip in the beginning of February. I was an amazing holiday with loads of skiing, good food and laughs. I did some workouts in the gym and a proper mountain walk. I really hoped I hadn’t lost my running gains.",{"type":23,"tag":1171,"props":3820,"children":3821},{},[3822],{"type":23,"tag":1234,"props":3823,"children":3825},{"alt":3813,"loading":1238,"provider":1239,"sizes":1240,"src":3824,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etfg0xoxax0zbyzrmcig.jpg",[],{"type":23,"tag":1171,"props":3827,"children":3828},{},[3829],{"type":1175,"value":3830},"The first Monday back I had a nasty cough but decided to at least try my fast 8km run I had planned for that day. Bad decision. Over the course of the week I developed a bronchitis and both the doctor and my wife (the boss and a bad ass physiotherapist) forbade me to run the following two weeks.",{"type":23,"tag":1171,"props":3832,"children":3833},{},[3834],{"type":1175,"value":3835},"I slept a lot and kept on eating well and as soon as the illness lifted I started running short distances again. I cursed my way through the first week. Even though the running hurt, my pace was still fast.",{"type":23,"tag":1171,"props":3837,"children":3838},{},[3839],{"type":1175,"value":3840},"In February I ran the awesome amount of 37.98km over five runs. The last of the five was the most painful 15km run of my life. We’d strolled around “Le Salon d’Agriculture” for three hours before. We tasted wines and tried cheeses. I had forgotten to drink any water. Rookie mistake. Lactic acid legs for days!",{"type":23,"tag":1480,"props":3842,"children":3844},{"id":3843},"march",[3845],{"type":1175,"value":3846},"March",{"type":23,"tag":1171,"props":3848,"children":3849},{},[3850],{"type":1175,"value":3851},"Back to awesome. I ran 181km in 4 weeks. An absolute record month in my book. I had an amazing run in Amsterdam on which my whole family followed me by bike. I also ran personal bests on the 5km, 10km, 15km and 21km. I decided to drop the Nike+ program as I had missed too much the month before. This was a smart move. The Nike+ program would have burnt me out.",{"type":23,"tag":1171,"props":3853,"children":3854},{},[3855],{"type":1175,"value":3856},"I had been in training for 4 months by now and I had been sick the month before. The exhaustion was setting in a bit. I didn’t particularly feel it in my legs, but I started having problems staying focused on evening runs. One time I had to jump aside while a policeman was arresting someone. I flipped my ankle and had to walk home for an hour.",{"type":23,"tag":1171,"props":3858,"children":3859},{},[3860],{"type":23,"tag":1234,"props":3861,"children":3863},{"alt":3846,"loading":1238,"provider":1239,"sizes":1240,"src":3862,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r8u4pxda4nalwwa4x0o.jpg",[],{"type":23,"tag":1171,"props":3865,"children":3866},{},[3867],{"type":1175,"value":3868},"I felt stupid for being distracted. Even though I had super light shoes without much cushioning I stopped being in touch with the ground I was running on. Sounds like I’m a hippy aye? It’s a runners thing.",{"type":23,"tag":1480,"props":3870,"children":3872},{"id":3871},"april",[3873],{"type":1175,"value":3874},"April",{"type":23,"tag":1171,"props":3876,"children":3877},{},[3878],{"type":1175,"value":3879},"Only two weeks left. I did a 27km run in a very busy, rainy and hilly Paris. After that I was so exhausted that I decided to start my tapering period a week early. I thought I’d hurt my feet too much and suddenly got very nervous. My marathon veteran colleagues told me this is normal and I should just chill out.",{"type":23,"tag":1171,"props":3881,"children":3882},{},[3883],{"type":1175,"value":3884},"I only ran a handful of runs up until the big day. The thing I liked most about the tapering period was the carbo-loading. My food intake doubled in the week before the big race. #CTFU. I felt amazing and started dropping weight. I should have eaten much more the past four months.",{"type":23,"tag":1171,"props":3886,"children":3887},{},[3888],{"type":23,"tag":1234,"props":3889,"children":3891},{"alt":3874,"loading":1238,"provider":1239,"sizes":1240,"src":3890,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4p4xky34q3vxlhfcgfg6.jpg",[],{"type":23,"tag":1480,"props":3893,"children":3895},{"id":3894},"d-day",[3896],{"type":1175,"value":3897},"D-DAY",{"type":23,"tag":1171,"props":3899,"children":3900},{},[3901],{"type":1175,"value":3902},"I was so nervous I hardly even looked at the enormous amount of runners around me. I was standing on the Champs-Elysees with 50.000 other athletes. This was going to be the most epic challenge of my life.",{"type":23,"tag":1171,"props":3904,"children":3905},{},[3906],{"type":23,"tag":1234,"props":3907,"children":3909},{"alt":3897,"loading":1238,"provider":1239,"sizes":1240,"src":3908,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qsgkyqt7mudojkqok6z.jpg",[],{"type":23,"tag":1171,"props":3911,"children":3912},{},[3913,3915,3922],{"type":1175,"value":3914},"The first bit felt like heaven. Especially because my mate ",{"type":23,"tag":1209,"props":3916,"children":3919},{"href":3917,"rel":3918},"https://www.facebook.com/chrisfinch",[1213],[3920],{"type":1175,"value":3921},"Chris",{"type":1175,"value":3923}," had just given me an amazing pep-talk over the phone. The Champs Elysees was mine and mine alone. Turns out I clocked the first kilometre at a 6:12 pace. Slow as fuck but a nice start to a long day. After that I slowly picked up the pace to a nice average between 5:25 and 5:35.",{"type":23,"tag":1171,"props":3925,"children":3926},{},[3927,3929,3936],{"type":1175,"value":3928},"Around the 7km point my awesome friend ",{"type":23,"tag":1209,"props":3930,"children":3933},{"href":3931,"rel":3932},"https://www.instagram.com/henrike.theda.klug/",[1213],[3934],{"type":1175,"value":3935},"Henrike",{"type":1175,"value":3937}," spotted me from the sidelines and joined me for about 1.5km. We picked up the pace and race had properly started.",{"type":23,"tag":1171,"props":3939,"children":3940},{},[3941],{"type":1175,"value":3942},"It was super warm so I drank water every chance I got. My training had been during winter time so I was used to running with a maximum temperature of 10 degrees celcius. Even though it was warm I ran a great half marathon (for me at least, 01:52:34).",{"type":23,"tag":1171,"props":3944,"children":3945},{},[3946],{"type":1175,"value":3947},"The heat had silently sneaked up on me and at kilometre 22 the wall hit me like a hammer.",{"type":23,"tag":1480,"props":3949,"children":3951},{"id":3950},"the-wall",[3952],{"type":1175,"value":3953},"The Wall",{"type":23,"tag":1171,"props":3955,"children":3956},{},[3957],{"type":1175,"value":3958},"The wall is really the biatch people say she is. I could not even put one foot in front of the other anymore. It took me half an hour to stumble to the next food station. It took 35 minutes to run 3km. I had some water, a sugar cube, a GU gel and a slice of mandarin. Obviously this was way too much so I felt sick for the next 5km. My brain was telling me to stop but I just couldn’t let go.",{"type":23,"tag":1171,"props":3960,"children":3961},{},[3962],{"type":1175,"value":3963},"In the following kilometres it didn’t get any better. I managed to find a happy medium in between running and walking. My nike+ app was all over the place and wasn’t accurate at all anymore. At one point I just turned it off and upped my Spotify volume. The next song was by Motörhead and I felt my heart skip a beat. The race was back on.For 2km.After that I went back to my previous state.",{"type":23,"tag":1171,"props":3965,"children":3966},{},[3967],{"type":1175,"value":3968},"During the five months I trained my wife had always been there for me. She gave me tips and picked me back up when I had hit a low point. When I saw her at kilometre 30 I couldn’t be happier. I gave her a quick kiss and a smile and I was on my way again.",{"type":23,"tag":1171,"props":3970,"children":3971},{},[3972,3974,3981],{"type":1175,"value":3973},"Just before hitting the Bois de Boulogne I became captain slow. I was having a real rough patch when I heard people shout my name. These people were ",{"type":23,"tag":1209,"props":3975,"children":3978},{"href":3976,"rel":3977},"https://www.facebook.com/photo.php?fbid=10153775712979392&set=a.10151354689589392&type=1&theater",[1213],[3979],{"type":1175,"value":3980},"Marie and her son Adrian.",{"type":1175,"value":3982}," It’s great to have the support of your friends. It made me start running again. As it turns out, my wife had been sending loads of photo’s to my family back in Amsterdam. They had been following my every move.",{"type":23,"tag":1480,"props":3984,"children":3986},{"id":3985},"bois-de-boulogne",[3987],{"type":1175,"value":3988},"Bois de Boulogne",{"type":23,"tag":1171,"props":3990,"children":3991},{},[3992],{"type":1175,"value":3993},"Bois de Boulogne was truly intense. They call it “the march of the death” and rightfully so. It starts at kilometre 35, there are hardly any supporters and it’s mostly uphill.",{"type":23,"tag":1171,"props":3995,"children":3996},{},[3997],{"type":1175,"value":3998},"I did the “pain shuffle” for the last 7km. The pain shuffle means that you can’t really bent your legs anymore but you still run. In my case, stumbling without falling. I ran from km sign to km sign without even hearing my music.",{"type":23,"tag":1171,"props":4000,"children":4001},{},[4002],{"type":1175,"value":4003},"When I saw the 40km sign I decided to not walk anymore and I did whatever it took to make that happen. At kilometre 41 I noticed that a lot of the faster runners were coming back to show us their medals and cheer us on. There was an amazing feeling of companionship in the pack of runners.",{"type":23,"tag":1171,"props":4005,"children":4006},{},[4007],{"type":1175,"value":4008},"At kilometre 42 I saw the finish AND my wife at the same time. It was finally over. I didn’t even bother to sprint.",{"type":23,"tag":1171,"props":4010,"children":4011},{},[4012],{"type":1175,"value":4013},"It took me four hours and forty six minutes. A total pain train. While riding home on the metro I felt a little shit because I walked so much. Should I have gone deeper? But while writing this piece, pride is taking over. I actually did this. My first marathon in the heat in under five hours. #putain.",{"type":23,"tag":1171,"props":4015,"children":4016},{},[4017],{"type":23,"tag":1234,"props":4018,"children":4021},{"alt":4019,"loading":1238,"provider":1239,"sizes":1240,"src":4020,"width":13},"finisher","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdxzyzf1wztrl220nwa4.jpg",[],{"type":23,"tag":1480,"props":4023,"children":4024},{"id":3681},[4025],{"type":1175,"value":3684},{"type":23,"tag":1294,"props":4027,"children":4028},{},[4029,4034,4039,4044,4049,4054],{"type":23,"tag":1298,"props":4030,"children":4031},{},[4032],{"type":1175,"value":4033},"I ran 615.14km over 67 runs with an average pace of 05:42",{"type":23,"tag":1298,"props":4035,"children":4036},{},[4037],{"type":1175,"value":4038},"My average distance was 9.18km per run",{"type":23,"tag":1298,"props":4040,"children":4041},{},[4042],{"type":1175,"value":4043},"I went from 95 to 86.7 kilos (and lost all gains)",{"type":23,"tag":1298,"props":4045,"children":4046},{},[4047],{"type":1175,"value":4048},"I slept 7h 50m a night on average",{"type":23,"tag":1298,"props":4050,"children":4051},{},[4052],{"type":1175,"value":4053},"I ate 1840kcal a day on average (probably not enough)",{"type":23,"tag":1298,"props":4055,"children":4056},{},[4057],{"type":1175,"value":4058},"I took 12609 steps a day on average",{"title":5,"searchDepth":34,"depth":34,"links":4060},[4061,4062,4063,4064,4065,4066,4067,4068],{"id":3782,"depth":1764,"text":3785},{"id":3810,"depth":1764,"text":3813},{"id":3843,"depth":1764,"text":3846},{"id":3871,"depth":1764,"text":3874},{"id":3894,"depth":1764,"text":3897},{"id":3950,"depth":1764,"text":3953},{"id":3985,"depth":1764,"text":3988},{"id":3681,"depth":1764,"text":3684},"content:4.writing:the-2015-paris-maratho.md","4.writing/the-2015-paris-maratho.md",{"_path":866,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":865,"description":4072,"id":4073,"slug":4074,"date":4075,"image":4076,"canonical_url":4077,"tags":4078,"collection_id":3019,"body":4079,"_type":36,"_id":4200,"_source":38,"_file":4201,"_extension":40},"From fat and sick to slim and happy Aside from a short period in high school I have always...",1406186,"my-fitness-story","2023-03-18T22:39:46Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86xayxbotaqwk8get75h.jpg","https://dev.to/timbenniks/my-fitness-story-1p97",[3421,3420],{"type":20,"children":4080,"toc":4197},[4081,4087,4092,4097,4102,4107,4115,4120,4132,4137,4142,4147,4152,4160,4165,4172,4180,4185,4190],{"type":23,"tag":1178,"props":4082,"children":4084},{"id":4083},"from-fat-and-sick-to-slim-and-happy",[4085],{"type":1175,"value":4086},"From fat and sick to slim and happy",{"type":23,"tag":1171,"props":4088,"children":4089},{},[4090],{"type":1175,"value":4091},"Aside from a short period in high school I have always been a chubby kid. When I lived at home my mom made sure I didn’t go overboard with food. She stopped me here and there when needed and always made sure we had healthy food on the table.",{"type":23,"tag":1171,"props":4093,"children":4094},{},[4095],{"type":1175,"value":4096},"After highschool I started living on my own and became a lot more active as a musician. I got used to a very burgundian lifestyle and started eating all kinds of junk. The free drinks for musicians also didn’t help.",{"type":23,"tag":1171,"props":4098,"children":4099},{},[4100],{"type":1175,"value":4101},"I have always been interested in muscles and posture but never had the discipline to change myself into something I liked. I quickly turned into a lazy musician. Beer and fast food, either before or after a gig, were the norm. I didn’t know any better and ate highly refined foods containing a shitload of ingredients with long and incomprehensible names. Looking back it’s unbelievable how little I knew about stuff I put in my body.",{"type":23,"tag":1171,"props":4103,"children":4104},{},[4105],{"type":1175,"value":4106},"Being fat was always in the back of my mind and it nagged at me. When I reached 120kg I felt horrible and knew change was needed. I was always sweating, tired and out of breath. I had high blood pressure and was often feeling ill. Diabetes type 2 was creeping up on me.",{"type":23,"tag":1171,"props":4108,"children":4109},{},[4110],{"type":23,"tag":1234,"props":4111,"children":4114},{"alt":4112,"loading":1238,"provider":1239,"sizes":1240,"src":4113,"width":13},"fat","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z7h5x2kxppg53w4is65y.jpg",[],{"type":23,"tag":1171,"props":4116,"children":4117},{},[4118],{"type":1175,"value":4119},"Even after this turning point I was still completely inadequate at sports and I didn’t have any discipline. I didn’t even know how to properly contract my muscles to lift something. I had no body sense at all.",{"type":23,"tag":1171,"props":4121,"children":4122},{},[4123,4125,4130],{"type":1175,"value":4124},"I asked my mate ",{"type":23,"tag":1209,"props":4126,"children":4128},{"href":3917,"rel":4127},[1213],[4129],{"type":1175,"value":3921},{"type":1175,"value":4131}," to help me out. He was (is) a complete legend and instantly jumped at the chance to help a friend. We started doing his “half hour of power”, lifted weights and ran as often as possible.",{"type":23,"tag":1171,"props":4133,"children":4134},{},[4135],{"type":1175,"value":4136},"Well, I tried.",{"type":23,"tag":1171,"props":4138,"children":4139},{},[4140],{"type":1175,"value":4141},"I had excuses. Many of them. “But I had a gig last night” or “I’m still too sore from last week”. I was a complete pussy and it must have frustrated Chris. But he was strong and pulled me through.",{"type":23,"tag":1171,"props":4143,"children":4144},{},[4145],{"type":1175,"value":4146},"As I finally saw some results I overcame my disciplinary problems step by step. I changed my diet and the fat started coming of quickly. I even gained some muscle.",{"type":23,"tag":1171,"props":4148,"children":4149},{},[4150],{"type":1175,"value":4151},"I started researching and a whole world of bro-science opened up to me. I did programs like P90X, 5x5, and 4-hour body.",{"type":23,"tag":1171,"props":4153,"children":4154},{},[4155],{"type":23,"tag":1234,"props":4156,"children":4159},{"alt":4157,"loading":1238,"provider":1239,"sizes":1240,"src":4158,"width":13},"weightloss","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0wcd7nly7arzfjs9glt.jpg",[],{"type":23,"tag":1171,"props":4161,"children":4162},{},[4163],{"type":1175,"value":4164},"The thing that helped me most was my Facebook activity. I posted my weight daily. People would respond if it went up or down and it kept me motivated. This was the first time in my life peer pressure actually had a positive influence on my state of mind.",{"type":23,"tag":1171,"props":4166,"children":4167},{},[4168],{"type":23,"tag":1234,"props":4169,"children":4171},{"alt":4157,"loading":1238,"provider":1239,"sizes":1240,"src":4170,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8oa7r37rqrhgldhtegpd.jpg",[],{"type":23,"tag":1171,"props":4173,"children":4174},{},[4175],{"type":23,"tag":1234,"props":4176,"children":4179},{"alt":4177,"loading":1238,"provider":1239,"sizes":1240,"src":4178,"width":13},"guitars","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4yyrv0qc0q0r59piv0n.jpg",[],{"type":23,"tag":1171,"props":4181,"children":4182},{},[4183],{"type":1175,"value":4184},"In April 2014 my wife and I moved to Paris. At that point I was vegan for half a year and I was at my lightest weight since I started training. We had to deal with different stress factors when we arrived and I let go of the strict livestyle a little and gained some weight again. The cheese, wine and French baguettes are too awesome not to enjoy. In January 2014 I got up to ~95kg and Paris had officially turned me into a croissant.",{"type":23,"tag":1171,"props":4186,"children":4187},{},[4188],{"type":1175,"value":4189},"But I wasn’t a croissant for long. I started lifting some weights again and slowely started to get back into it. When the marathon passed by our apartment in Rue Saint-Antoine in April 2014 I signed up on the spot. I became a long distance runner over night. New goals were set, and crushed over the proceeding six months.",{"type":23,"tag":1171,"props":4191,"children":4192},{},[4193],{"type":23,"tag":1234,"props":4194,"children":4196},{"alt":3422,"loading":1238,"provider":1239,"sizes":1240,"src":4195,"width":13},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oph2vujeha2kjojtab6i.jpg",[],{"title":5,"searchDepth":34,"depth":34,"links":4198},[4199],{"id":4083,"depth":34,"text":4086},"content:4.writing:my-fitness-story.md","4.writing/my-fitness-story.md",{"_path":863,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":862,"description":4203,"id":4204,"slug":4205,"date":4206,"image":4207,"canonical_url":4208,"tags":4209,"collection_id":1167,"body":4211,"_type":36,"_id":4383,"_source":38,"_file":4384,"_extension":40},"If the internet were a country, it would be the world’s sixth biggest polluter. The...",1406180,"make-the-web-greener-luxury-edition","2023-03-18T22:30:27Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3e00qrk4jojitb5tu06.jpg","https://www.valtech.com/insights/make-the-web-greener-luxury-edition/",[2305,4210],"environment",{"type":20,"children":4212,"toc":4373},[4213,4219,4224,4229,4235,4240,4245,4251,4256,4274,4279,4285,4290,4296,4301,4306,4311,4316,4321,4326,4332,4337,4342,4347,4353,4358,4363,4368],{"type":23,"tag":1178,"props":4214,"children":4216},{"id":4215},"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter",[4217],{"type":1175,"value":4218},"If the internet were a country, it would be the world’s sixth biggest polluter.",{"type":23,"tag":1171,"props":4220,"children":4221},{},[4222],{"type":1175,"value":4223},"The internet consumes around 416TWh per year in electricity. That number does not say much until you compare it to the 300TWh the United Kingdom consumes. These are staggering numbers, and they will only go up as the internet keeps growing. Whether you realize it or not, carbon emissions are generated all over the place.",{"type":23,"tag":1171,"props":4225,"children":4226},{},[4227],{"type":1175,"value":4228},"The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that is 211 kg CO2 per year or about twice the weight of a professional basketball player. This is more carbon than ten trees can absorb. If you think about how many websites we have on the internet, this comparison paints a pretty scary picture.",{"type":23,"tag":1480,"props":4230,"children":4232},{"id":4231},"the-luxury-dilemma-the-rich-experience-and-fast-page-loads",[4233],{"type":1175,"value":4234},"The Luxury Dilemma: The Rich Experience and Fast Page Loads",{"type":23,"tag":1171,"props":4236,"children":4237},{},[4238],{"type":1175,"value":4239},"Every web page is crafted with art-directed elements that tell the right story. Luxury product pages are rich experiences that make the user linger and enjoy the ride. This approach is great for the potential customer, but there is a dark undertone when we consider the environment. These pages are full of heavy images, videos and animations. The heavier the page, the more carbon is emitted. If pages take longer to load, the emissions go up due to more device usage–and the antenna and screen are used for a longer period too.",{"type":23,"tag":1171,"props":4241,"children":4242},{},[4243],{"type":1175,"value":4244},"There are some conflicting goals within luxury on the web. We want a rich experience, but we also want hyper-fast page loads. We all know that slow pages mean more user drop-off. And to make matters worse, we also need to think about the environment. We need to contain how much carbon is blasted into the atmosphere when someone visits a page.",{"type":23,"tag":1480,"props":4246,"children":4248},{"id":4247},"how-to-reduce-carbon-emissions-from-your-website",[4249],{"type":1175,"value":4250},"How to Reduce Carbon Emissions from Your Website",{"type":23,"tag":1171,"props":4252,"children":4253},{},[4254],{"type":1175,"value":4255},"The above describes a complicated mix of problems to solve. We know that carbon emissions are lowest if:",{"type":23,"tag":1294,"props":4257,"children":4258},{},[4259,4264,4269],{"type":23,"tag":1298,"props":4260,"children":4261},{},[4262],{"type":1175,"value":4263},"A page is fast to find",{"type":23,"tag":1298,"props":4265,"children":4266},{},[4267],{"type":1175,"value":4268},"The page loads fast and with little resources",{"type":23,"tag":1298,"props":4270,"children":4271},{},[4272],{"type":1175,"value":4273},"Users stay on a page for a very short time",{"type":23,"tag":1171,"props":4275,"children":4276},{},[4277],{"type":1175,"value":4278},"These three points are hard to carry out in the current way of working in luxury. That is not because we do not know how to build websites but because the goals are different. We want visitors to explore the brand, linger and become influenced by the product story. They should become lifelong customers. Sadly, this goes against what is best practice for websites with a low carbon footprint.",{"type":23,"tag":1480,"props":4280,"children":4282},{"id":4281},"being-sustainable-without-compromising-quality",[4283],{"type":1175,"value":4284},"Being Sustainable Without Compromising Quality",{"type":23,"tag":1171,"props":4286,"children":4287},{},[4288],{"type":1175,"value":4289},"But fear not: There is a solution that can get us much closer to being sustainable. We can even keep the same level of quality we have now. In addition to being greener, this solution makes our websites more accessible to people in upcoming markets. The answer is: optimization of image and video delivery. We solve the problem by reducing excess and only loading what is needed in the context of the user.",{"type":23,"tag":1480,"props":4291,"children":4293},{"id":4292},"are-we-there-yet-optimizing-media-asset-delivery",[4294],{"type":1175,"value":4295},"Are We There Yet? Optimizing Media Asset Delivery",{"type":23,"tag":1171,"props":4297,"children":4298},{},[4299],{"type":1175,"value":4300},"Most traditional CMS systems focus on content editing or cataloguing of content and not on serving of content per se. Serving the content is part of the suite of tools in the platform, but the focus tends to be on other aspects. We call this the “best-of-suite” approach where one vendor deals with all aspects of the website.",{"type":23,"tag":1171,"props":4302,"children":4303},{},[4304],{"type":1175,"value":4305},"Nowadays, there are companies that solve specific problems within the eco-system of websites. We call these “best-of-breed” solutions, and they tend to be cloud native SaaS companies. Among these companies, there is a category that only deals with media asset delivery.",{"type":23,"tag":1171,"props":4307,"children":4308},{},[4309],{"type":1175,"value":4310},"Images and videos are particularly hard. If we ask a content editor, filmmaker, or web developer how to optimize assets for the web, they generally do not know. The same goes for the best-of-suite CMS systems. They do not specifically optimize assets for the web—they serve them as is.",{"type":23,"tag":1171,"props":4312,"children":4313},{},[4314],{"type":1175,"value":4315},"This leaves the responsibility to the content editor. We have seen people struggle with photoshop and not know how to optimize an image. Teaching courses and paying for Adobe licenses is commonplace and awfully expensive.",{"type":23,"tag":1171,"props":4317,"children":4318},{},[4319],{"type":1175,"value":4320},"Fortunately, there is a plethora of ways to optimize images and videos for the web—and the SaaS solutions mentioned above take care of the problem for you. They serve assets in the right format for the user’s context (browser, device, resolution). And they reduce the file size with AI to be indistinguishable from the original—doing this by hand as a content editor is impossible.",{"type":23,"tag":1171,"props":4322,"children":4323},{},[4324],{"type":1175,"value":4325},"We have had projects where the page weight dropped by 90 percent without loss of quality. Content editors would only upload the original image and the system did the rest.",{"type":23,"tag":1480,"props":4327,"children":4329},{"id":4328},"loading-the-right-assets-in-the-context-of-the-user",[4330],{"type":1175,"value":4331},"Loading the Right Assets in the Context of the User",{"type":23,"tag":1171,"props":4333,"children":4334},{},[4335],{"type":1175,"value":4336},"Next to serving optimized assets, the most gain is made when not serving them at all. As funny as this may sound, it is the most effective way to have a low-carbon website. If a user never scrolls down or never opens the big mega menu, what is the use in loading these assets in the first place? You should only load assets you know the user will see. We call this “lazy loading,” and it is one of the most powerful tools in the bag of tricks of web developers.",{"type":23,"tag":1171,"props":4338,"children":4339},{},[4340],{"type":1175,"value":4341},"Next to lazy loading, it is also important to load assets in the right context. If a user visits your website on a phone, make sure to load an image with the same resolution the phone has. Loading bigger assets unnecessarily degrades the user experience. It also makes the website have a higher carbon footprint due to excessive file size.",{"type":23,"tag":1171,"props":4343,"children":4344},{},[4345],{"type":1175,"value":4346},"The same goes for file types. If you want an animated background image on the hero banner (we all do), do not use a GIF, but rather a video. GIF’s are about five times as big as videos and tend to not work well on mobile devices.",{"type":23,"tag":1480,"props":4348,"children":4350},{"id":4349},"looking-ahead-on-website-sustainability",[4351],{"type":1175,"value":4352},"Looking Ahead on Website Sustainability",{"type":23,"tag":1171,"props":4354,"children":4355},{},[4356],{"type":1175,"value":4357},"We cannot always optimize our web pages according to the best practices for low-carbon websites. This is just the nature of luxury. But we can focus on smaller parts of the equation that have a huge influence on how sustainable the website is. All of this can be accomplished without compromising on quality.",{"type":23,"tag":1171,"props":4359,"children":4360},{},[4361],{"type":1175,"value":4362},"Look at the future and choose a best-of-breed solution that handles one of the most complex parts of the web: images and media. By combining optimized assets and lazy loading we make our pages lighter. This means they are more accessible to new customers in emerging markets.",{"type":23,"tag":1171,"props":4364,"children":4365},{},[4366],{"type":1175,"value":4367},"And wouldn’t it be nice if content editors did not need photoshop licenses anymore? The overhead of training and the extra process is not worth it.",{"type":23,"tag":1171,"props":4369,"children":4370},{},[4371],{"type":1175,"value":4372},"Instead, have your media delivered by a specialized solution—Mother Nature will thank you for having a low-carbon website.",{"title":5,"searchDepth":34,"depth":34,"links":4374},[4375],{"id":4215,"depth":34,"text":4218,"children":4376},[4377,4378,4379,4380,4381,4382],{"id":4231,"depth":1764,"text":4234},{"id":4247,"depth":1764,"text":4250},{"id":4281,"depth":1764,"text":4284},{"id":4292,"depth":1764,"text":4295},{"id":4328,"depth":1764,"text":4331},{"id":4349,"depth":1764,"text":4352},"content:4.writing:make-the-web-greener-luxury-edition.md","4.writing/make-the-web-greener-luxury-edition.md",{"_path":847,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":846,"description":4386,"id":4387,"slug":4388,"date":4389,"image":4390,"canonical_url":4391,"tags":4392,"collection_id":1167,"body":4395,"_type":36,"_id":4853,"_source":38,"_file":4854,"_extension":40},"Build it yourself or use Cloudinary Dynamic video streaming is a video delivery technique...",1406138,"how-to-dynamically-stream-video","2023-03-18T21:56:45Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wx2ix9t60eajoccgjh7.png","https://dev.to/timbenniks/how-to-dynamically-stream-video-135f",[4393,1239,4394],"video","streaming",{"type":20,"children":4396,"toc":4846},[4397,4403,4408,4413,4418,4423,4429,4434,4439,4445,4450,4455,4460,4466,4472,4477,4483,4505,4511,4516,4529,4535,4540,4565,4573,4578,4587,4595,4603,4608,4616,4621,4629,4634,4647,4655,4676,4684,4698,4705,4710,4716,4721,4744,4758,4763,4771,4776,4781,4789,4794,4802,4816,4821,4835],{"type":23,"tag":1178,"props":4398,"children":4400},{"id":4399},"build-it-yourself-or-use-cloudinary",[4401],{"type":1175,"value":4402},"Build it yourself or use Cloudinary",{"type":23,"tag":1171,"props":4404,"children":4405},{},[4406],{"type":1175,"value":4407},"Dynamic video streaming is a video delivery technique that adjusts the quality of a video stream in real time. It does this according to detected bandwidth and CPU capacity of a user. In this article we will explore the two techniques which allow you to dynamically stream video.",{"type":23,"tag":1171,"props":4409,"children":4410},{},[4411],{"type":1175,"value":4412},"HLS and MPEG-DASH are the two most popular formats out there. Dynamic or adaptive video delivery requires outputting a video in different quality settings along with some additional files. Both HLS and MPEG-DASH have different approaches to the problem.",{"type":23,"tag":1171,"props":4414,"children":4415},{},[4416],{"type":1175,"value":4417},"The process of making adaptive streaming work is complex. Most services out there do not provide an end-to-end solution for this and the ones that do a are quite costly. The adaptive video streaming paradigm is not one that many companies have conquered as it requires specific knowledge and access to hardware. There is a reason we don't have many competitors for Netflix and YouTube. Adaptive streaming of video is hard.",{"type":23,"tag":1171,"props":4419,"children":4420},{},[4421],{"type":1175,"value":4422},"First we’ll go into how adaptive streaming works and then I’ll explain exactly how to do this yourself. It’s much easier than you think once you have the knowledge and the right third party tool to do the heavy lifting.",{"type":23,"tag":1480,"props":4424,"children":4426},{"id":4425},"how-adaptive-video-delivery-works",[4427],{"type":1175,"value":4428},"How adaptive video delivery works",{"type":23,"tag":1171,"props":4430,"children":4431},{},[4432],{"type":1175,"value":4433},"The video stream adapts itself based on a set of rules. The user’s bandwidth, CPU load and video player resolution on the page. To be able to stream adaptively you need to be able to stream different versions of a video. Each variant is of different quality, has a different bitrate and potentially has a different codec or resolution. Think of it as progressive enhancement in web development. The simplest stream always works and based on the features you have (in this case, CPU power, bandwidth, resolution), you get a nicer looking video stream.",{"type":23,"tag":1171,"props":4435,"children":4436},{},[4437],{"type":1175,"value":4438},"Each adaptive video is also joined by an index file that specifies predefined segments of the video. In the HLS standard these segments are usually 10 seconds long where in MPEG-DASH we use 1 second. There is also a master playlist that points to the available video variations with additional information about each one.",{"type":23,"tag":3071,"props":4440,"children":4442},{"id":4441},"an-audio-playlist-adaptation",[4443],{"type":1175,"value":4444},"An audio playlist adaptation",{"type":23,"tag":1171,"props":4446,"children":4447},{},[4448],{"type":1175,"value":4449},"It’s pretty cool that dynamic video streaming is based on the spec from the M3U8 audio playlist. M3U8 was originally designed for audio files, such as MP3, but nowadays it is commonly used to point media players to audio and video sources.",{"type":23,"tag":1171,"props":4451,"children":4452},{},[4453],{"type":1175,"value":4454},"An adaptive streaming video player uses the playlist information to decide which of the available video variations fits the user’s network conditions, CPU load or resolution best. It can switch to another source at each 10 second segment (these segments can also be shorter, see examples below) if the network conditions change.",{"type":23,"tag":1171,"props":4456,"children":4457},{},[4458],{"type":1175,"value":4459},"This approach works well to minimise bandwidth use and optimise it for a smooth playback for everybody who watches the video stream. It can also be used the other way around, if the streaming service is completely overloaded it can send a video stream with a smaller bitrate or resolution to the viewer.",{"type":23,"tag":1480,"props":4461,"children":4463},{"id":4462},"about-hls-and-mpeg-dash",[4464],{"type":1175,"value":4465},"About HLS and MPEG-DASH",{"type":23,"tag":3071,"props":4467,"children":4469},{"id":4468},"hls",[4470],{"type":1175,"value":4471},"HLS",{"type":23,"tag":1171,"props":4473,"children":4474},{},[4475],{"type":1175,"value":4476},"HLS was originally created by Apple to provide video for the iPhone, but now it’s a common format used across HTML5 web applications. You’ll need to encode your video with H.264 or HEVC/H.265 codecs, which can be decoded by all major browsers. With HLS, the video is chopped up into 10 second intervals and sent to the user.",{"type":23,"tag":3071,"props":4478,"children":4480},{"id":4479},"mpeg-dash",[4481],{"type":1175,"value":4482},"MPEG-DASH",{"type":23,"tag":1171,"props":4484,"children":4485},{},[4486,4488,4495,4497,4503],{"type":1175,"value":4487},"MPEG-DASH is the latest HLS competitor. It was originally created to be an alternative to HLS. It has a few advantages over HLS, mainly because it is open-source. This means the media content publisher community as a whole can contribute to its changes and updates. MPEG-DASH is globally supported and codec agnostic, which means that you can encode video without worrying about codec support. It has lower latency than HLS. It's playlist file is an ",{"type":23,"tag":4489,"props":4490,"children":4492},"code",{"className":4491},[],[4493],{"type":1175,"value":4494},".MPD",{"type":1175,"value":4496},", which is an ",{"type":23,"tag":4489,"props":4498,"children":4500},{"className":4499},[],[4501],{"type":1175,"value":4502},"XML",{"type":1175,"value":4504}," format.",{"type":23,"tag":1480,"props":4506,"children":4508},{"id":4507},"doing-it-yourself",[4509],{"type":1175,"value":4510},"Doing it yourself",{"type":23,"tag":1171,"props":4512,"children":4513},{},[4514],{"type":1175,"value":4515},"To deliver videos using adaptive streaming you must generate multiple video versions, add an index file per variant and add a master playlist. The formats and encoding for HLS and MPEG-DASH are different for each of these files. If you want to stream using both HLS and MPEG-DASH formats you need to double the effort for every video you want to deliver. Additionally, for MPEG-DASH, the best practice is to deliver the audio and video separately. This stuff is complex and time consuming.",{"type":23,"tag":1171,"props":4517,"children":4518},{},[4519,4521,4527],{"type":1175,"value":4520},"If you are a developer who likes to get into the nitty gritty of ",{"type":23,"tag":4489,"props":4522,"children":4524},{"className":4523},[],[4525],{"type":1175,"value":4526},"ffmpeg",{"type":1175,"value":4528}," you can deep dive and create all sources for HLS and MPEG-DASH yourself.",{"type":23,"tag":3071,"props":4530,"children":4532},{"id":4531},"diy-steps-for-mpeg-dash",[4533],{"type":1175,"value":4534},"DIY steps for MPEG-DASH",{"type":23,"tag":1171,"props":4536,"children":4537},{},[4538],{"type":1175,"value":4539},"MPEG-DASH is simplest to do yourself. Let's give it a go!",{"type":23,"tag":1171,"props":4541,"children":4542},{},[4543,4545,4551,4553],{"type":1175,"value":4544},"Imagine we have a video file called ",{"type":23,"tag":4489,"props":4546,"children":4548},{"className":4547},[],[4549],{"type":1175,"value":4550},"video.mp4",{"type":1175,"value":4552},". To make sure we can adaptively stream the video we need to create video files with different bitrates and an audio file. ",{"type":23,"tag":1632,"props":4554,"children":4555},{},[4556,4558,4563],{"type":1175,"value":4557},"Beware that this is a simplified version for illustration purposes. In real life ",{"type":23,"tag":4489,"props":4559,"children":4561},{"className":4560},[],[4562],{"type":1175,"value":4526},{"type":1175,"value":4564}," has many quirks based what video you give it.",{"type":23,"tag":1171,"props":4566,"children":4567},{},[4568],{"type":23,"tag":1859,"props":4569,"children":4570},{},[4571],{"type":1175,"value":4572},"Step 1: extract the audio",{"type":23,"tag":1171,"props":4574,"children":4575},{},[4576],{"type":1175,"value":4577},"Extract the audio track:",{"type":23,"tag":4579,"props":4580,"children":4582},"pre",{"code":4581},"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n",[4583],{"type":23,"tag":4489,"props":4584,"children":4585},{"__ignoreMap":5},[4586],{"type":1175,"value":4581},{"type":23,"tag":1171,"props":4588,"children":4589},{},[4590],{"type":23,"tag":1859,"props":4591,"children":4592},{},[4593],{"type":1175,"value":4594},"Step 2: extract and re-encode the video track",{"type":23,"tag":4579,"props":4596,"children":4598},{"code":4597},"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n",[4599],{"type":23,"tag":4489,"props":4600,"children":4601},{"__ignoreMap":5},[4602],{"type":1175,"value":4597},{"type":23,"tag":1171,"props":4604,"children":4605},{},[4606],{"type":1175,"value":4607},"The video is encoded using H.264 codec. This forces to have a key frame every 24 frames, in this case, every second. This allows the video to be segmented in chunks of 1 second. The bitrate is evaluated according to the buffer size, so in order to be sure the encoding is close to the requested rate, the buffer size should be lower than the bitrate.",{"type":23,"tag":1171,"props":4609,"children":4610},{},[4611],{"type":23,"tag":1859,"props":4612,"children":4613},{},[4614],{"type":1175,"value":4615},"Step 3: generate the MPD file",{"type":23,"tag":1171,"props":4617,"children":4618},{},[4619],{"type":1175,"value":4620},"We now have one audio file and five video files. A Media Presentation Description (MPD) file has to be created. An MPD file functions as an index referencing the different video and audio tracks with their bitrate, size and how the segments are ordered.",{"type":23,"tag":4579,"props":4622,"children":4624},{"code":4623},"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n",[4625],{"type":23,"tag":4489,"props":4626,"children":4627},{"__ignoreMap":5},[4628],{"type":1175,"value":4623},{"type":23,"tag":1171,"props":4630,"children":4631},{},[4632],{"type":1175,"value":4633},"The -dash option sets the duration of each segment to one second.",{"type":23,"tag":1171,"props":4635,"children":4636},{},[4637,4639,4646],{"type":1175,"value":4638},"Next to preparing adaptive streaming content MP4Box can do a lot more. So much more in fact that it's best to just read more ",{"type":23,"tag":1209,"props":4640,"children":4643},{"href":4641,"rel":4642},"https://github.com/gpac/gpac/wiki/MP4Box",[1213],[4644],{"type":1175,"value":4645},"here",{"type":1175,"value":1218},{"type":23,"tag":1171,"props":4648,"children":4649},{},[4650],{"type":23,"tag":1859,"props":4651,"children":4652},{},[4653],{"type":1175,"value":4654},"Step 4: configure your webserver",{"type":23,"tag":1171,"props":4656,"children":4657},{},[4658,4660,4666,4668,4674],{"type":1175,"value":4659},"Make sure your webserver understands ",{"type":23,"tag":4489,"props":4661,"children":4663},{"className":4662},[],[4664],{"type":1175,"value":4665},".mpd",{"type":1175,"value":4667}," files by adding the following mime type: ",{"type":23,"tag":4489,"props":4669,"children":4671},{"className":4670},[],[4672],{"type":1175,"value":4673},"application/dash+xml",{"type":1175,"value":4675}," to its config.",{"type":23,"tag":1171,"props":4677,"children":4678},{},[4679],{"type":23,"tag":1859,"props":4680,"children":4681},{},[4682],{"type":1175,"value":4683},"Step 5: make sure your video player understands adaptive streaming",{"type":23,"tag":1171,"props":4685,"children":4686},{},[4687,4689,4696],{"type":1175,"value":4688},"Implement ",{"type":23,"tag":1209,"props":4690,"children":4693},{"href":4691,"rel":4692},"https://github.com/Dash-Industry-Forum/dash.js",[1213],[4694],{"type":1175,"value":4695},"dash.js",{"type":1175,"value":4697}," into your video player or build a custom video player around dash.js.",{"type":23,"tag":1171,"props":4699,"children":4700},{},[4701],{"type":23,"tag":1859,"props":4702,"children":4703},{},[4704],{"type":1175,"value":2152},{"type":23,"tag":1171,"props":4706,"children":4707},{},[4708],{"type":1175,"value":4709},"Obviously, doing this at scale or as a slightly less technical user this process is not realistic. You'll want to automate this completely.",{"type":23,"tag":3071,"props":4711,"children":4713},{"id":4712},"enter-cloudinary",[4714],{"type":1175,"value":4715},"Enter: Cloudinary",{"type":23,"tag":1171,"props":4717,"children":4718},{},[4719],{"type":1175,"value":4720},"Next to being market leader in image delivery Cloudinary also provides features for video: from dynamic streaming profiles to cropping the subject perfectly on different video ratios. They even use AI to generate captions for muted videos or meaningful previews.",{"type":23,"tag":1171,"props":4722,"children":4723},{},[4724,4726,4733,4735,4742],{"type":1175,"value":4725},"Today we are discussing the dynamic streaming service they offer. Cloudinary has created ",{"type":23,"tag":1209,"props":4727,"children":4730},{"href":4728,"rel":4729},"https://cloudinary.com/documentation/video_manipulation_and_delivery#adaptive_bitrate_streaming_hls_and_mpeg_dash",[1213],[4731],{"type":1175,"value":4732},"smart pre-defined",{"type":1175,"value":4734}," streaming profiles to help you out. A streaming profile holds a set of video variation definitions with different qualities, bitrates, and codecs. For example, the one profile specifies 10 different variations ranging from extremely high quality to audio-only. You can also create ",{"type":23,"tag":1209,"props":4736,"children":4739},{"href":4737,"rel":4738},"https://cloudinary.com/documentation/admin_api#adaptive_streaming_profiles",[1213],[4740],{"type":1175,"value":4741},"custom profiles",{"type":1175,"value":4743}," through their admin API.",{"type":23,"tag":1171,"props":4745,"children":4746},{},[4747,4749,4756],{"type":1175,"value":4748},"Once you have selected a profile, you upload your video file with an eager transformation that instructs the system to generate all the required files for the requested profile in either HLS or MPEG-DASH format. If you want to deliver both formats, add two ",{"type":23,"tag":1209,"props":4750,"children":4753},{"href":4751,"rel":4752},"https://cloudinary.com/documentation/transformations_on_upload#eager_transformations",[1213],[4754],{"type":1175,"value":4755},"eager transformations",{"type":1175,"value":4757}," within your upload command.",{"type":23,"tag":1171,"props":4759,"children":4760},{},[4761],{"type":1175,"value":4762},"This upload code is for the Node.js SDK.",{"type":23,"tag":4579,"props":4764,"children":4766},{"code":4765},"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('\u003Cyour-video.mp4>', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '\u003Cyour-notify-url>',\n public_id: '\u003Cyour-public-id>', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n",[4767],{"type":23,"tag":4489,"props":4768,"children":4769},{"__ignoreMap":5},[4770],{"type":1175,"value":4765},{"type":23,"tag":1171,"props":4772,"children":4773},{},[4774],{"type":1175,"value":4775},"Now that the file has been uploaded, it generates a bunch of different video and audio streams. These streams are represented in the playlist files below.",{"type":23,"tag":1171,"props":4777,"children":4778},{},[4779],{"type":1175,"value":4780},"For the HLS version of the video this is what comes out as the m3u8 playlist file:",{"type":23,"tag":4579,"props":4782,"children":4784},{"code":4783},"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n",[4785],{"type":23,"tag":4489,"props":4786,"children":4787},{"__ignoreMap":5},[4788],{"type":1175,"value":4783},{"type":23,"tag":1171,"props":4790,"children":4791},{},[4792],{"type":1175,"value":4793},"For the MPEG-DASH version of the video this is what comes out as the MPD playlist file (I have shortened the file for readability):",{"type":23,"tag":4579,"props":4795,"children":4797},{"code":4796},"\u003CMPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\" minBufferTime=\"PT1.500S\" type=\"static\" mediaPresentationDuration=\"PT0H0M28.800S\" maxSegmentDuration=\"PT0H0M2.800S\" profiles=\"urn:mpeg:dash:profile:full:2011\">\n \u003CPeriod duration=\"PT0H0M28.800S\">\n \u003CAdaptationSet segmentAlignment=\"true\" maxWidth=\"1280\" maxHeight=\"720\" maxFrameRate=\"25\" par=\"16:9\" lang=\"und\">\n \u003CRepresentation id=\"1\" mimeType=\"video/mp4\" codecs=\"avc1.42C01E\" width=\"320\" height=\"180\" frameRate=\"25\" sar=\"1:1\" startWithSAP=\"1\" bandwidth=\"188841\">\n \u003CBaseURL>/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\u003C/BaseURL>\n \u003CSegmentList timescale=\"12800\" duration=\"25600\">\n \u003CInitialization range=\"0-909\" />\n \u003CSegmentURL mediaRange=\"910-48949\" indexRange=\"910-953\" />\n \u003CSegmentURL mediaRange=\"48950-90844\" indexRange=\"48950-48993\" />\n \u003CSegmentURL mediaRange=\"90845-134433\" indexRange=\"90845-90888\" />\n \u003CSegmentURL mediaRange=\"134434-177434\" indexRange=\"134434-134477\" />\n \u003CSegmentURL mediaRange=\"177435-229116\" indexRange=\"177435-177478\" />\n \u003CSegmentURL mediaRange=\"229117-280431\" indexRange=\"229117-229160\" />\n \u003CSegmentURL mediaRange=\"280432-328048\" indexRange=\"280432-280475\" />\n \u003CSegmentURL mediaRange=\"328049-376769\" indexRange=\"328049-328092\" />\n \u003CSegmentURL mediaRange=\"376770-426815\" indexRange=\"376770-376813\" />\n \u003CSegmentURL mediaRange=\"426816-478009\" indexRange=\"426816-426859\" />\n \u003CSegmentURL mediaRange=\"478010-528551\" indexRange=\"478010-478053\" />\n \u003CSegmentURL mediaRange=\"528552-572601\" indexRange=\"528552-528595\" />\n \u003CSegmentURL mediaRange=\"572602-620003\" indexRange=\"572602-572645\" />\n \u003CSegmentURL mediaRange=\"620004-679828\" indexRange=\"620004-620047\" />\n \u003C/SegmentList>\n \u003C/Representation>\n \u003CRepresentation id=\"2\" mimeType=\"video/mp4\" codecs=\"avc1.42C01E\" width=\"480\" height=\"270\" frameRate=\"25\" sar=\"1:1\" startWithSAP=\"1\" bandwidth=\"346668\">\n \u003CBaseURL>/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\u003C/BaseURL>\n \u003CSegmentList timescale=\"12800\" duration=\"25600\">\n \u003CInitialization range=\"0-909\" />\n \u003CSegmentURL mediaRange=\"910-84012\" indexRange=\"910-953\" />\n \u003CSegmentURL mediaRange=\"84013-157030\" indexRange=\"84013-84056\" />\n \u003CSegmentURL mediaRange=\"157031-233498\" indexRange=\"157031-157074\" />\n \u003CSegmentURL mediaRange=\"233499-307813\" indexRange=\"233499-233542\" />\n \u003CSegmentURL mediaRange=\"307814-397973\" indexRange=\"307814-307857\" />\n \u003CSegmentURL mediaRange=\"397974-486089\" indexRange=\"397974-398017\" />\n \u003CSegmentURL mediaRange=\"486090-566671\" indexRange=\"486090-486133\" />\n \u003CSegmentURL mediaRange=\"566672-651620\" indexRange=\"566672-566715\" />\n \u003CSegmentURL mediaRange=\"651621-750051\" indexRange=\"651621-651664\" />\n \u003CSegmentURL mediaRange=\"750052-862906\" indexRange=\"750052-750095\" />\n \u003CSegmentURL mediaRange=\"862907-974846\" indexRange=\"862907-862950\" />\n \u003CSegmentURL mediaRange=\"974847-1059121\" indexRange=\"974847-974890\" />\n \u003CSegmentURL mediaRange=\"1059122-1143744\" indexRange=\"1059122-1059165\" />\n \u003CSegmentURL mediaRange=\"1143745-1248006\" indexRange=\"1143745-1143788\" />\n \u003C/SegmentList>\n \u003C/Representation>\n \u003CRepresentation id=\"3\" mimeType=\"video/mp4\" codecs=\"avc1.42C01E\" width=\"640\" height=\"360\" frameRate=\"25\" sar=\"1:1\" startWithSAP=\"1\" bandwidth=\"561940\">\n \u003C!-- ... and many more ... -->\n \u003C/AdaptationSet>\n \u003C/Period>\n\u003C/MPD>\n",[4798],{"type":23,"tag":4489,"props":4799,"children":4800},{"__ignoreMap":5},[4801],{"type":1175,"value":4796},{"type":23,"tag":1171,"props":4803,"children":4804},{},[4805,4807,4814],{"type":1175,"value":4806},"Now that we have the playlist files and all the video streams we can either build our own fancy video player that understands dynamic streaming or we go for the ",{"type":23,"tag":1209,"props":4808,"children":4811},{"href":4809,"rel":4810},"https://cloudinary.com/documentation/cloudinary_video_player",[1213],[4812],{"type":1175,"value":4813},"Cloudinary player",{"type":1175,"value":4815},". In this case I suggest we use the Cloudinary player as it works out of the box. Check out the code sandbox for a very simple vanilla JavaScript example of loading the player for both HLS and MPEG-DASH.",{"type":23,"tag":1171,"props":4817,"children":4818},{},[4819],{"type":1175,"value":4820},"Try throttling your connection and see the differences in quality. To do this, open your web developer tools (assuming you use chrome), open the network tab and select a different connection type in the dropdown next to the \"preserve log\" and \"Disable cache\" checkboxes.",{"type":23,"tag":1171,"props":4822,"children":4823},{},[4824,4826,4833],{"type":1175,"value":4825},"The Cloudinary video player is based on ",{"type":23,"tag":1209,"props":4827,"children":4830},{"href":4828,"rel":4829},"https://videojs.com/",[1213],[4831],{"type":1175,"value":4832},"videojs",{"type":1175,"value":4834}," and has both the HLS and MPEG-DASH plugins installed by default. In the code sandbox below you'll see both the HLS and the MPEG-DASH version. Beware that the HLS version has better support for showing different statistics than the MPEG-DASH version.",{"type":23,"tag":1171,"props":4836,"children":4837},{},[4838,4840],{"type":1175,"value":4839},"See the code here: ",{"type":23,"tag":1209,"props":4841,"children":4844},{"href":4842,"rel":4843},"https://codesandbox.io/s/white-cherry-g4ixt",[1213],[4845],{"type":1175,"value":4842},{"title":5,"searchDepth":34,"depth":34,"links":4847},[4848],{"id":4399,"depth":34,"text":4402,"children":4849},[4850,4851,4852],{"id":4425,"depth":1764,"text":4428},{"id":4462,"depth":1764,"text":4465},{"id":4507,"depth":1764,"text":4510},"content:4.writing:how-to-dynamically-stream-video.md","4.writing/how-to-dynamically-stream-video.md",{"_path":905,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":904,"description":4856,"id":4857,"slug":4858,"date":4859,"image":4860,"canonical_url":4861,"tags":4862,"collection_id":1167,"body":4866,"_type":36,"_id":5018,"_source":38,"_file":5019,"_extension":40},"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with Vue...",1405730,"uniform-is-nuxt-3-read","2023-03-18T13:10:06Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96gzr0p69e9frwbj3i8w.png","https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3",[2305,4863,4864,4865],"javascript","nuxt","vue",{"type":20,"children":4867,"toc":5016},[4868,4890,4895,4900,4905,4910,4915,4964,4969,4983,4988,4993],{"type":23,"tag":1171,"props":4869,"children":4870},{},[4871,4873,4880,4882,4889],{"type":1175,"value":4872},"We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with ",{"type":23,"tag":1209,"props":4874,"children":4877},{"href":4875,"rel":4876},"https://blog.vuejs.org/posts/vue-3-as-the-new-default.html",[1213],[4878],{"type":1175,"value":4879},"Vue 3",{"type":1175,"value":4881}," and ",{"type":23,"tag":1209,"props":4883,"children":4886},{"href":4884,"rel":4885},"https://v3.nuxtjs.org/",[1213],[4887],{"type":1175,"value":4888},"Nuxt 3",{"type":1175,"value":2454},{"type":23,"tag":1171,"props":4891,"children":4892},{},[4893],{"type":1175,"value":4894},"Nuxt 3 is fast approaching GA. To ensure that Vue.js enthusiasts can build next-generation web experiences with the awesome features offered by Nuxt 3, our new SDK fully supports all Uniform capabilities: from no-code presentation management by Uniform Canvas, complete with web-socket-based live previews, to edge-side personalization and A/B testing through Uniform Context. ",{"type":23,"tag":1171,"props":4896,"children":4897},{},[4898],{"type":1175,"value":4899},"With the Nuxt 3 Nitro engine, developers can now run an entire site on the edge or combine personalization on the edge with delivery of the remaining content in SSG mode through a CDN. Even for highly dynamic pages, the latter choice results in blazing-fast page loads. We’re talking sub 50 milliseconds!",{"type":23,"tag":1171,"props":4901,"children":4902},{},[4903],{"type":1175,"value":4904},"Nuxt 3 is truly game changing, and Uniform takes full advantage of that with an easy-to-install SDK that follows Nuxt’s no-config ethos.",{"type":23,"tag":1171,"props":4906,"children":4907},{},[4908],{"type":1175,"value":4909},"##Features of Uniform’s Nuxt 3 module",{"type":23,"tag":1171,"props":4911,"children":4912},{},[4913],{"type":1175,"value":4914},"This is what the module can do:",{"type":23,"tag":1294,"props":4916,"children":4917},{},[4918,4923,4928,4933,4954,4959],{"type":23,"tag":1298,"props":4919,"children":4920},{},[4921],{"type":1175,"value":4922},"Auto-registers the required Uniform components.",{"type":23,"tag":1298,"props":4924,"children":4925},{},[4926],{"type":1175,"value":4927},"Auto-creates a Uniform Canvas client.",{"type":23,"tag":1298,"props":4929,"children":4930},{},[4931],{"type":1175,"value":4932},"Creates a Uniform Context instance (for personalization) and makes it available throughout the app without the need for a wrapping component.",{"type":23,"tag":1298,"props":4934,"children":4935},{},[4936,4938,4944,4946,4953],{"type":1175,"value":4937},"Builds a handy ",{"type":23,"tag":4489,"props":4939,"children":4941},{"className":4940},[],[4942],{"type":1175,"value":4943},"$useCompositionClick to copy",{"type":1175,"value":4945}," composable on top of Nuxt's ",{"type":23,"tag":1209,"props":4947,"children":4950},{"href":4948,"rel":4949},"https://v3.nuxtjs.org/api/composables/use-async-data",[1213],[4951],{"type":1175,"value":4952},"useAsyncData",{"type":1175,"value":1218},{"type":23,"tag":1298,"props":4955,"children":4956},{},[4957],{"type":1175,"value":4958},"Displays live previews seamlessly.",{"type":23,"tag":1298,"props":4960,"children":4961},{},[4962],{"type":1175,"value":4963},"Monitors query-string changes, which Nuxt doesn't do by default.",{"type":23,"tag":1171,"props":4965,"children":4966},{},[4967],{"type":1175,"value":4968},"##Benefits of using Uniform with Nuxt 3",{"type":23,"tag":1171,"props":4970,"children":4971},{},[4972,4974,4981],{"type":1175,"value":4973},"As a rule, no single system offers all the functionalities you need for an app. Instead, multiple systems must work together for the app to run smoothly. A ",{"type":23,"tag":1209,"props":4975,"children":4978},{"href":4976,"rel":4977},"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how",[1213],[4979],{"type":1175,"value":4980},"composable architecture",{"type":1175,"value":4982}," is one in which you can pick and choose the components for your technology stack, but getting them to work together well can be challenging. ",{"type":23,"tag":1171,"props":4984,"children":4985},{},[4986],{"type":1175,"value":4987},"Modern headless systems can connect with other systems as part of a composable architecture. However, using some composable services doesn’t give you a full composable architecture.",{"type":23,"tag":1171,"props":4989,"children":4990},{},[4991],{"type":1175,"value":4992},"Real composability means that you can add or remove components easily as your needs evolve. That’s what Uniform offers. With Uniform’s composition layer, you can build and maintain a modern stack with composable services without tightly coupling them. As a result, developers, content creators, and marketers alike can create and deliver experiences quickly, independently and without vendor lock-in.",{"type":23,"tag":1294,"props":4994,"children":4995},{},[4996,5001,5006,5011],{"type":23,"tag":1298,"props":4997,"children":4998},{},[4999],{"type":1175,"value":5000},"Developers can add or change services any time, assured that their tools will work well together without the need for time-consuming and expensive replatforming and reintegration.",{"type":23,"tag":1298,"props":5002,"children":5003},{},[5004],{"type":1175,"value":5005},"Content creators can build engaging experiences with a consistent, no-code approach through which they can readily leverage all the tools in their stack.",{"type":23,"tag":1298,"props":5007,"children":5008},{},[5009],{"type":1175,"value":5010},"Marketers can promote conversions through intent-based personalization and experimentation mechanisms that integrate with customer data and that are simple and intuitive for implementation by developers.",{"type":23,"tag":1298,"props":5012,"children":5013},{},[5014],{"type":1175,"value":5015},"As internal needs or consumer tastes change, the organization can be agile enough to meet these challenges, without extensive background work that doesn’t deliver direct value to end users.",{"title":5,"searchDepth":34,"depth":34,"links":5017},[],"content:4.writing:uniform-is-nuxt-3-read.md","4.writing/uniform-is-nuxt-3-read.md",{"_path":841,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":840,"description":5021,"id":5022,"slug":5023,"date":5024,"image":5025,"canonical_url":5026,"tags":5027,"collection_id":1167,"body":5028,"_type":36,"_id":5154,"_source":38,"_file":5155,"_extension":40},"Digital experience platforms (DXPs) and the more modern digital experience composition platforms...",1405729,"digital-experience-platforms-the-old-versus-the-new","2023-03-18T13:05:48Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1tc0ds73edh613y9yg6.png","https://uniform.dev/blogs/digital-experience-composition-dxc/difference-between-dxp-and-dxcp",[2408,1788,1789,2305],{"type":20,"children":5029,"toc":5148},[5030,5043,5048,5054,5059,5064,5070,5075,5080,5093,5098,5104,5109,5132,5137,5143],{"type":23,"tag":1171,"props":5031,"children":5032},{},[5033,5035,5041],{"type":1175,"value":5034},"Digital experience platforms (DXPs) and the more modern ",{"type":23,"tag":1209,"props":5036,"children":5038},{"href":2738,"rel":5037},[1213],[5039],{"type":1175,"value":5040},"digital experience composition platforms (DXCPs)",{"type":1175,"value":5042}," share the same goal of making it easier for business users to create visually dynamic, personalized digital experiences. A major contrast is that DXCPs orchestrate solutions and technologies from different vendors. On the other hand, even though DXPs call themselves composable, they lock brands into a single vendor and one way of doing things at the expense of other capabilities.",{"type":23,"tag":1171,"props":5044,"children":5045},{},[5046],{"type":1175,"value":5047},"To help brands decide whether to switch from a DXP to a DXCP, we explain below their key differences. More details are available in this video created by Headless Creator.",{"type":23,"tag":1480,"props":5049,"children":5051},{"id":5050},"dxcps-are-far-more-cloud-native",[5052],{"type":1175,"value":5053},"DXCPs are far more cloud native",{"type":23,"tag":1171,"props":5055,"children":5056},{},[5057],{"type":1175,"value":5058},"A major disadvantage of DXPs is that their foundation is a content management system (CMS), which contains integrated add-ons or bolted-on tools along with such platforms as a digital asset management (DAM) and a product information management (PIM) system. Consequently, developers must manually apply updates, manage the hosting, customize the platform, and scale up the hosting to accommodate traffic spikes, such as those that occur around busy shopping days like Black Friday in the U.S. and Europe. The alternative is to hire the vendor to do all that at an additional cost.",{"type":23,"tag":1171,"props":5060,"children":5061},{},[5062],{"type":1175,"value":5063},"Conversely, DXCPs and the headless tools they manage are all hosted in the cloud and cloud native, which means that updates can not only occur automatically, but also scale elastically as demand rises and falls. Also, since DXCPs are tech agnostic and API-first, business users can work with multiple tools there. They can do that in DXPs, too, but only to a limited extent, let alone that in venturing outside that vendor’s proverbial walled garden, they give up features and capabilities.",{"type":23,"tag":1480,"props":5065,"children":5067},{"id":5066},"dxcps-are-more-than-a-data-aggregator",[5068],{"type":1175,"value":5069},"DXCPs are more than a data aggregator",{"type":23,"tag":1171,"props":5071,"children":5072},{},[5073],{"type":1175,"value":5074},"Uniform views DXCPs as a way for brands and their developers to select advanced, API-first vendors and loosely couple those vendors’ tools together. Furthermore, thanks to DXCPs’ tooling, business users can work across the many integrated tools in a holistic, unified workflow. ",{"type":23,"tag":1171,"props":5076,"children":5077},{},[5078],{"type":1175,"value":5079},"Additionally:",{"type":23,"tag":1294,"props":5081,"children":5082},{},[5083,5088],{"type":23,"tag":1298,"props":5084,"children":5085},{},[5086],{"type":1175,"value":5087},"DXCPs are more than a data aggregator. Even though effective tools are available for stitching APIs into a cohesive model for access and use by developers, those tools do not deftly manage experiences as DXCPs do. After all, API aggregators are meant for access by developers through code only, not for business users, whose expertise rests with a low- or no-code editing environment, in which DXCPs also specialize. ",{"type":23,"tag":1298,"props":5089,"children":5090},{},[5091],{"type":1175,"value":5092},"DXCPs are different from a CMS because, unlike a CMS that requires that all content be routed through it for a tight coupling of technology, they keep content and data sources on a level playing field and maintain the loose coupling so that you can replace and add capabilities as necessary with no technology lock-in. ",{"type":23,"tag":1171,"props":5094,"children":5095},{},[5096],{"type":1175,"value":5097},"In short, the entire focus of DXCPs is to accord teams freedom to collaborate smoothly, and for brands to switch tools without impacting the way other tools work and the overall web experience.",{"type":23,"tag":1480,"props":5099,"children":5101},{"id":5100},"dxcp-protects-domain-data",[5102],{"type":1175,"value":5103},"DXCP protects domain data",{"type":23,"tag":1171,"props":5105,"children":5106},{},[5107],{"type":1175,"value":5108},"When building webpages or experiences, developers need two types of data:",{"type":23,"tag":1294,"props":5110,"children":5111},{},[5112,5122],{"type":23,"tag":1298,"props":5113,"children":5114},{},[5115,5120],{"type":23,"tag":1859,"props":5116,"children":5117},{},[5118],{"type":1175,"value":5119},"Domain data,",{"type":1175,"value":5121}," which is core material, such as product models, that defines your brand across channels. For an events website, this data contains the names of the event spaces provided by your company, the dates, and the procedure for registration.",{"type":23,"tag":1298,"props":5123,"children":5124},{},[5125,5130],{"type":23,"tag":1859,"props":5126,"children":5127},{},[5128],{"type":1175,"value":5129},"Design data,",{"type":1175,"value":5131}," which is volatile, channel-specific material, such as your site’s colors and the way in which you can edit the display of week-by-week information. For an events website, for example, you can change page design or spotlight a feature with volatile data.",{"type":23,"tag":1171,"props":5133,"children":5134},{},[5135],{"type":1175,"value":5136},"In DXPs, both domain data and design data reside in the same CMS, potentially leading to a messy situation and a polluted content model. In DXCPs, the design data and domain data are separate, providing clean data workflows for innovation efforts and more system longevity.",{"type":23,"tag":1480,"props":5138,"children":5140},{"id":5139},"uniform-dxcp-readily-facilitates-transitioning-from-the-old",[5141],{"type":1175,"value":5142},"Uniform DXCP readily facilitates transitioning from the old",{"type":23,"tag":1171,"props":5144,"children":5145},{},[5146],{"type":1175,"value":5147},"The primary function of composable frameworks like DXCPs is to enable both developers and business users to work seamlessly together, doing what they do best by leveraging the headless solutions that support them best. Composability also unlocks the potential of creating state-of-the-art, future-forward web experiences.",{"title":5,"searchDepth":34,"depth":34,"links":5149},[5150,5151,5152,5153],{"id":5050,"depth":1764,"text":5053},{"id":5066,"depth":1764,"text":5069},{"id":5100,"depth":1764,"text":5103},{"id":5139,"depth":1764,"text":5142},"content:4.writing:digital-experience-platforms-the-old-versus-the-new.md","4.writing/digital-experience-platforms-the-old-versus-the-new.md",{"_path":902,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":901,"description":5157,"id":5158,"slug":5159,"date":5160,"image":5161,"canonical_url":5162,"tags":5163,"collection_id":1167,"body":5167,"_type":36,"_id":5365,"_source":38,"_file":5366,"_extension":40},"Nowadays, you’re hard pressed to find an application with all the functionalities you need for...",1405728,"uniform-dxcp-the-what-why-and-how","2023-03-18T13:03:16Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0iccm5uux0ndu9ulnc2g.png","https://uniform.dev/blogs/uniform-dxcp-the-what-why-and-how",[5164,5165,5166,2187],"cdn","edge","sitecore",{"type":20,"children":5168,"toc":5363},[5169,5181,5194,5199,5204,5209,5241,5255,5269,5283,5288,5293,5298,5330,5335,5340,5358],{"type":23,"tag":1171,"props":5170,"children":5171},{},[5172,5174,5179],{"type":1175,"value":5173},"Nowadays, you’re hard pressed to find an application with all the functionalities you need for delivering personalized digital experiences. Even though with headless solutions, you can select the best options for your goals, you can, through composability, easily connect the applications that drive personalized experiences. Still, simply adopting headless technologies isn’t enough; you also need a ",{"type":23,"tag":1209,"props":5175,"children":5177},{"href":4976,"rel":5176},[1213],[5178],{"type":1175,"value":4980},{"type":1175,"value":5180}," that fosters innovation and a seamless authoring experience for business users. ",{"type":23,"tag":1171,"props":5182,"children":5183},{},[5184,5186,5192],{"type":1175,"value":5185},"The answer is Uniform ",{"type":23,"tag":1209,"props":5187,"children":5189},{"href":2738,"rel":5188},[1213],[5190],{"type":1175,"value":5191},"Digital Experience Composition Platform (DXCP)",{"type":1175,"value":5193},", whose vendor-agnostic capabilities scale to your needs, enabling you to assemble, change, and reassemble your tools as requirements evolve. But what is Uniform DXCP and why does it exist? Read on.",{"type":23,"tag":1171,"props":5195,"children":5196},{},[5197],{"type":1175,"value":5198},"##What is Uniform DXCP?",{"type":23,"tag":1171,"props":5200,"children":5201},{},[5202],{"type":1175,"value":5203},"Uniform DXCP is a new, unique product category with which you can effortlessly integrate legacy and composable services with your design system and front end of choice. In particular, you can switch to and maintain composable systems without having to build and support the connections among those systems. In a composable architecture, that means adding and removing the tools without breaking your personalized, omnichannel digital experience. ",{"type":23,"tag":1171,"props":5205,"children":5206},{},[5207],{"type":1175,"value":5208},"##Why is now the time to move beyond the modern tech stack?",{"type":23,"tag":1171,"props":5210,"children":5211},{},[5212,5214,5221,5223,5230,5232,5239],{"type":1175,"value":5213},"Similar to a composer who arranges the notes of a musical score, you’re the composer of your project’s tech stack. Say, your stack comprises various tools—a ",{"type":23,"tag":1209,"props":5215,"children":5218},{"href":5216,"rel":5217},"https://uniform.dev/blogs/headless-cms/uniform-for-headless-cms",[1213],[5219],{"type":1175,"value":5220},"headless content management system (CMS)",{"type":1175,"value":5222},", a ",{"type":23,"tag":1209,"props":5224,"children":5227},{"href":5225,"rel":5226},"https://uniform.dev/blogs/composable-architecture/uniform-for-headless-commerce",[1213],[5228],{"type":1175,"value":5229},"commerce platform",{"type":1175,"value":5231},", a digital asset management (DAM) system, and so on—from different vendors. By combining those technologies and hosting them on a ",{"type":23,"tag":1209,"props":5233,"children":5236},{"href":5234,"rel":5235},"https://uniform.dev/blogs/sitecore/deliver-better-digital-experiences-with-a-cdn",[1213],[5237],{"type":1175,"value":5238},"content delivery network (CDN)",{"type":1175,"value":5240},", you render a webpage. ",{"type":23,"tag":1171,"props":5242,"children":5243},{},[5244,5246,5253],{"type":1175,"value":5245},"Nonetheless, connecting headless tools with APIs doesn’t necessarily produce a high-quality or ",{"type":23,"tag":1209,"props":5247,"children":5250},{"href":5248,"rel":5249},"https://uniform.dev/blogs/composable-architecture/headless-versus-composable-everything-you-need-to-know",[1213],[5251],{"type":1175,"value":5252},"composable experience",{"type":1175,"value":5254},". As your enterprise scales up, your business must grow as well, meaning that you must incorporate more and more applications into your tech stack, all of which are hard coded into one another through their app stores or your front-end technology. ",{"type":23,"tag":1171,"props":5256,"children":5257},{},[5258,5260,5267],{"type":1175,"value":5259},"What you end up with is a messy, unwieldy, and inflexible tech stack—a maintenance headache  for your developers. Not to mention that ",{"type":23,"tag":1209,"props":5261,"children":5264},{"href":5262,"rel":5263},"https://uniform.dev/blogs/composable-architecture/switching-vendors-for-digital-architectures-without-replatforming",[1213],[5265],{"type":1175,"value":5266},"replatforming",{"type":1175,"value":5268}," or rebuilding your project from scratch can be nightmarish and expensive. ",{"type":23,"tag":1171,"props":5270,"children":5271},{},[5272,5274,5281],{"type":1175,"value":5273},"How do you transform your tech stack from a cacophony of integrations connected by endless ",{"type":23,"tag":1209,"props":5275,"children":5278},{"href":5276,"rel":5277},"https://uniform.dev/blogs/glue-code",[1213],[5279],{"type":1175,"value":5280},"glue code",{"type":1175,"value":5282}," into a composable architecture that bridges your tools into a harmonious experience? You do it with digital experience composition.  ",{"type":23,"tag":1171,"props":5284,"children":5285},{},[5286],{"type":1175,"value":5287},"##How do you transition from chaos to composable with DXCP",{"type":23,"tag":1171,"props":5289,"children":5290},{},[5291],{"type":1175,"value":5292},"With Uniform DXCP, you need not create and maintain the custom code that connects your APIs and front-end layers. Instead, you can compose and organize headless solutions in your tech stack without the exorbitant costs, laborious upgrades, and complexities. ",{"type":23,"tag":1171,"props":5294,"children":5295},{},[5296],{"type":1175,"value":5297},"Here are the major benefits of moving to composable with Uniform DXCP: ",{"type":23,"tag":1294,"props":5299,"children":5300},{},[5301,5315,5320,5325],{"type":23,"tag":1298,"props":5302,"children":5303},{},[5304,5306,5313],{"type":1175,"value":5305},"Remember the messy tech stack we cited earlier? ",{"type":23,"tag":1209,"props":5307,"children":5310},{"href":5308,"rel":5309},"https://uniform.dev/blogs/composable-architecture/the-mach-monolith",[1213],[5311],{"type":1175,"value":5312},"Monolithic architectures",{"type":1175,"value":5314}," require development of new features or investment in complicated integrations. Not so with Uniform DXCP, whose API-orchestration layer handles the connections among your digital experiences and the applications that power them.",{"type":23,"tag":1298,"props":5316,"children":5317},{},[5318],{"type":1175,"value":5319},"No more “publish and pray” moments. Uniform DXCP’s no-code orchestration layer accords business users an editor with which to drag and drop components wherever they want and preview the resultant display.",{"type":23,"tag":1298,"props":5321,"children":5322},{},[5323],{"type":1175,"value":5324},"In DXCP, your front end is unaware of your connections so no proprietary limitations exist, and you can select any front-end technology you desire. Whether you choose Java or PHP, your digital experience remains consistent and seamless.",{"type":23,"tag":1298,"props":5326,"children":5327},{},[5328],{"type":1175,"value":5329},"DXCP offers a new paradigm for page creation around where data lives and how you manage that data. No more worries about product information being displayed outside the context of its intended design and user experience. With Uniform sitting on the end of your design data and keeping domain data intact, you’re free to deliver digital experiences through multiple services at scale. ",{"type":23,"tag":1171,"props":5331,"children":5332},{},[5333],{"type":1175,"value":5334},"##How do you fuel your stack with digital experience composition?",{"type":23,"tag":1171,"props":5336,"children":5337},{},[5338],{"type":1175,"value":5339},"After you’ve built a composable architecture in DXCP:",{"type":23,"tag":1294,"props":5341,"children":5342},{},[5343,5348,5353],{"type":23,"tag":1298,"props":5344,"children":5345},{},[5346],{"type":1175,"value":5347},"Your developers can easily add features and swap out tools from the stack individually.",{"type":23,"tag":1298,"props":5349,"children":5350},{},[5351],{"type":1175,"value":5352},"Your stack stays organized with no need for those time-consuming, costly integrations that impede your speed to market.",{"type":23,"tag":1298,"props":5354,"children":5355},{},[5356],{"type":1175,"value":5357},"Your marketers can drag and drop the components they need to create personalized omnichannel experiences without developer assistance. ",{"type":23,"tag":1171,"props":5359,"children":5360},{},[5361],{"type":1175,"value":5362},"The result is less code, greater agility and flexibility, and a more smooth approach for handling orchestration and integrating new tools into your tech stack. ",{"title":5,"searchDepth":34,"depth":34,"links":5364},[],"content:4.writing:uniform-dxcp-the-what-why-and-how.md","4.writing/uniform-dxcp-the-what-why-and-how.md",{"_path":853,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":852,"description":5368,"id":5369,"slug":5370,"date":5371,"image":5372,"canonical_url":5373,"tags":5374,"collection_id":1167,"body":5376,"_type":36,"_id":5642,"_source":38,"_file":5643,"_extension":40},"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic...",1405727,"how-to-sniff-out-the-glue-monster","2023-03-18T13:00:21Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8mwj68dscwvzuvcdd4y.png","https://uniform.dev/blogs/how-to-sniff-out-the-glue-monster",[4863,2408,1789,5375],"devops",{"type":20,"children":5377,"toc":5637},[5378,5391,5396,5414,5422,5427,5432,5440,5446,5451,5469,5474,5492,5497,5502,5508,5558,5563,5568,5574,5582,5587,5592,5600,5612,5617,5622,5627,5632],{"type":23,"tag":1171,"props":5379,"children":5380},{},[5381,5383,5389],{"type":1175,"value":5382},"Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic platforms to ",{"type":23,"tag":1209,"props":5384,"children":5386},{"href":4976,"rel":5385},[1213],[5387],{"type":1175,"value":5388},"composable architectures",{"type":1175,"value":5390},", glue code that connects to systems or cleanses data has grown exponentially. ",{"type":23,"tag":1171,"props":5392,"children":5393},{},[5394],{"type":1175,"value":5395},"Reality is, you as developers must connect headless systems for a cohesive, feature-complete architecture, but that’s a messy task. The amount of glue you must create hinges on deadlines, the potential need to switch systems later, and the answers to these questions:",{"type":23,"tag":1294,"props":5397,"children":5398},{},[5399,5404,5409],{"type":23,"tag":1298,"props":5400,"children":5401},{},[5402],{"type":1175,"value":5403},"Do you clean up that messy API response so its data fits the front end?",{"type":23,"tag":1298,"props":5405,"children":5406},{},[5407],{"type":1175,"value":5408},"Do you adapt your front-end components to specific API output and add logic locally?",{"type":23,"tag":1298,"props":5410,"children":5411},{},[5412],{"type":1175,"value":5413},"Do you separate domain data with design-related data, or mix up everything in data models in different headless systems?",{"type":23,"tag":1171,"props":5415,"children":5416},{},[5417],{"type":23,"tag":1234,"props":5418,"children":5421},{"alt":5419,"loading":1238,"provider":1239,"sizes":1240,"src":5420,"width":13},"Glue Code SPREAD","https://images.ctfassets.net/9ku1oyd4k3wo/5iPWgs3hiyQZb1O7cZECJt/671395cc3852d456f1dc02d34d6d5b2c/GlueCode_Blog_SPREAD.png",[],{"type":23,"tag":1171,"props":5423,"children":5424},{},[5425],{"type":1175,"value":5426},"Glue code is a nightmare of technical debt that leads to less innovation, more development effort, and, ultimately, higher expense on hidden requirements.",{"type":23,"tag":1171,"props":5428,"children":5429},{},[5430],{"type":1175,"value":5431},"##Types of glue",{"type":23,"tag":1171,"props":5433,"children":5434},{},[5435],{"type":23,"tag":1234,"props":5436,"children":5439},{"alt":5437,"loading":1238,"provider":1239,"sizes":1240,"src":5438,"width":13},"Glue code Icon","https://images.ctfassets.net/9ku1oyd4k3wo/5n8VoHX3RPLBLFWg2IJsYP/f2e9ccc22bd7541b352b7bf19d24ffcb/GlueCode_Blog_Images_Glue_code_Icon.png",[],{"type":23,"tag":1480,"props":5441,"children":5443},{"id":5442},"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else",[5444],{"type":1175,"value":5445},"Code that queries a source or receives data that maps the input to fit something else. ",{"type":23,"tag":1171,"props":5447,"children":5448},{},[5449],{"type":1175,"value":5450},"An example is code that queries an API endpoint and retrieves a huge yet incomplete dataset for the following steps:",{"type":23,"tag":2800,"props":5452,"children":5453},{},[5454,5459,5464],{"type":23,"tag":1298,"props":5455,"children":5456},{},[5457],{"type":1175,"value":5458},"Map the initial result into a more specific object. ",{"type":23,"tag":1298,"props":5460,"children":5461},{},[5462],{"type":1175,"value":5463},"Enrich that object by querying another endpoint and add the result to the original. ",{"type":23,"tag":1298,"props":5465,"children":5466},{},[5467],{"type":1175,"value":5468},"Tidy up the code and create a final data set.",{"type":23,"tag":1171,"props":5470,"children":5471},{},[5472],{"type":1175,"value":5473},"Here’s a real-world use case: queries on a YouTube playlist and retrieval of the metadata on the videos there. The process runs as follows:",{"type":23,"tag":2800,"props":5475,"children":5476},{},[5477,5482,5487],{"type":23,"tag":1298,"props":5478,"children":5479},{},[5480],{"type":1175,"value":5481},"The code traverses the response to identify and arrange the video IDs in an array. ",{"type":23,"tag":1298,"props":5483,"children":5484},{},[5485],{"type":1175,"value":5486},"You query the YouTube video API for each video ID for all the needed data. ",{"type":23,"tag":1298,"props":5488,"children":5489},{},[5490],{"type":1175,"value":5491},"Given the massive amount of data that results, you go through the response for the exact data.",{"type":23,"tag":1171,"props":5493,"children":5494},{},[5495],{"type":1175,"value":5496},"In the case of a less reputable source than YouTube or a legacy API, any changes could break the data structure you assume is returned. Not only that, since you have no inkling of the type of the returned data, your data-mapping code must be defensive. Some fields might be empty or even nonexistent sometimes. ",{"type":23,"tag":1171,"props":5498,"children":5499},{},[5500],{"type":1175,"value":5501},"Plus, placing all that code in your front end spells complexity. What to do when you’re building another front end like a mobile app or an Apple TV app? Do you duplicate the code in all the new channels?",{"type":23,"tag":1480,"props":5503,"children":5505},{"id":5504},"polluting-stable-domain-data-with-volatile-design-data",[5506],{"type":1175,"value":5507},"Polluting stable domain data with volatile design data",{"type":23,"tag":1171,"props":5509,"children":5510},{},[5511,5513,5519,5521,5527,5528,5534,5535,5541,5542,5548,5550,5556],{"type":1175,"value":5512},"Generally, a data model for videos contains the following fields: ",{"type":23,"tag":4489,"props":5514,"children":5516},{"className":5515},[],[5517],{"type":1175,"value":5518},"titleClick to copy",{"type":1175,"value":5520},", ",{"type":23,"tag":4489,"props":5522,"children":5524},{"className":5523},[],[5525],{"type":1175,"value":5526},"descriptionClick to copy",{"type":1175,"value":5520},{"type":23,"tag":4489,"props":5529,"children":5531},{"className":5530},[],[5532],{"type":1175,"value":5533},"poster imageClick to copy",{"type":1175,"value":5520},{"type":23,"tag":4489,"props":5536,"children":5538},{"className":5537},[],[5539],{"type":1175,"value":5540},"durationClick to copy",{"type":1175,"value":5520},{"type":23,"tag":4489,"props":5543,"children":5545},{"className":5544},[],[5546],{"type":1175,"value":5547},"upload dateClick to copy",{"type":1175,"value":5549},", and ",{"type":23,"tag":4489,"props":5551,"children":5553},{"className":5552},[],[5554],{"type":1175,"value":5555},"video fileClick to copy",{"type":1175,"value":5557},". But what to do if the product owner wants to highlight this video as “featured” for the week? You would add a “featured” checkbox to the data model and ask content editors to check “featured” in the CMS. In the front-end code, you would look for the “featured” flag and show a bigger version of the video card along with a boldfaced title. If the video appears in another context, like a search result or on another website, that “featured” flag has no meaning.",{"type":23,"tag":1171,"props":5559,"children":5560},{},[5561],{"type":1175,"value":5562},"In time, you would add other checkboxes and dropdowns to show the content differently in various contexts, causing the content model to grow. At that point, if an architect who’s cleaning house removes a checkbox, multiple projects that leverage the video would crash and burn.",{"type":23,"tag":1171,"props":5564,"children":5565},{},[5566],{"type":1175,"value":5567},"To sustain a setup with data models that are regularly polluted in that manner, you must build a plethora of defensive code that catches all the additional data. That’s how undesirable glue code and tech debt build up.",{"type":23,"tag":1480,"props":5569,"children":5571},{"id":5570},"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers",[5572],{"type":1175,"value":5573},"Creating glue layers by vendors to stay sticky (pun intended) with customers",{"type":23,"tag":1171,"props":5575,"children":5576},{},[5577],{"type":23,"tag":1234,"props":5578,"children":5581},{"alt":5579,"loading":1238,"provider":1239,"sizes":1240,"src":5580,"width":13},"Glue Code STICKY architecture","https://images.ctfassets.net/9ku1oyd4k3wo/5zwPAAafgm4qZpoU9H2Bbw/8d4928142367cd19f8b76528bfc61ef0/GlueCode_Blog_STICKY.png",[],{"type":23,"tag":1171,"props":5583,"children":5584},{},[5585],{"type":1175,"value":5586},"The more “official” glue vendors add to a composable system, the harder it is for their customers to perform updates, or switch or add components. The more tech debt, the more support hours vendors can sell. Also, since modern, more agile vendors are bound to outpace the less competitive ones in time, the wise thing for the latter to do is adopt solutions that offer hyperflexible systems at lower cost, enabling their customers to focus on storytelling and solving business problems for their audience without sticky glue.",{"type":23,"tag":1171,"props":5588,"children":5589},{},[5590],{"type":1175,"value":5591},"##Ways to deglue",{"type":23,"tag":1171,"props":5593,"children":5594},{},[5595],{"type":23,"tag":1234,"props":5596,"children":5599},{"alt":5597,"loading":1238,"provider":1239,"sizes":1240,"src":5598,"width":13},"Unglue Icon","https://images.ctfassets.net/9ku1oyd4k3wo/16F6FELfCSkZjE8cCuRauw/2c81553462dd1d16be36b2a56dffd443/GlueCode_Blog_Images_Unglue_Icon.png",[],{"type":23,"tag":1171,"props":5601,"children":5602},{},[5603,5605,5610],{"type":1175,"value":5604},"The new product category digital experience composition facilitates degluing. Typically, you create pages on ",{"type":23,"tag":1209,"props":5606,"children":5608},{"href":2738,"rel":5607},[1213],[5609],{"type":1175,"value":5040},{"type":1175,"value":5611}," with data from numerous headless sources without having to understand how those sources work. With the DXCP hosting a brand’s design system in page components, you can drag and drop them onto the page and connect data from external sources to them. No need to write connection code at all. ",{"type":23,"tag":1171,"props":5613,"children":5614},{},[5615],{"type":1175,"value":5616},"DXCPs map component properties to specific data fields of APIs. That means you could add to your video component an image from a DAM, a title and description from YouTube, and viewer metadata from an ERP system. Want to feature the video somewhere? Simply add a checkbox in the DXCP in the context of the component in question without affecting the data model of external systems. As a last step, add the data attached to the component to the CDN edge for caching. Alternatively, grab the information on the data source and query it yourself. ",{"type":23,"tag":1171,"props":5618,"children":5619},{},[5620],{"type":1175,"value":5621},"The front end contains a light and fast SDK that can query component compositions in the CDN-edge cache. With the content mapped explicitly to your component properties in the DXCP, no data mapping is required. And you are now deglued!—with no need to build code to straighten up data or query external systems.",{"type":23,"tag":1171,"props":5623,"children":5624},{},[5625],{"type":1175,"value":5626},"Want to add a tiny bit of glue nonetheless? The SDK also contains hooks through which you can enrich or map data from the API before sending the data to the components.",{"type":23,"tag":1171,"props":5628,"children":5629},{},[5630],{"type":1175,"value":5631},"In the meantime, content editors can take advantage of the DXCP’s live-preview feature to contextually edit the website by connecting new headless sources and mapping API responses to the components you created. Updating a CMS or adding a legacy source takes only a few clicks, code free. ",{"type":23,"tag":1171,"props":5633,"children":5634},{},[5635],{"type":1175,"value":5636},"Moreover, content editors can manually type in content on the DXCP and, later on, attach a CMS or commerce system that replaces the static copy with dynamic pointers from component fields to API responses. Again, no code is required to accommodate those functions.",{"title":5,"searchDepth":34,"depth":34,"links":5638},[5639,5640,5641],{"id":5442,"depth":1764,"text":5445},{"id":5504,"depth":1764,"text":5507},{"id":5570,"depth":1764,"text":5573},"content:4.writing:how-to-sniff-out-the-glue-monster.md","4.writing/how-to-sniff-out-the-glue-monster.md",{"_path":884,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":883,"description":5645,"id":5646,"slug":5647,"date":5648,"image":5649,"canonical_url":5650,"tags":5651,"collection_id":1167,"body":5654,"_type":36,"_id":5885,"_source":38,"_file":5886,"_extension":40},"Calling for a revolution in how agencies run tech projects I spent a lot of time working...",1405725,"the-future-of-managing-projects-at-agencie","2023-03-18T12:56:10Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipu6a76iegjp4d19mb0u.png","https://uniform.dev/blogs/composable-architecture/the-future-of-managing-projects-at-agencies",[1789,2408,5652,5653],"agency","process",{"type":20,"children":5655,"toc":5877},[5656,5662,5667,5672,5677,5689,5694,5700,5705,5711,5716,5746,5751,5756,5761,5766,5778,5783,5788,5793,5798,5803,5809,5831,5836,5841,5847,5852,5857,5862,5867,5872],{"type":23,"tag":1178,"props":5657,"children":5659},{"id":5658},"calling-for-a-revolution-in-how-agencies-run-tech-projects",[5660],{"type":1175,"value":5661},"Calling for a revolution in how agencies run tech projects",{"type":23,"tag":1171,"props":5663,"children":5664},{},[5665],{"type":1175,"value":5666},"I spent a lot of time working through messy production processes during my years at digital agencies. From single campaigns to building 800+ websites for a brand and its sub-brands, easier processes would have been better for the final result and my hairline. I’m so excited to work with new technology that will change the game for managing agency processes—making everything from delivery to collaboration much easier and faster.",{"type":23,"tag":1171,"props":5668,"children":5669},{},[5670],{"type":1175,"value":5671},"I have no illusions that I can fix everything—but I hope that you read this with an open mind and see that a better way is possible. Agency processes are ever-changing, and things always seem to fall apart as deadlines near. Nonetheless, by following what I describe below, you can deliver faster from day one and show results to clients for better feedback, all while setting up brands with a future-proof architecture. And yes, you can stay agile at the same time!",{"type":23,"tag":1171,"props":5673,"children":5674},{},[5675],{"type":1175,"value":5676},"##Why agencies embracing composable architectures face challenges",{"type":23,"tag":1171,"props":5678,"children":5679},{},[5680,5682,5687],{"type":1175,"value":5681},"Agencies that start working with ",{"type":23,"tag":1209,"props":5683,"children":5685},{"href":4976,"rel":5684},[1213],[5686],{"type":1175,"value":5388},{"type":1175,"value":5688}," quickly see the benefits during the pitch stage, but when the work starts, so do the problems—mainly when you connect services and when content editors or marketers start working. Because projects are complex, agencies generally sell discovery phases, workshops, and agile methodologies. That’s a great practice, but one that also runs face-first into the challenge of building composable projects at scale.",{"type":23,"tag":1171,"props":5690,"children":5691},{},[5692],{"type":1175,"value":5693},"Here are two key issues:",{"type":23,"tag":1480,"props":5695,"children":5697},{"id":5696},"the-way-agencies-work-makes-parallel-collaboration-difficult",[5698],{"type":1175,"value":5699},"The way agencies work makes parallel collaboration difficult.",{"type":23,"tag":1171,"props":5701,"children":5702},{},[5703],{"type":1175,"value":5704},"For example, choosing a CMS or front-end framework depends on the discovery phase or finalization of a client contract. When a CMS or a design is ready, front-end developers can start building the interface, and back-end developers can commence data modeling. QA always happens at the end, inevitably spilling over into the next sprint.",{"type":23,"tag":1480,"props":5706,"children":5708},{"id":5707},"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way",[5709],{"type":1175,"value":5710},"The architecture is code-first, i.e., composed of glue code that works in only one way.",{"type":23,"tag":1171,"props":5712,"children":5713},{},[5714],{"type":1175,"value":5715},"As you scale that up, things get very painful very fast. ",{"type":23,"tag":2800,"props":5717,"children":5718},{},[5719,5724,5729,5734],{"type":23,"tag":1298,"props":5720,"children":5721},{},[5722],{"type":1175,"value":5723},"Abstract, code-first systems aren’t built for content editors. At best, they tolerate them. Given that it’s hard to deliver great work while constantly fighting with your own tools, people become upset and less productive, or they leave. Either result can cause major project delays.",{"type":23,"tag":1298,"props":5725,"children":5726},{},[5727],{"type":1175,"value":5728},"Developers are constantly involved with the publication process because content editors need technical support to create experiences. That means that developers are kept from building new, value-adding features and pursuing innovation, and every sprint is filled with unpredictable disruption.",{"type":23,"tag":1298,"props":5730,"children":5731},{},[5732],{"type":1175,"value":5733},"A tech stack connected through tightly-coupled integration code is way worse than the legacy monoliths. If things go wrong, no sole organization is at fault. Instead, the people with the overall responsibility—the agency—are held accountable.",{"type":23,"tag":1298,"props":5735,"children":5736},{},[5737,5739,5744],{"type":1175,"value":5738},"That glue code I mentioned before? It sticks ",{"type":23,"tag":1632,"props":5740,"children":5741},{},[5742],{"type":1175,"value":5743},"hard",{"type":1175,"value":5745},". You must prepare for pain when you try to replace a single headless source in a web of hard-integrated sources and front-end code. ",{"type":23,"tag":1171,"props":5747,"children":5748},{},[5749],{"type":1175,"value":5750},"There is a better way, but it requires a major shift in your thinking.",{"type":23,"tag":1171,"props":5752,"children":5753},{},[5754],{"type":1175,"value":5755},"##How a great DXCP unlocks parallel workflows",{"type":23,"tag":1171,"props":5757,"children":5758},{},[5759],{"type":1175,"value":5760},"Time-to-value is much more critical than time-to-market. Going to market quickly with a terrible product doesn’t do much more than damage your reputation and annoy customers. The fact you least did it quickly won’t be much consolation to anyone.",{"type":23,"tag":1171,"props":5762,"children":5763},{},[5764],{"type":1175,"value":5765},"The secret for time to value is working more in parallel. Of course, that’s much easier said than done for difficult tasks like ideation of page composition, component definition, data-model design, CI/CD setup, and, concurrently, choice of the front-end framework. Fortunately, cool new tools are around to make it much easier. ",{"type":23,"tag":1171,"props":5767,"children":5768},{},[5769,5771,5776],{"type":1175,"value":5770},"To work in parallel, first, integrate design-related data into your process with a ",{"type":23,"tag":1209,"props":5772,"children":5774},{"href":2738,"rel":5773},[1213],[5775],{"type":1175,"value":2742},{"type":1175,"value":5777},". Design data presents your content in a certain way in the context of each page and potentially for each audience. For example, a featured product shows as being featured because you tell the page to feature it in that specific way.",{"type":23,"tag":1171,"props":5779,"children":5780},{},[5781],{"type":1175,"value":5782},"On the other hand, the product data comes from your commerce engine, which just serves the product info and has no knowledge of whether the product is featured on a page. The DXCP orchestrates and links your design to the external source(s) that hold your data. This crucial context step allows you to work effectively in parallel.",{"type":23,"tag":1171,"props":5784,"children":5785},{},[5786],{"type":1175,"value":5787},"Note the difference between domain data and design data. With a DXCP, you design pages based on the components that make up a page. You can link each component to a resource, i.e., an external API like a headless CMS, DAM, PIM, or a legacy system. Your domain data resides in those systems. You then bind the external API data to parameters and fields on the components in the DXCP to create the final experience for your audience on a channel.",{"type":23,"tag":1171,"props":5789,"children":5790},{},[5791],{"type":1175,"value":5792},"You can set up connections with DXCP so that the system acts as an API data aggregator that loosely couples to external sources. Additionally, you can establish access rules that define which users can add resources and bind to components. For example, content editors could add the Instagram API and feed that data to a component for campaign pages without developer assistance. ",{"type":23,"tag":1171,"props":5794,"children":5795},{},[5796],{"type":1175,"value":5797},"Once resources are bound, API results are cached at the CDN edge for fast and easy querying. Developers only need to connect to the CDN endpoint to access the data from all the sources that channel data to the components on the page.",{"type":23,"tag":1171,"props":5799,"children":5800},{},[5801],{"type":1175,"value":5802},"Even without a CMS, content editors can fill in the component fields with content, accelerating the UX and prototyping phases of a project. Once a CMS is in place, the content connects as a resource to a component without the need to rebuild the component. For efficiency, you can configure the fields to be dynamic. No coding is required.",{"type":23,"tag":1480,"props":5804,"children":5806},{"id":5805},"how-a-dxcp-enables-parallel-collaboration",[5807],{"type":1175,"value":5808},"How a DXCP enables parallel collaboration",{"type":23,"tag":1171,"props":5810,"children":5811},{},[5812,5814,5821,5822,5829],{"type":1175,"value":5813},"If you know what kind of components you need or have a library like ",{"type":23,"tag":1209,"props":5815,"children":5818},{"href":5816,"rel":5817},"https://www.kickstartds.com/",[1213],[5819],{"type":1175,"value":5820},"kickstartDS",{"type":1175,"value":2100},{"type":23,"tag":1209,"props":5823,"children":5826},{"href":5824,"rel":5825},"https://tailwindui.com/",[1213],[5827],{"type":1175,"value":5828},"Tailwind UI",{"type":1175,"value":5830},", you can configure them in the DXCP and start composing pages—with no need for a CMS initially. Simultaneously, the back-end team can select the headless tool while the front-end team can choose a front-end framework and start querying the composed pages. The QA team can start testing the front end as soon as the first few pages have been created with the component library.",{"type":23,"tag":1171,"props":5832,"children":5833},{},[5834],{"type":1175,"value":5835},"Since the DXCP does not dictate what kind of hosting or CI/CD stack is needed, the DevOps team can work on the setup while the rest of the process is proceeding. Once you install the CDN integration, anyone with the appropriate access privileges can handle releases. Can’t find the prebuilt integration? Build your own, or just add a few webhooks for communication.",{"type":23,"tag":1171,"props":5837,"children":5838},{},[5839],{"type":1175,"value":5840},"On top of that, DXCPs also feature a project map as a basis for creating pages and subpages. The product owner can start building user journeys in the same system while all the other operations are going on. Say goodbye to journey spreadsheets because you can now use the tool you will also use when teh project is in production.",{"type":23,"tag":1480,"props":5842,"children":5844},{"id":5843},"how-to-ensure-the-architecture-is-divisible-and-maintainable",[5845],{"type":1175,"value":5846},"How to ensure the architecture is divisible and maintainable",{"type":23,"tag":1171,"props":5848,"children":5849},{},[5850],{"type":1175,"value":5851},"Due to the nature of DXCP, you don’t need to interconnect external tools; they all talk directly to the DXCP. Likewise, changing or adding headless sources does not affect developers in nearly the same way. Without developer involvement in the no-code editor, universal previews, and project maps, content editors are much more productive. Business users don’t need to ‘publish and pray’ when they build a page from multiple sources—it’s all right there.",{"type":23,"tag":1171,"props":5853,"children":5854},{},[5855],{"type":1175,"value":5856},"Moreover, since the no-code editor integrates flawlessly with external sources and normalizes their interfaces, content editors don’t need to understand how those systems work—making it far easier to onboard new team members. Add that to the freedom of grouping components together and easily personalizing those sources; business users are empowered to own their workflows and results without depending on overworked devs. ",{"type":23,"tag":1171,"props":5858,"children":5859},{},[5860],{"type":1175,"value":5861},"Given that DXCP is front-end, hosting, and CDN agnostic, developers can use the tools they love, which makes the most sense for the job at hand. No more compromising with the whims of legacy tech! Even though DXCP has an opinion on the direction of the architecture, once developers go down that road, they have complete freedom to do their job in the way they prefer.",{"type":23,"tag":1171,"props":5863,"children":5864},{},[5865],{"type":1175,"value":5866},"##How DXCP transforms the project-development process",{"type":23,"tag":1171,"props":5868,"children":5869},{},[5870],{"type":1175,"value":5871},"Adopting DXCP can revolutionize how you build projects—if you let it. With traditional blockers out of the way, teams can accomplish more in parallel and show value much faster. For all that composable architecture at scale is generally messy and chaotic, forcing agencies and brands to work around issues never seen before: digital experience composition adds structure while staying tech-agnostic and accelerates time-to-value.",{"type":23,"tag":1171,"props":5873,"children":5874},{},[5875],{"type":1175,"value":5876},"No matter how much things change, some things stay the same. The agencies that best embrace new technologies and new mindsets to maximize their impact will gain an edge in the market. As the market gets less certain, finding ways to deliver more value for clients faster and effectively showcase it will be crucial. When that also creates a platform that will deliver in the long term and position your agency as a key strategic partner—that’s where the magic happens. ",{"title":5,"searchDepth":34,"depth":34,"links":5878},[5879],{"id":5658,"depth":34,"text":5661,"children":5880},[5881,5882,5883,5884],{"id":5696,"depth":1764,"text":5699},{"id":5707,"depth":1764,"text":5710},{"id":5805,"depth":1764,"text":5808},{"id":5843,"depth":1764,"text":5846},"content:4.writing:the-future-of-managing-projects-at-agencie.md","4.writing/the-future-of-managing-projects-at-agencie.md",{"_path":844,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":843,"description":5888,"id":5889,"slug":5890,"date":5891,"image":5892,"canonical_url":5893,"tags":5894,"collection_id":1167,"body":5898,"_type":36,"_id":6023,"_source":38,"_file":6024,"_extension":40},"To maintain an engaging relationship with your audience and increase conversions to your site, you...",1405723,"fast-personalized-pages-with-vercel-edge-middleware-and-uniform","2023-03-18T12:49:56Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1yp1gg5ldu4y8tozle7.png","https://uniform.dev/blogs/personalization/blazing-fast-personalized-pages-with-vercel-edge-middleware-and-uniform",[5895,5896,5897,5165],"performance","personalization","vercel",{"type":20,"children":5899,"toc":6018},[5900,5905,5919,5925,5930,5936,5941,5978,5983,5991,5996,6009,6013],{"type":23,"tag":1171,"props":5901,"children":5902},{},[5903],{"type":1175,"value":5904},"To maintain an engaging relationship with your audience and increase conversions to your site, you need personalization. However, creating personalized experiences is technically challenging. Most personalization techniques involve dynamic rendering and an origin server that holds personalization rules for end-users—a slow approach that often negates the conversions gained through personalization.",{"type":23,"tag":1171,"props":5906,"children":5907},{},[5908,5910,5917],{"type":1175,"value":5909},"Among the many moving parts to consider, performance and scalability are tough nuts to crack. Fortunately, companies like Vercel, which recently released ",{"type":23,"tag":1209,"props":5911,"children":5914},{"href":5912,"rel":5913},"https://vercel.com/docs/concepts/functions/edge-middleware",[1213],[5915],{"type":1175,"value":5916},"Edge Middleware",{"type":1175,"value":5918},", make those problems readily solvable for developers. With Vercel in place, you only need to choose the right tech to personalize at the CDN edge without having to grapple with the one thing that slows things down: the origin server.",{"type":23,"tag":1480,"props":5920,"children":5922},{"id":5921},"the-benefits-of-edge",[5923],{"type":1175,"value":5924},"The benefits of edge",{"type":23,"tag":1171,"props":5926,"children":5927},{},[5928],{"type":1175,"value":5929},"Vercel offers familiar tech to developers: it’s all JavaScript based. With Edge Middleware, developers have the tools to make great things happen that they could not before. All the dynamic tasks that typically occur on an origin server can now happen near end-users, leading to faster page loads and automatic scaling out of the box. Not only that, Edge Middleware have user data that’s handy for personalization: country, region, and the device in use.",{"type":23,"tag":1480,"props":5931,"children":5933},{"id":5932},"the-personalization-process-at-the-edge",[5934],{"type":1175,"value":5935},"The personalization process at the edge",{"type":23,"tag":1171,"props":5937,"children":5938},{},[5939],{"type":1175,"value":5940},"By eliminating the origin server that is typically far away from end-users and bringing the dynamic rendering closer with Edge Middleware, you can personalize with high performance and in a decentralized manner. The only way to personalize without a central brain that knows all the personalization rules is to bring that brain into the software as a first-party tool. This is how that works:",{"type":23,"tag":2800,"props":5942,"children":5943},{},[5944,5958,5963,5968,5973],{"type":23,"tag":1298,"props":5945,"children":5946},{},[5947,5949,5956],{"type":1175,"value":5948},"Create and store the configuration rules, i.e., all the ",{"type":23,"tag":1209,"props":5950,"children":5953},{"href":5951,"rel":5952},"https://docs.uniform.app/capabilities/personalization",[1213],[5954],{"type":1175,"value":5955},"criteria for personalization",{"type":1175,"value":5957},", in the codebase as a manifest JSON file at build time.",{"type":23,"tag":1298,"props":5959,"children":5960},{},[5961],{"type":1175,"value":5962},"Store variations of the personalized content in the codebase at build time. Since a headless CMS is generally in use, those variations are tiny JSON models in the form of components.",{"type":23,"tag":1298,"props":5964,"children":5965},{},[5966],{"type":1175,"value":5967},"The Edge Middleware has a tracker that monitors user behaviors, which are signals that users give off by doing something on the site. The Edge Middleware awards a score to the personalization criteria configured in step 1. ",{"type":23,"tag":1298,"props":5969,"children":5970},{},[5971],{"type":1175,"value":5972},"The tracker automatically creates a profile of user actions and, based on the scores awarded against the various criteria, displays the right content.",{"type":23,"tag":1298,"props":5974,"children":5975},{},[5976],{"type":1175,"value":5977},"You can render the content via the Edge Middleware or in the front end at hydration time.",{"type":23,"tag":1171,"props":5979,"children":5980},{},[5981],{"type":1175,"value":5982},"The above approach to personalization is how Uniform Context works. Combining Edge Middleware rendering of personalized content with JavaScript hydration for subsequent page loads renders highly dynamic pages within ~50 milliseconds only. The approach is to initially render all the pages statically (SSG/Jamstack) and ensure that the Edge Middleware knows which parts it can personalize. While serving a page, the Edge Middleware checks if personalization is needed and, if so, fills the identified components with the correct personalized content.",{"type":23,"tag":1171,"props":5984,"children":5985},{},[5986],{"type":23,"tag":1234,"props":5987,"children":5990},{"alt":5988,"height":1237,"loading":1238,"provider":1239,"sizes":1240,"src":5989,"width":13},"uniform-vercel-edge-middleware","https://images.ctfassets.net/9ku1oyd4k3wo/4lvoQsz6WNCbJXIWQVQJSI/b36e13c87c86ca668fea6adf3da2b078/uniform-vercel-edge-middleware.svg",[],{"type":23,"tag":1171,"props":5992,"children":5993},{},[5994],{"type":1175,"value":5995},"Another benefit of the Vercel edge is that at the edge level, the CDN knows a lot about the end-users: their location, city, device, browser version, etc. Thus, Uniform Context can prepersonalize pages with Edge Middleware according to the location or device information from the Vercel CDN.",{"type":23,"tag":1171,"props":5997,"children":5998},{},[5999,6001,6008],{"type":1175,"value":6000},"Want to try that out for yourself? You’ll find all the details in Uniform’s ",{"type":23,"tag":1209,"props":6002,"children":6005},{"href":6003,"rel":6004},"https://docs.uniform.app/integrations/cdn/vercel/personalization",[1213],[6006],{"type":1175,"value":6007},"documentation on Vercel’s edge-side personalization",{"type":1175,"value":1218},{"type":23,"tag":1178,"props":6010,"children":6011},{"id":1383},[6012],{"type":1175,"value":1386},{"type":23,"tag":1171,"props":6014,"children":6015},{},[6016],{"type":1175,"value":6017},"To recap, by combining Uniform Context on Edge Middleware with statically rendered pages (SSG/Jamstack), you can create highly dynamic, personalized pages that load in less than a minute. In the past, Uniform offered dynamic personalization features through Vercel ESI. Edge Middleware now gives you a much more flexible and intuitive model for implementing personalization at scale. ",{"title":5,"searchDepth":34,"depth":34,"links":6019},[6020,6021,6022],{"id":5921,"depth":1764,"text":5924},{"id":5932,"depth":1764,"text":5935},{"id":1383,"depth":34,"text":1386},"content:4.writing:fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","4.writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md",{"_path":893,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":892,"description":6026,"id":6027,"slug":6028,"date":6029,"image":6030,"canonical_url":6031,"tags":6032,"collection_id":1167,"body":6034,"_type":36,"_id":6178,"_source":38,"_file":6179,"_extension":40},"Success in business can be attributed to many factors, notably team talent and efficacy of products...",1399554,"the-move-from-monolithic-to-composable-architectures","2023-03-13T20:42:55Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56u97go8avwyexrr01nx.png","https://uniform.dev/blogs/composable-architecture/composable-architectures-are-the-future-of-the-digital-sphere",[1831,2305,1789,6033],"monolith",{"type":20,"children":6035,"toc":6173},[6036,6041,6046,6051,6056,6061,6066,6072,6077,6082,6115,6128,6134,6139,6152,6158,6163,6168],{"type":23,"tag":1171,"props":6037,"children":6038},{},[6039],{"type":1175,"value":6040},"Success in business can be attributed to many factors, notably team talent and efficacy of products or services. What also counts in this digital age are immersive and performant online experiences. Realistically, delivering engaging experiences is a never-ending undertaking. To avoid lagging behind rivals, brands must do that time and again in all their interactions with consumers.",{"type":23,"tag":1171,"props":6042,"children":6043},{},[6044],{"type":1175,"value":6045},"Can you adapt and iterate as rapidly as necessary? Can you quickly respond to current trends and launch digital experiences without tech support? When it comes to digital capabilities and speed to market, technology makes all the difference. This post explains why the industry is moving from monolithic to composable architectures and how those two architectures can actually work together.",{"type":23,"tag":1171,"props":6047,"children":6048},{},[6049],{"type":1175,"value":6050},"##What are monolithic applications?",{"type":23,"tag":1171,"props":6052,"children":6053},{},[6054],{"type":1175,"value":6055},"Built as a single unit, monolithic applications (aka monolithic architectures) are all-in-one, self-contained suites with robust features. Known as legacy systems, monolithic applications occupy a long-standing place in today’s makeup of businesses as the easy way to acquire digital capabilities. You go through one purchase for all your business needs and sign a contract with one solution provider, who would make it all happen and support you along the way.",{"type":23,"tag":1171,"props":6057,"children":6058},{},[6059],{"type":1175,"value":6060},"Such a mono approach might not be the best for the long haul, however. In a free-market economy, monopolies are generally frowned upon because of the guardrails put up by those dominant players, who would enforce rules and regulations to stifle or eliminate competition altogether. What’s more, monopolies have no incentives for innovation or improvements in efficiency.",{"type":23,"tag":1171,"props":6062,"children":6063},{},[6064],{"type":1175,"value":6065},"That’s not a direct comparison to monolithic solutions in tech per se since competition does exist among tech solution providers. Rather, a brief assessment of monopolies is helpful context for why stand-alone architectures aren't ideal for businesses. If one vendor has all the say about the ways your tech stack is used and adapted, you are limited in many ways.",{"type":23,"tag":1178,"props":6067,"children":6069},{"id":6068},"why-are-monolithic-applications-not-the-way-forward",[6070],{"type":1175,"value":6071},"Why are monolithic applications not the way forward?",{"type":23,"tag":1171,"props":6073,"children":6074},{},[6075],{"type":1175,"value":6076},"A pro-con analysis shows real—or at least perceived—benefits in relying on a monolithic architecture for your tech stack. If your IT team is well versed in the vendor along with its code and operating system, an established ease of use exists. Furthermore, it feels simple to keep and manage everything in one place and to have, theoretically, one source of truth, with all the tools housed together under the purview of one provider. Not to mention that you have one all-knowing point of contact or support team to call on in case of issues.",{"type":23,"tag":1171,"props":6078,"children":6079},{},[6080],{"type":1175,"value":6081},"Nonetheless, given the future of business and the digital experiences consumers demand, the cons of monolithic applications far outweigh the pros in three key areas:",{"type":23,"tag":1294,"props":6083,"children":6084},{},[6085,6095,6105],{"type":23,"tag":1298,"props":6086,"children":6087},{},[6088,6093],{"type":23,"tag":1859,"props":6089,"children":6090},{},[6091],{"type":1175,"value":6092},"Customization",{"type":1175,"value":6094},". Limited is the ability to tailor monolithic applications to meet business needs. Also, even though those applications offer wide-reaching features, you might not ever use some of the features. And you’re at the whims of the monolith’s technology roadmap for innovation. For example, something you need to meet customer needs might not be available until the application’s next software update, potentially months away. In addition, in contrast to today’s fast market changes, upgrades can be time-consuming and slow with a need for developers to make changes or adaptations. With those modifications come complexities, third-party add-ons, or new applications that developers must painstakingly build themselves.",{"type":23,"tag":1298,"props":6096,"children":6097},{},[6098,6103],{"type":23,"tag":1859,"props":6099,"children":6100},{},[6101],{"type":1175,"value":6102},"Agility",{"type":1175,"value":6104},". Trends change and new opportunities emerge more rapidly than monolithic applications can keep up. Adaptability becomes a struggle, especially if you’re locked into the suite on contract.",{"type":23,"tag":1298,"props":6106,"children":6107},{},[6108,6113],{"type":23,"tag":1859,"props":6109,"children":6110},{},[6111],{"type":1175,"value":6112},"Scalability",{"type":1175,"value":6114},". Businesses that aspire to be fast-moving and competitive are hindered by monolithic technologies that are difficult to scale. Accordingly, growth is hampered because of the slow and heavy lift for developers to morph one monolithic architecture into an all-things-for-all-people stack.",{"type":23,"tag":1171,"props":6116,"children":6117},{},[6118,6120,6126],{"type":1175,"value":6119},"Another hurdle businesses face is adapting a monolithic application to be composable or as a “",{"type":23,"tag":1209,"props":6121,"children":6124},{"href":6122,"rel":6123},"https://dev.to/timbenniks/the-mach-monolith-2knd",[1213],[6125],{"type":1175,"value":2098},{"type":1175,"value":6127},".” Rather than replatforming or ditching an established monolithic architecture to build a new microservices-centric one, brands apply API-first and composable solutions to an existing framework by integrating a host of composable products. Doing so could seriously muddy the waters, however, creating a beast of an architecture that’s not composable, sustainable, or agile.",{"type":23,"tag":1178,"props":6129,"children":6131},{"id":6130},"how-can-monoliths-and-composable-work-together",[6132],{"type":1175,"value":6133},"How can monoliths and composable work together?",{"type":23,"tag":1171,"props":6135,"children":6136},{},[6137],{"type":1175,"value":6138},"Legacy monolithic architectures can, in fact, work with composable applications through digital experience composition platform (DXCP), which acts as composable’s opinionless foundation by doing the following:",{"type":23,"tag":1294,"props":6140,"children":6141},{},[6142,6147],{"type":23,"tag":1298,"props":6143,"children":6144},{},[6145],{"type":1175,"value":6146},"Offer the prebuilt system integrations and tools business users need, lightening the burden of innovation through new features.",{"type":23,"tag":1298,"props":6148,"children":6149},{},[6150],{"type":1175,"value":6151},"Enable teams to merge their legacy platform with a composable approach, orchestrating best-of-need tools and offering a user-friendly interface for developers and practitioners alike.",{"type":23,"tag":1178,"props":6153,"children":6155},{"id":6154},"how-does-dxcp-help-make-composable-mainstream",[6156],{"type":1175,"value":6157},"How does DXCP help make composable mainstream?",{"type":23,"tag":1171,"props":6159,"children":6160},{},[6161],{"type":1175,"value":6162},"Without doubt, monolithic architectures are no longer ideal for brands that are focused on creating digital experiences that drive impact and conversions. Composable architectures give control of the experience-creation process to the brands responsible for the end results, instead of one tech vendor.",{"type":23,"tag":1171,"props":6164,"children":6165},{},[6166],{"type":1175,"value":6167},"Despite the promise of future-ready composable stacks, building them can be a slow and expensive process, with weeks of custom glue code needed to integrate the multiple services. They are often also incredibly frustrating for marketing teams, content writers, graphic designers, and other business users, as previously simple tasks require multiple tools and developer support.",{"type":23,"tag":1171,"props":6169,"children":6170},{},[6171],{"type":1175,"value":6172},"This is where DXCP and companies like Uniform enter the picture. With rapid integration tools that dramatically speed system build and maintenance and powerful no-code interfaces for marketers and other business users to create engrossing experiences in a single, integrated environment using every tool they need.",{"title":5,"searchDepth":34,"depth":34,"links":6174},[6175,6176,6177],{"id":6068,"depth":34,"text":6071},{"id":6130,"depth":34,"text":6133},{"id":6154,"depth":34,"text":6157},"content:4.writing:the-move-from-monolithic-to-composable-architectures.md","4.writing/the-move-from-monolithic-to-composable-architectures.md",{"_path":860,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":859,"description":6181,"id":6182,"slug":6183,"date":6184,"image":6185,"canonical_url":6186,"tags":6187,"collection_id":1167,"body":6188,"_type":36,"_id":6335,"_source":38,"_file":6336,"_extension":40},"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are...",1399552,"mach-versus-monolithic-suites","2023-03-13T20:37:36Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfwuyqdwlw3du1k96z1l.png","https://uniform.dev/blogs/composable-architecture/mach-versus-monolithic-suites#mach-as-an-evolution-of-monoliths",[1831,1789,2408,2305],{"type":20,"children":6189,"toc":6331},[6190,6195,6200,6206,6211,6250,6255,6260,6266,6271,6276,6281,6286,6291,6296,6301,6306,6311,6316,6321,6326],{"type":23,"tag":1171,"props":6191,"children":6192},{},[6193],{"type":1175,"value":6194},"Today, with consumers fast becoming digitally advanced, companies realize that old technologies are no longer viable and that companies must evolve continually to keep up with consumer expectations. However, making technology decisions can be difficult, confusing, and stressful, especially since you might have to live with them for years. You also run the risk of being locked into products that cannot keep up with your organization's changing needs or, even worse, products that were never a good fit in the first place. No wonder that when an architecture emerges that promises to reduce that risk, people pay attention.",{"type":23,"tag":1171,"props":6196,"children":6197},{},[6198],{"type":1175,"value":6199},"Reality is, monolithic suites are no longer the safest choice. In their quest to stay agile, nimble, customer-centric, and future-proof, businesses must find more effective ways for transforming digital experiences and are turning to the increasingly popular MACH architecture.",{"type":23,"tag":1178,"props":6201,"children":6203},{"id":6202},"mach-architecture-explained",[6204],{"type":1175,"value":6205},"MACH architecture explained",{"type":23,"tag":1171,"props":6207,"children":6208},{},[6209],{"type":1175,"value":6210},"MACH stands for microservices, API-first, cloud-based, and headless, comprising decoupled, modular, self-contained, and independent components that work together as one, as explained below:",{"type":23,"tag":1294,"props":6212,"children":6213},{},[6214,6223,6232,6241],{"type":23,"tag":1298,"props":6215,"children":6216},{},[6217,6221],{"type":23,"tag":1859,"props":6218,"children":6219},{},[6220],{"type":1175,"value":1863},{"type":1175,"value":6222},": These are individual business capabilities that are independently built, deployed, and managed.",{"type":23,"tag":1298,"props":6224,"children":6225},{},[6226,6230],{"type":23,"tag":1859,"props":6227,"children":6228},{},[6229],{"type":1175,"value":1873},{"type":1175,"value":6231},": APIs function as the pipeline through which applications interact, resulting in a microservices-based architecture that activates data exchange among the services.",{"type":23,"tag":1298,"props":6233,"children":6234},{},[6235,6239],{"type":23,"tag":1859,"props":6236,"children":6237},{},[6238],{"type":1175,"value":1883},{"type":1175,"value":6240},": Since cloud computing offers scalability and adaptability, cloud-native applications foster innovation, accelerating the creation and optimization of microservices and, in turn, the process of project initiation through delivery.",{"type":23,"tag":1298,"props":6242,"children":6243},{},[6244,6248],{"type":23,"tag":1859,"props":6245,"children":6246},{},[6247],{"type":1175,"value":1893},{"type":1175,"value":6249},": This approach of decoupling the front-end user experience from the back-end logic spells complete freedom in building omnichannel digital experiences.",{"type":23,"tag":1171,"props":6251,"children":6252},{},[6253],{"type":1175,"value":6254},"Together, those four components promise to reduce the risk of product lock-in and enable enterprises to adopt technologies that best meet their needs in a timely manner. As a response to the monolithic architectures that have long dominated enterprise applications, MACH addresses the limitations of legacy technologies while staying flexible for businesses to adapt to changes.",{"type":23,"tag":1171,"props":6256,"children":6257},{},[6258],{"type":1175,"value":6259},"Understanding MACH requires coming to grips with its two foundational concepts, integration and composability, as well as the advantages and disadvantages of its monolithic predecessor.",{"type":23,"tag":1178,"props":6261,"children":6263},{"id":6262},"mach-as-an-evolution-of-monoliths",[6264],{"type":1175,"value":6265},"MACH as an evolution of monoliths",{"type":23,"tag":1171,"props":6267,"children":6268},{},[6269],{"type":1175,"value":6270},"Though costly, monoliths are convenient because, being from a single vendor, their components are likely to work well together. Additionally, since most monolithic vendors are well-established market players, they offer all the features required for building and maintaining digital experiences and serve as a single contact for businesses to call on in case of issues.",{"type":23,"tag":1171,"props":6272,"children":6273},{},[6274],{"type":1175,"value":6275},"Encompassing its services in one interdependent package, MACH evolves from a monolithic, tightly coupled system. Those services, frequently called a “best-of-need” stack, comprise robust APIs for facilitating data exchange among services along with the best tools for experience creation without incurring expenses on unnecessary features. Another benefit is that businesses need not depend on a single vendor’s roadmap for new channels or technologies.",{"type":23,"tag":1171,"props":6277,"children":6278},{},[6279],{"type":1175,"value":6280},"However, businesses might find it difficult to evaluate the array of MACH vendors and tools and make the right decisions. Also, given MACH’s multivendor setup, teams might need to perform their tasks with several tools instead of one, as in the case of a monolithic system. Another major challenge is that integration of the tools often requires heavy custom coding.",{"type":23,"tag":1171,"props":6282,"children":6283},{},[6284],{"type":1175,"value":6285},"To decide which system, MACH or monolithic, to opt for, businesses must find out if the advantages are real and whether the advantages surpass the disadvantages.",{"type":23,"tag":1171,"props":6287,"children":6288},{},[6289],{"type":1175,"value":6290},"##Suites versus MACH",{"type":23,"tag":1171,"props":6292,"children":6293},{},[6294],{"type":1175,"value":6295},"The difference between a suite and MACH comes down to choice. In the case of a suite, the vendor selects the products for you. With MACH, you pick the products you want from the vendors you prefer.",{"type":23,"tag":1171,"props":6297,"children":6298},{},[6299],{"type":1175,"value":6300},"Back when suites were popular, building a stack was just not practical for most businesses. Nowadays, vendors are building products with the expectation that companies will integrate them with other products. Moreover, delivering those products through a cloud-based infrastructure means that businesses need not support multiple products built with different technologies. That’s the world enabled by MACH.",{"type":23,"tag":1171,"props":6302,"children":6303},{},[6304],{"type":1175,"value":6305},"For businesses that aim at building a technology stack of products that meet their unique requirements, MACH provides the foundational architecture. Therefore, if you buy a CMS, a personalization tool, and an enterprise module built on MACH principles, you can seamlessly and consistently connect them all.",{"type":23,"tag":1171,"props":6307,"children":6308},{},[6309],{"type":1175,"value":6310},"Still, the suite approach continues to predominate, and businesses often adopt it even while designing a modern, composed architecture. That practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures.",{"type":23,"tag":1171,"props":6312,"children":6313},{},[6314],{"type":1175,"value":6315},"##Uniform as the infrastructure of composable systems",{"type":23,"tag":1171,"props":6317,"children":6318},{},[6319],{"type":1175,"value":6320},"Uniform offers a fast track to composability by handling all the difficult and time-consuming integration tasks, personalization settings, etc., so that you can focus on critical undertakings like web design and content creation.",{"type":23,"tag":1171,"props":6322,"children":6323},{},[6324],{"type":1175,"value":6325},"Remarkably, Uniform offers composability right out of the box. You get to select the components that you want in your stack, and we handle all the connections and orchestration. You need not build this complex but valuable integration yourself.",{"type":23,"tag":1171,"props":6327,"children":6328},{},[6329],{"type":1175,"value":6330},"To recap, building composable systems on a MACH architecture is a modern, sustainable approach that resolves the difficult problems organizations have accepted as a natural part of working with enterprise software. With composability, you can build stacks with tools of your choice. The MACH architecture makes all that happen in a sustainable, scalable manner, and Uniform provides the infrastructure for orchestration across your MACH platforms.",{"title":5,"searchDepth":34,"depth":34,"links":6332},[6333,6334],{"id":6202,"depth":34,"text":6205},{"id":6262,"depth":34,"text":6265},"content:4.writing:mach-versus-monolithic-suites.md","4.writing/mach-versus-monolithic-suites.md",{"_path":890,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":889,"description":6338,"id":6339,"slug":6340,"date":6341,"image":6342,"canonical_url":5308,"tags":6343,"collection_id":1167,"body":6344,"_type":36,"_id":6609,"_source":38,"_file":6610,"_extension":40},"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take...",1399535,"the-mach-monolith","2023-03-13T20:20:45Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdj396fv4iyh8zce4rsg.png",[2408,1789,2305,4863],{"type":20,"children":6345,"toc":6602},[6346,6351,6356,6368,6373,6379,6384,6389,6394,6400,6414,6419,6424,6447,6452,6475,6480,6485,6491,6496,6501,6506,6510,6515,6523,6528,6533,6538,6543,6556,6562,6567,6590],{"type":23,"tag":1171,"props":6347,"children":6348},{},[6349],{"type":1175,"value":6350},"For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take action. Now that everybody is jumping on the bandwagon, interesting developments have surfaced: Traditional monoliths have adopted new messaging with the terms “composable” and “headless” in it, and headless systems are integrating more monolithic-like features. Meanwhile, at a loss as to what to do to ensure that their architecture is scalable, secure, and future-proof, brands make decisions out of sheer FOMO. All that has created the beast I call the MACH Monolith.",{"type":23,"tag":1171,"props":6352,"children":6353},{},[6354],{"type":1175,"value":6355},"The MACH approach for building digital architecture is the way to go, and it can be an amazing journey. However, you must apply the MACH principles correctly. This article explains what that means.",{"type":23,"tag":1171,"props":6357,"children":6358},{},[6359,6361,6366],{"type":1175,"value":6360},"We can agree on one thing: web development is complex, hence the word ",{"type":23,"tag":1859,"props":6362,"children":6363},{},[6364],{"type":1175,"value":6365},"development",{"type":1175,"value":6367},". For years, software vendors tried to simplify the job by creating suites with all the features businesses would need, from front-end accelerators to editing capabilities for rich content. Such an approach of having one platform to tackle all digital-business challenges worked pretty well.",{"type":23,"tag":1171,"props":6369,"children":6370},{},[6371],{"type":1175,"value":6372},"However, drawbacks do exist. For one thing, businesses must buy into how the suite is developed as a product. Additionally, they’re stuck with vendor lock-in and dependent on the suite’s roadmap, which holds back innovation and causes developers to break out of the system with customization. When updates are necessary to the underlying monolith, the architecture becomes flawed.",{"type":23,"tag":1178,"props":6374,"children":6376},{"id":6375},"a-paradigm-shift",[6377],{"type":1175,"value":6378},"A paradigm shift",{"type":23,"tag":1171,"props":6380,"children":6381},{},[6382],{"type":1175,"value":6383},"The general mindset in web development is that even though everything is headless and API-first, we are still operating in the “suite” paradigm. Even the technical people who tried to break away from the monolith approach in the recent past still have that frame of mind. Paradigm shifts take time, and we are currently in the middle of one.",{"type":23,"tag":1171,"props":6385,"children":6386},{},[6387],{"type":1175,"value":6388},"In today’s composable world, where architectures are crafted with best-of-breed tools, we must recognize the fact that no software can take the sting out of the challenges involved. Reality is, no full-chain covering pieces of software exist in the SaaS world even though that’s a bitter pill to swallow because that’s what we were used to with suites.",{"type":23,"tag":1171,"props":6390,"children":6391},{},[6392],{"type":1175,"value":6393},"Hence, the suite approach continues to predominate, and people often tend to adopt that even while designing a modern composed architecture. As reflected across disciplines, such a practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures. Let’s talk about how the MACH monolith surfaced.",{"type":23,"tag":1178,"props":6395,"children":6397},{"id":6396},"monolith-like-features-from-headless-first-products",[6398],{"type":1175,"value":6399},"Monolith-like features from headless-first products",{"type":23,"tag":1171,"props":6401,"children":6402},{},[6403,6405,6412],{"type":1175,"value":6404},"Because only techies like the headless space, the market doesn’t seem ready to fully embrace API-first designs and composable architectures. After all, APIs are techspeak, and since architectures are created with a tech hat on, the experience is unfriendly to practitioners like content editors and marketers. For details on this phenomenon, see this ",{"type":23,"tag":1209,"props":6406,"children":6409},{"href":6407,"rel":6408},"https://uniform.dev/blogs/digital-experience-composition-dxc/tame-the-martech-chaos-with-dxc-and-mach",[1213],[6410],{"type":1175,"value":6411},"article",{"type":1175,"value":6413}," on orchestrating MACH architectures.",{"type":23,"tag":1171,"props":6415,"children":6416},{},[6417],{"type":1175,"value":6418},"Also, because headless systems are built by and for techies, API-first products are ahead of their time with no connecting mechanism for the composing elements to benefit all stakeholders. A way to resolve that is described later in this article.",{"type":23,"tag":1171,"props":6420,"children":6421},{},[6422],{"type":1175,"value":6423},"To avoid losing market share, headless systems must have the following features to become more usable to practitioners:",{"type":23,"tag":1294,"props":6425,"children":6426},{},[6427,6432,6437,6442],{"type":23,"tag":1298,"props":6428,"children":6429},{},[6430],{"type":1175,"value":6431},"Integration fields into the CMS and other headless systems, e.g., search, DAM, PIM, commerce, CRM, and personalization, to unify the editing experience and offer a singular API for developers.",{"type":23,"tag":1298,"props":6433,"children":6434},{},[6435],{"type":1175,"value":6436},"An ability to preview functionalities, tightly coupling the front end to the preview SDK of the CMS.",{"type":23,"tag":1298,"props":6438,"children":6439},{},[6440],{"type":1175,"value":6441},"An ability to compose pages inside the CMS data model to add contextualized data for compositions to the clean data model of the CMS content.",{"type":23,"tag":1298,"props":6443,"children":6444},{},[6445],{"type":1175,"value":6446},"Routing and sitemap-related content mapping in the CMS that gives practitioners a clear overview of the system.",{"type":23,"tag":1171,"props":6448,"children":6449},{},[6450],{"type":1175,"value":6451},"All those features put the CMS in the center of the universe of digital architecture. Questions come to mind, however:",{"type":23,"tag":1294,"props":6453,"children":6454},{},[6455,6460,6465,6470],{"type":23,"tag":1298,"props":6456,"children":6457},{},[6458],{"type":1175,"value":6459},"What if you have multiple CMS systems?",{"type":23,"tag":1298,"props":6461,"children":6462},{},[6463],{"type":1175,"value":6464},"What if you want to switch your commerce engine but it’s tightly coupled to the CMS?",{"type":23,"tag":1298,"props":6466,"children":6467},{},[6468],{"type":1175,"value":6469},"What if you'd like to switch to another CMS?",{"type":23,"tag":1298,"props":6471,"children":6472},{},[6473],{"type":1175,"value":6474},"What if you must add another channel like a TV app, yet the data models with desktop presentational context cannot accommodate that?",{"type":23,"tag":1171,"props":6476,"children":6477},{},[6478],{"type":1175,"value":6479},"The answers to those questions result in a load of pain for developers, who often must wrestle with a system replatform every few years. With things becoming too interconnected and concerns not separated, the ultimate choice is usually to discard the old architecture and start anew. Doing that gets very expensive very fast.",{"type":23,"tag":1171,"props":6481,"children":6482},{},[6483],{"type":1175,"value":6484},"Surprisingly, since the paradigm shift is as yet incomplete, the original, highly innovative API-first companies are now adding other semi headless products to their portfolio so as to stay relevant in a slightly lagging market. Consequently, software vendors must serve the mid-market tier of businesses with accelerated product launches and ease of use. Otherwise, website-in-a-box systems like WordPress or Shopify will outperform them.",{"type":23,"tag":1178,"props":6486,"children":6488},{"id":6487},"hybrid-headless-and-pretend-composability-from-suites",[6489],{"type":1175,"value":6490},"Hybrid headless and pretend composability from suites",{"type":23,"tag":1171,"props":6492,"children":6493},{},[6494],{"type":1175,"value":6495},"To stay relevant in the interim, traditional suite vendors are implementing a form of hybrid headless products. You can use their system in a headless, API-first manner but must stick to their way of operations. The fact that you need specialized knowledge of the system to work with it goes against the API-first proposition of total developer freedom. Still, you now have an API and, therefore, a headless system.",{"type":23,"tag":1171,"props":6497,"children":6498},{},[6499],{"type":1175,"value":6500},"Suite vendors are splitting up the suite or buying additional service providers and selling their products as composable pieces to their platform. That’s not real composability because you’re not free to choose your best-of-breed tools and can only select from the vendor’s pool of services, which are generally tightly coupled to the suite's core and, therefore, challenges filled. Being interconnected and indivisible is typical of monolithic software, not composable software.",{"type":23,"tag":1171,"props":6502,"children":6503},{},[6504],{"type":1175,"value":6505},"I call that approach compostable architecture.",{"type":23,"tag":1178,"props":6507,"children":6508},{"id":6340},[6509],{"type":1175,"value":889},{"type":23,"tag":1171,"props":6511,"children":6512},{},[6513],{"type":1175,"value":6514},"We’re seeing a couple of patterns over and over again.",{"type":23,"tag":1171,"props":6516,"children":6517},{},[6518],{"type":23,"tag":1234,"props":6519,"children":6522},{"alt":6520,"loading":1238,"provider":1239,"sizes":1240,"src":6521,"width":13},"MACH Monolith","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fp3gnzgd3unj8tbvru3c.png",[],{"type":23,"tag":1171,"props":6524,"children":6525},{},[6526],{"type":1175,"value":6527},"If the separation of concerns is not respected, software vendors create an indivisible and interconnected bundle of best-of-breed tools—a complicated scenario that makes it tough to discern what’s connected to what, not to mention that you have created your very own vendor lock-in. Things work in only one way, and only the original build team understands how they work. Onboarding of new team members becomes complicated and burdensome, leading to frustration among developers.",{"type":23,"tag":1171,"props":6529,"children":6530},{},[6531],{"type":1175,"value":6532},"Separately, contextual composition data is often stored in the CMS and mixed with the clean data model you started with, such as adding a checkbox to spotlight an item on a page, which is a design decision for the item in a specific context. What if that context changes when the item is shown in a different place on the website? Composing pages with specific user contexts is problematic in a CMS, invariably generating dirty data over time. Instead, page composition in the context of a user must occur in the front end or a composition platform.",{"type":23,"tag":1171,"props":6534,"children":6535},{},[6536],{"type":1175,"value":6537},"Another approach is not to fully interconnect the systems. That’s a great start, but where does that connection usually occur? In the front end. As a result, the front-end application contains all the knowledge of the link to all the systems that compose your website, generating a considerable risk for maintenance and security, let alone that it’s not future-proof. To be effective, a front end must be \"stupid\" and \"stateless\" for updates.",{"type":23,"tag":1171,"props":6539,"children":6540},{},[6541],{"type":1175,"value":6542},"Besides, business problems also exist:",{"type":23,"tag":1294,"props":6544,"children":6545},{},[6546,6551],{"type":23,"tag":1298,"props":6547,"children":6548},{},[6549],{"type":1175,"value":6550},"What if the architecture does not behave the way it’s supposed to? Determining where it went wrong is complicated.",{"type":23,"tag":1298,"props":6552,"children":6553},{},[6554],{"type":1175,"value":6555},"Who do you seek help after pinpointing the issue? The best-of-breed tool, your team who made architecture decisions, or the agency that built the system? Businesses with a failing architecture that can’t point the liability finger eventually replatform and start the process from scratch. The MACH monolith thus ends up being much more inferior to the traditional suite with only one vendor.",{"type":23,"tag":1178,"props":6557,"children":6559},{"id":6558},"the-solution",[6560],{"type":1175,"value":6561},"The solution",{"type":23,"tag":1171,"props":6563,"children":6564},{},[6565],{"type":1175,"value":6566},"What businesses need is an opinionless platform that does the following:",{"type":23,"tag":1294,"props":6568,"children":6569},{},[6570,6575,6580,6585],{"type":23,"tag":1298,"props":6571,"children":6572},{},[6573],{"type":1175,"value":6574},"Orchestrates best-of-breed tools.",{"type":23,"tag":1298,"props":6576,"children":6577},{},[6578],{"type":1175,"value":6579},"Offers a user-friendly interface to developers and practitioners alike.",{"type":23,"tag":1298,"props":6581,"children":6582},{},[6583],{"type":1175,"value":6584},"Offers an entirely tech-agnostic SDK.",{"type":23,"tag":1298,"props":6586,"children":6587},{},[6588],{"type":1175,"value":6589},"Offers no-code tools for practitioners to work with in such a way that they do not notice they are composting pages with different headless sources.",{"type":23,"tag":1171,"props":6591,"children":6592},{},[6593,6595,6600],{"type":1175,"value":6594},"Even though the paradigm shift to truly composable architectures is still ongoing, the platform described above already exists. Enter ",{"type":23,"tag":1209,"props":6596,"children":6598},{"href":2316,"rel":6597},[1213],[6599],{"type":1175,"value":663},{"type":1175,"value":6601},", on which developers and marketers have complete control of their digital-experience stack, and I’m proud to run its developer relations team. Uniform is slated to solve many issues developers, architects, and practitioners will face in the coming years.",{"title":5,"searchDepth":34,"depth":34,"links":6603},[6604,6605,6606,6607,6608],{"id":6375,"depth":34,"text":6378},{"id":6396,"depth":34,"text":6399},{"id":6487,"depth":34,"text":6490},{"id":6340,"depth":34,"text":889},{"id":6558,"depth":34,"text":6561},"content:4.writing:the-mach-monolith.md","4.writing/the-mach-monolith.md",{"_path":881,"_dir":1159,"_draft":6,"_partial":6,"_locale":5,"title":880,"description":6612,"id":6613,"slug":6614,"date":6615,"image":6616,"canonical_url":6617,"tags":6618,"collection_id":1167,"body":6621,"_type":36,"_id":6947,"_source":38,"_file":6948,"_extension":40},"This post is either for developers who want an “at-scale” overview of modern architecture or for...",998786,"the-future-of-jamstack-is-composable","2022-02-23T13:04:08Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso0lvl9w5rea6i7sfp6u.jpeg","https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g",[6619,2408,1789,6620],"jamstack","orchestration",{"type":20,"children":6622,"toc":6938},[6623,6631,6636,6642,6647,6660,6665,6671,6676,6684,6689,6697,6702,6707,6712,6720,6726,6731,6759,6769,6774,6780,6785,6793,6798,6841,6846,6854,6860,6865,6870,6893,6898,6911,6916,6924,6928,6933],{"type":23,"tag":1200,"props":6624,"children":6625},{},[6626],{"type":23,"tag":1171,"props":6627,"children":6628},{},[6629],{"type":1175,"value":6630},"This post is either for developers who want an “at-scale” overview of modern architecture or for technical decision-makers looking at a great way to build a digital pipeline in this new composable world.",{"type":23,"tag":1171,"props":6632,"children":6633},{},[6634],{"type":1175,"value":6635},"In modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire.",{"type":23,"tag":1178,"props":6637,"children":6639},{"id":6638},"in-this-article",[6640],{"type":1175,"value":6641},"In this article",{"type":23,"tag":1171,"props":6643,"children":6644},{},[6645],{"type":1175,"value":6646},"You will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech.",{"type":23,"tag":2800,"props":6648,"children":6649},{},[6650,6655],{"type":23,"tag":1298,"props":6651,"children":6652},{},[6653],{"type":1175,"value":6654},"Use the Jamstack with your favourite framework and host on your favourite CDN.",{"type":23,"tag":1298,"props":6656,"children":6657},{},[6658],{"type":1175,"value":6659},"Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers.",{"type":23,"tag":1171,"props":6661,"children":6662},{},[6663],{"type":1175,"value":6664},"Combining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future.",{"type":23,"tag":1178,"props":6666,"children":6668},{"id":6667},"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures",[6669],{"type":1175,"value":6670},"The Jamstack: why it sits front and centre in modern architectures",{"type":23,"tag":1171,"props":6672,"children":6673},{},[6674],{"type":1175,"value":6675},"Sites built with the Jamstack approach are a combination of static files generated by the CI/CD pipeline of your choice. Most dynamic stuff happens in the generation step, where the codebase reaches out to APIs and services to render all pages statically.",{"type":23,"tag":1171,"props":6677,"children":6678},{},[6679],{"type":23,"tag":1234,"props":6680,"children":6683},{"alt":6681,"loading":1238,"provider":1239,"sizes":1240,"src":6682,"width":13},"Jamstack: build time vs runtime","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpp5kpu4k3wxs91wne0b.png",[],{"type":23,"tag":1171,"props":6685,"children":6686},{},[6687],{"type":1175,"value":6688},"The performance gains alone justify this approach. There is no runtime page generation, and the app doesn’t have to connect to an origin server to figure out what content to serve. If you want to scale up for Black Friday, just put the static files in more places on the CDN edge, and all is well. Next to the performance gains, you also have a much more secure system. If your architecture has an origin server with all the knowledge of the system, that is a weak point for security.",{"type":23,"tag":1171,"props":6690,"children":6691},{},[6692],{"type":23,"tag":1234,"props":6693,"children":6696},{"alt":6694,"loading":1238,"provider":1239,"sizes":1240,"src":6695,"width":13},"Traditional web vs Jamstack","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp86io6058n938u4dw70.png",[],{"type":23,"tag":1171,"props":6698,"children":6699},{},[6700],{"type":1175,"value":6701},"You can add dynamic data as well. CDN providers have built the ability to run code on the edge, implementing serverless functions and edge workers.",{"type":23,"tag":1171,"props":6703,"children":6704},{},[6705],{"type":1175,"value":6706},"A serverless function is a service that lets you run code without provisioning or managing servers. Serverless functions tend to be simple and do not have a state. They require an input, and they will give an output. After use, they will not stay up unless you request them to do that. The benefit is that the cost is low and that these functions are not running if not needed - consuming less energy. You can use them when compiling your Jamstack site, but they also work well at runtime.",{"type":23,"tag":1171,"props":6708,"children":6709},{},[6710],{"type":1175,"value":6711},"Edge workers (as Cloudflare calls them) are pieces of code that live on the CDN edge close to the user and execute when a user visits a URL. This is ideal for reading cookie values and changing the stream of HTML that the CDN renders for that page. With this approach, you can dynamically manipulate what the user sees in their context while still serving a static page initially created by your Jamstack site. This approach is excellent for rendering personalised content based on user actions without the need for JavaScript hydration or an origin server.",{"type":23,"tag":1171,"props":6713,"children":6714},{},[6715],{"type":23,"tag":1234,"props":6716,"children":6719},{"alt":6717,"loading":1238,"provider":1239,"sizes":1240,"src":6718,"width":13},"Add dynamic parts to the Jamstack with serverless and edge compute","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfn819631e7mvnau8mwl.png",[],{"type":23,"tag":1178,"props":6721,"children":6723},{"id":6722},"the-orchestration-how-to-cable-manage-your-architecture",[6724],{"type":1175,"value":6725},"The orchestration: how to cable manage your architecture",{"type":23,"tag":1171,"props":6727,"children":6728},{},[6729],{"type":1175,"value":6730},"How you connect things up before the site is rendered is vital for the platform you are building. There are many technical and organisational problems to address when you scale a composed architecture to big organisations.",{"type":23,"tag":1294,"props":6732,"children":6733},{},[6734,6739,6744,6749,6754],{"type":23,"tag":1298,"props":6735,"children":6736},{},[6737],{"type":1175,"value":6738},"Choices, choices, choices: CMS, Commerce, CDN, Marketing clouds, DAM, Personalization, A/B testing, CRM, etc.",{"type":23,"tag":1298,"props":6740,"children":6741},{},[6742],{"type":1175,"value":6743},"Integration is complex, and orchestration is hard to build.",{"type":23,"tag":1298,"props":6745,"children":6746},{},[6747],{"type":1175,"value":6748},"Often there is a lack of intuitive tools for non-devs to build and manage experiences.",{"type":23,"tag":1298,"props":6750,"children":6751},{},[6752],{"type":1175,"value":6753},"Early implementation decisions can limit the ability to change and evolve.",{"type":23,"tag":1298,"props":6755,"children":6756},{},[6757],{"type":1175,"value":6758},"Wrong choices can create developer bottlenecks and hinder time to market and agility.",{"type":23,"tag":1171,"props":6760,"children":6761},{},[6762,6764],{"type":1175,"value":6763},"The bigger the organisation, the more critical this statement becomes: ",{"type":23,"tag":1632,"props":6765,"children":6766},{},[6767],{"type":1175,"value":6768},"To achieve true value, you need to orchestrate technology, people, and processes.",{"type":23,"tag":1171,"props":6770,"children":6771},{},[6772],{"type":1175,"value":6773},"The digital pipeline can be stalled at many places. You’ll need a platform to help you orchestrate the whole architecture into a usable system for all stakeholders. A cohesive system has the ability for multiple systems to work together as one - for each system to have an awareness of what the other systems are doing. This same story goes for the practitioners in the system. From developers to content editors and from marketers to data analysts. All these people play a vital role in your online success.",{"type":23,"tag":1480,"props":6775,"children":6777},{"id":6776},"the-platform-we-need",[6778],{"type":1175,"value":6779},"The platform we need",{"type":23,"tag":1171,"props":6781,"children":6782},{},[6783],{"type":1175,"value":6784},"The platform we need has to be “opinionless” and technology agnostic. Its primary goal is to cater to all stakeholders and prevent re-platforming.",{"type":23,"tag":1200,"props":6786,"children":6787},{},[6788],{"type":23,"tag":1171,"props":6789,"children":6790},{},[6791],{"type":1175,"value":6792},"Services integrators or agencies often use the “re-platform” model. Out with the old monolith and in with the new monolith. This way, they can sell their business transformation story and do a big bang release. The drawback here is that re-platforming takes a long time and is costly. It is also the complete opposite of an agile approach to a project. Agencies tend to be \"platform partners\" and sell in a platform first solution rather than a specific value solution to a brand. This is logical as they can hire specialists that retain their value project after project. However, modern architectures demand making choices for the business's needs, not what the agency or software vendors want to sell in. Square pegs and round holes could work for a while until it’s too hard to manage, and then you re-platform. Again…",{"type":23,"tag":1171,"props":6794,"children":6795},{},[6796],{"type":1175,"value":6797},"The orchestration platform should support end-to-end delivery of digital products:",{"type":23,"tag":1294,"props":6799,"children":6800},{},[6801,6811,6821,6831],{"type":23,"tag":1298,"props":6802,"children":6803},{},[6804,6809],{"type":23,"tag":1859,"props":6805,"children":6806},{},[6807],{"type":1175,"value":6808},"Development",{"type":1175,"value":6810},": developers build components that incorporate content from multiple sources without building custom integrations.",{"type":23,"tag":1298,"props":6812,"children":6813},{},[6814,6819],{"type":23,"tag":1859,"props":6815,"children":6816},{},[6817],{"type":1175,"value":6818},"Authoring",{"type":1175,"value":6820},": practitioners build personalised digital experiences using no-code tools, including instant preview without involving developers.",{"type":23,"tag":1298,"props":6822,"children":6823},{},[6824,6829],{"type":23,"tag":1859,"props":6825,"children":6826},{},[6827],{"type":1175,"value":6828},"Deployment",{"type":1175,"value":6830},": developer and practitioner activities automatically trigger deployments to your CDN of choice to ensure digital experiences are always current.",{"type":23,"tag":1298,"props":6832,"children":6833},{},[6834,6839],{"type":23,"tag":1859,"props":6835,"children":6836},{},[6837],{"type":1175,"value":6838},"Delivery",{"type":1175,"value":6840},": Personalization and experimentation is delivered from the edge for the fastest possible performance.",{"type":23,"tag":1171,"props":6842,"children":6843},{},[6844],{"type":1175,"value":6845},"The key is the “power of choice” for the tech stack, hosting / CDN, data fetching and what integrations are used. The point is that you as a technical stakeholder can choose when to add, remove or scale something without being held back by the system. There is no vendor lock-in, roadmap constraints, and re-platforming (swap an integration, migrate the data, and change some data mapping code).",{"type":23,"tag":1171,"props":6847,"children":6848},{},[6849],{"type":23,"tag":1234,"props":6850,"children":6853},{"alt":6851,"loading":1238,"provider":1239,"sizes":1240,"src":6852,"width":13},"What a composable orchestration platform looks like","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvs9u5inctpg4f7iiu9h.png",[],{"type":23,"tag":1480,"props":6855,"children":6857},{"id":6856},"data-fetching-approaches",[6858],{"type":1175,"value":6859},"Data fetching approaches",{"type":23,"tag":1171,"props":6861,"children":6862},{},[6863],{"type":1175,"value":6864},"Flexibility in how data is fetched from different sources is vital for the longevity of an orchestration platform. The platform SDK should not apply any opinion on how data is fetched. It offers an SDK that helps developers fetch it the way they want.",{"type":23,"tag":1171,"props":6866,"children":6867},{},[6868],{"type":1175,"value":6869},"It’s essential that page compositions only point to data sources and that the platform itself does not store anything except for the identification of the component it references. The benefits are:",{"type":23,"tag":2800,"props":6871,"children":6872},{},[6873,6878,6883,6888],{"type":23,"tag":1298,"props":6874,"children":6875},{},[6876],{"type":1175,"value":6877},"the platform doesn’t store potentially sensitive data;",{"type":23,"tag":1298,"props":6879,"children":6880},{},[6881],{"type":1175,"value":6882},"the platform doesn’t duplicate content;",{"type":23,"tag":1298,"props":6884,"children":6885},{},[6886],{"type":1175,"value":6887},"the platform doesn’t have to know when data changes in the external source;",{"type":23,"tag":1298,"props":6889,"children":6890},{},[6891],{"type":1175,"value":6892},"The platform does not have to serve the data and ingest the SLA provided by the source data it delivers.",{"type":23,"tag":1171,"props":6894,"children":6895},{},[6896],{"type":1175,"value":6897},"It’s up to the developer to use the platform SDK to retrieve the compositional data and use platform provided helper tools to query the different API endpoints. The beauty of this approach is that the SDK and how the data is fetched can live anywhere. From the local codebase to an external middleware layer or a serverless function. There are some benefits to positioning the data fetching outside of your codebase:",{"type":23,"tag":2800,"props":6899,"children":6900},{},[6901,6906],{"type":23,"tag":1298,"props":6902,"children":6903},{},[6904],{"type":1175,"value":6905},"You can hire separate developers who only focus on the API and the data mapping to the desired format. This separates concerns between disciplines, and back-end developers now have a place where they can feel at home.",{"type":23,"tag":1298,"props":6907,"children":6908},{},[6909],{"type":1175,"value":6910},"The front-end application doesn’t need to know what external sources are queried. It queries one endpoint that returns the desired format for the front-end components to render.",{"type":23,"tag":1171,"props":6912,"children":6913},{},[6914],{"type":1175,"value":6915},"A standalone front-end without knowledge of what external APIs feed it is highly flexible, future-proof, and hard to hack. Imagine a design system full of components with excellent documentation of what properties they need and a simple SDK to query data and map it directly to these properties. If you have to switch CMS or commerce engine, it’s a matter of remapping the data to the component properties and you are done.",{"type":23,"tag":1171,"props":6917,"children":6918},{},[6919],{"type":23,"tag":1234,"props":6920,"children":6923},{"alt":6921,"loading":1238,"provider":1239,"sizes":1240,"src":6922,"width":13},"Data fetching in a composable orchestration platform","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u75kbivciz0ayqg3t7fd.png",[],{"type":23,"tag":1178,"props":6925,"children":6926},{"id":2149},[6927],{"type":1175,"value":2152},{"type":23,"tag":1171,"props":6929,"children":6930},{},[6931],{"type":1175,"value":6932},"To successfully manage your digital pipeline, we need orchestration that adds structure to the stack, making it easier to align API first sources toward the same business goal and empowering all of the various teams contributing to the end product - developers, content authors and marketers. To keep the digital pipeline productive as new technologies emerge, you need orchestration that gives freedom of choice in every aspect of the architecture both today and tomorrow.",{"type":23,"tag":1171,"props":6934,"children":6935},{},[6936],{"type":1175,"value":6937},"Imagine if marketers and developers could be friends again and work together to create the best experience for their website visitors?",{"title":5,"searchDepth":34,"depth":34,"links":6939},[6940,6941,6942,6946],{"id":6638,"depth":34,"text":6641},{"id":6667,"depth":34,"text":6670},{"id":6722,"depth":34,"text":6725,"children":6943},[6944,6945],{"id":6776,"depth":1764,"text":6779},{"id":6856,"depth":1764,"text":6859},{"id":2149,"depth":34,"text":2152},"content:4.writing:the-future-of-jamstack-is-composable.md","4.writing/the-future-of-jamstack-is-composable.md",1718484377984] \ No newline at end of file +[{"data":1,"prerenderedAt":1159},["Reactive",2],{"content-query-wNhKu2rr0W":3,"content-navigation-8C37fagqQL":43},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"draft":6,"navigation":9,"image":10,"head":15,"body":19,"_type":38,"_id":39,"_source":40,"_file":41,"_extension":42},"/writing","",false,"Writing","My articles",true,{"src":11,"alt":12,"width":13,"height":14},"https://res.cloudinary.com/dwfcofnrd/image/upload/q_auto,f_auto,w_1280/Tim/tim_aug_2023.png","Tim Benniks",1280,800,{"meta":16},[17],{"name":18,"content":12},"keywords",{"type":20,"children":21,"toc":35},"root",[22],{"type":23,"tag":24,"props":25,"children":26},"element","p",{},[27,32],{"type":23,"tag":28,"props":29,"children":31},"title-block",{"tag":30,"title":7},"h1",[],{"type":33,"value":34},"text",":articles{:small=\"false\"}",{"title":5,"searchDepth":36,"depth":36,"links":37},2,[],"markdown","content:4.writing:index.md","content","4.writing/index.md","md",[44,47,839,914,1150,1153,1156],{"title":45,"_path":46},"About Tim","/about",{"title":48,"_path":49,"children":50},"Videos","/videos",[51,70,89,135,136,188,291,314,336,664],{"title":52,"_path":53,"children":54},"Alive And Kicking","/videos/alive-and-kicking",[55,58,61,64,67],{"title":56,"_path":57},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":59,"_path":60},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":62,"_path":63},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":65,"_path":66},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":68,"_path":69},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":71,"_path":72,"children":73},"Headless Creator","/videos/headless-creator",[74,77,80,83,86],{"title":75,"_path":76},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":78,"_path":79},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":81,"_path":82},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":84,"_path":85},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":87,"_path":88},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":90,"_path":91,"children":92},"Hygraph","/videos/hygraph",[93,96,99,102,105,108,111,114,117,120,123,126,129,132],{"title":94,"_path":95},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":97,"_path":98},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":100,"_path":101},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":103,"_path":104},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":106,"_path":107},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":109,"_path":110},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":112,"_path":113},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":115,"_path":116},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":118,"_path":119},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":121,"_path":122},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":124,"_path":125},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":127,"_path":128},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":130,"_path":131},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":133,"_path":134},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":48,"_path":49},{"title":137,"_path":138,"children":139},"Live Hygraph","/videos/live-hygraph",[140,143,146,149,152,155,158,161,164,167,170,173,176,179,182,185],{"title":141,"_path":142},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":144,"_path":145},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":147,"_path":148},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":150,"_path":151},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":153,"_path":154},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":156,"_path":157},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":159,"_path":160},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":162,"_path":163},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":165,"_path":166},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":168,"_path":169},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":171,"_path":172},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":174,"_path":175},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":177,"_path":178},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":180,"_path":181},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":183,"_path":184},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":186,"_path":187},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":189,"_path":190,"children":191},"Live Uniform","/videos/live-uniform",[192,195,198,201,204,207,210,213,216,219,222,225,228,231,234,237,240,243,246,249,252,255,258,261,264,267,270,273,276,279,282,285,288],{"title":193,"_path":194},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":196,"_path":197},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":199,"_path":200},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":202,"_path":203},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":205,"_path":206},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":208,"_path":209},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":211,"_path":212},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":214,"_path":215},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":217,"_path":218},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":220,"_path":221},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":223,"_path":224},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":226,"_path":227},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":229,"_path":230},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":232,"_path":233},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":235,"_path":236},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":238,"_path":239},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":241,"_path":242},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":244,"_path":245},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":247,"_path":248},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":250,"_path":251},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":253,"_path":254},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":256,"_path":257},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":259,"_path":260},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":262,"_path":263},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":265,"_path":266},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":268,"_path":269},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":271,"_path":272},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":274,"_path":275},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":277,"_path":278},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":280,"_path":281},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":283,"_path":284},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":286,"_path":287},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":289,"_path":290},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":292,"_path":293,"children":294},"Misc Streams","/videos/misc-streams",[295,298,301,304,306,308,311],{"title":296,"_path":297},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":299,"_path":300},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":302,"_path":303},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":286,"_path":305},"/videos/misc-streams/003-jvgiaotcerq",{"title":277,"_path":307},"/videos/misc-streams/004-ekut1koa2n8",{"title":309,"_path":310},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":312,"_path":313},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":315,"_path":316,"children":317},"Mp","/videos/mp",[318,321,324,327,330,333],{"title":319,"_path":320},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":322,"_path":323},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":325,"_path":326},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":328,"_path":329},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":331,"_path":332},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":334,"_path":335},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":337,"_path":338,"children":339},"Tim","/videos/tim",[340,342,345,348,351,354,357,360,363,366,369,372,375,378,381,384,387,390,392,394,397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646,649,652,655,658,661],{"title":59,"_path":341},"/videos/tim/000-mvq-_s20ndk",{"title":343,"_path":344},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":346,"_path":347},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":349,"_path":350},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":352,"_path":353},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":355,"_path":356},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":358,"_path":359},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":361,"_path":362},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":364,"_path":365},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":367,"_path":368},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":370,"_path":371},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":373,"_path":374},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":376,"_path":377},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":379,"_path":380},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":382,"_path":383},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":385,"_path":386},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":388,"_path":389},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":62,"_path":391},"/videos/tim/017-m0mrligs6i0",{"title":56,"_path":393},"/videos/tim/018-hhpitreyobi",{"title":395,"_path":396},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":398,"_path":399},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":401,"_path":402},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":404,"_path":405},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":407,"_path":408},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":410,"_path":411},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":413,"_path":414},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":416,"_path":417},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":419,"_path":420},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":422,"_path":423},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":425,"_path":426},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":428,"_path":429},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":431,"_path":432},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":434,"_path":435},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":437,"_path":438},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":440,"_path":441},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":443,"_path":444},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":446,"_path":447},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":449,"_path":450},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":452,"_path":453},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":455,"_path":456},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":458,"_path":459},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":461,"_path":462},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":464,"_path":465},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":467,"_path":468},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":470,"_path":471},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":473,"_path":474},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":476,"_path":477},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":479,"_path":480},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":482,"_path":483},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":485,"_path":486},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":488,"_path":489},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":491,"_path":492},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":494,"_path":495},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":497,"_path":498},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":500,"_path":501},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":503,"_path":504},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":506,"_path":507},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":509,"_path":510},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":512,"_path":513},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":515,"_path":516},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":518,"_path":519},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":521,"_path":522},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":524,"_path":525},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":527,"_path":528},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":530,"_path":531},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":533,"_path":534},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":536,"_path":537},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":539,"_path":540},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":542,"_path":543},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":545,"_path":546},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":548,"_path":549},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":551,"_path":552},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":554,"_path":555},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":557,"_path":558},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":560,"_path":561},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":563,"_path":564},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":566,"_path":567},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":569,"_path":570},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":572,"_path":573},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":575,"_path":576},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":578,"_path":579},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":581,"_path":582},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":584,"_path":585},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":587,"_path":588},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":590,"_path":591},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":593,"_path":594},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":596,"_path":597},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":599,"_path":600},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":602,"_path":603},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":605,"_path":606},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":608,"_path":609},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":611,"_path":612},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":614,"_path":615},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":617,"_path":618},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":620,"_path":621},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":623,"_path":624},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":626,"_path":627},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":629,"_path":630},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":632,"_path":633},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":635,"_path":636},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":638,"_path":639},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":641,"_path":642},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":644,"_path":645},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":647,"_path":648},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":650,"_path":651},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":653,"_path":654},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":656,"_path":657},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":659,"_path":660},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":662,"_path":663},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":665,"_path":666,"children":667},"Uniform","/videos/uniform",[668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836],{"title":669,"_path":670},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":672,"_path":673},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":675,"_path":676},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":678,"_path":679},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":681,"_path":682},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":684,"_path":685},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":687,"_path":688},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":690,"_path":691},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":693,"_path":694},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":696,"_path":697},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":699,"_path":700},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":702,"_path":703},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":705,"_path":706},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":708,"_path":709},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":711,"_path":712},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":714,"_path":715},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":717,"_path":718},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":720,"_path":721},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":723,"_path":724},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":726,"_path":727},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":729,"_path":730},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":732,"_path":733},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":735,"_path":736},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":738,"_path":739},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":741,"_path":742},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":744,"_path":745},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":747,"_path":748},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":750,"_path":751},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":753,"_path":754},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":756,"_path":757},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":759,"_path":760},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":762,"_path":763},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":765,"_path":766},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":768,"_path":769},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":771,"_path":772},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":774,"_path":775},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":777,"_path":778},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":780,"_path":781},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":783,"_path":784},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":786,"_path":787},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":789,"_path":790},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":792,"_path":793},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":795,"_path":796},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":798,"_path":799},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":801,"_path":802},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":804,"_path":805},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":807,"_path":808},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":810,"_path":811},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":813,"_path":814},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":816,"_path":817},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":819,"_path":820},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":822,"_path":823},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":825,"_path":826},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":828,"_path":829},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":831,"_path":832},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":834,"_path":835},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":837,"_path":838},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":7,"_path":4,"children":840},[841,844,847,850,853,856,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911],{"title":842,"_path":843},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":845,"_path":846},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":848,"_path":849},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":851,"_path":852},"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":854,"_path":855},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":7,"_path":4},{"title":858,"_path":859},"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":861,"_path":862},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":864,"_path":865},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":867,"_path":868},"My Fitness Story","/writing/my-fitness-story",{"title":870,"_path":871},"New job alert!","/writing/new-job-alert",{"title":873,"_path":874},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":876,"_path":877},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":879,"_path":880},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":882,"_path":883},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":885,"_path":886},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":888,"_path":889},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":891,"_path":892},"The MACH monolith","/writing/the-mach-monolith",{"title":894,"_path":895},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":897,"_path":898},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":900,"_path":901},"This is headless 2.0","/writing/this-is-headless-20",{"title":903,"_path":904},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":906,"_path":907},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":909,"_path":910},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":912,"_path":913},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":915,"_path":916,"children":917},"Speaking","/speaking",[918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149],{"title":919,"_path":920},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":922,"_path":923},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":925,"_path":926},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":928,"_path":929},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":931,"_path":932},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":934,"_path":935},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":937,"_path":938},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":940,"_path":941},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":943,"_path":944},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":946,"_path":947},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":949,"_path":950},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":952,"_path":953},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":955,"_path":956},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":958,"_path":959},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":961,"_path":962},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":964,"_path":965},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":967,"_path":968},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":970,"_path":971},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":973,"_path":974},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":976,"_path":977},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":979,"_path":980},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":982,"_path":983},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":985,"_path":986},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":988,"_path":989},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":991,"_path":992},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":994,"_path":995},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":997,"_path":998},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1000,"_path":1001},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1003,"_path":1004},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1006,"_path":1007},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1009,"_path":1010},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1012,"_path":1013},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1015,"_path":1016},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1018,"_path":1019},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1021,"_path":1022},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1024,"_path":1025},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1027,"_path":1028},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1030,"_path":1031},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1033,"_path":1034},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1036,"_path":1037},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1039,"_path":1040},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1042,"_path":1043},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1045,"_path":1046},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1048,"_path":1049},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1051,"_path":1052},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1054,"_path":1055},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1057,"_path":1058},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1060,"_path":1061},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1063,"_path":1064},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1066,"_path":1067},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1069,"_path":1070},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1072,"_path":1073},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1075,"_path":1076},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1078,"_path":1079},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1081,"_path":1082},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1084,"_path":1085},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1087,"_path":1088},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1090,"_path":1091},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1093,"_path":1094},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1096,"_path":1097},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1099,"_path":1100},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1102,"_path":1103},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1105,"_path":1106},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1108,"_path":1109},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1111,"_path":1112},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1114,"_path":1115},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1117,"_path":1118},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1120,"_path":1121},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1123,"_path":1124},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1126,"_path":1127},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1129,"_path":1130},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1132,"_path":1133},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1135,"_path":1136},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1138,"_path":1139},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1141,"_path":1142},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1144,"_path":1145},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1147,"_path":1148},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":915,"_path":916},{"title":1151,"_path":1152},"live streams","/livestreams",{"title":1154,"_path":1155},"Press kit","/presskit",{"title":1157,"_path":1158},"Alive and kicking","/alive-and-kicking",1718484819576] \ No newline at end of file diff --git a/writing/digital-experience-platforms-the-old-versus-the-new/_payload.json b/writing/digital-experience-platforms-the-old-versus-the-new/_payload.json deleted file mode 100644 index 3a286788..00000000 --- a/writing/digital-experience-platforms-the-old-versus-the-new/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1281},["Reactive",2],{"content-query-hd9N35COpM":3,"content-navigation-8C37fagqQL":165},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":160,"_id":161,"_source":162,"_file":163,"_extension":164},"/writing/digital-experience-platforms-the-old-versus-the-new","writing",false,"","Digital experience platforms: the old versus the new","Digital experience platforms (DXPs) and the more modern digital experience composition platforms...",1405729,"digital-experience-platforms-the-old-versus-the-new","2023-03-18T13:05:48Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1tc0ds73edh613y9yg6.png","https://uniform.dev/blogs/digital-experience-composition-dxc/difference-between-dxp-and-dxcp",[16,17,18,19],"architecture","dxp","composable","webdev",22300,{"type":22,"children":23,"toc":152},"root",[24,43,48,55,60,65,71,76,81,96,101,107,112,136,141,147],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29,32,41],{"type":30,"value":31},"text","Digital experience platforms (DXPs) and the more modern ",{"type":25,"tag":33,"props":34,"children":38},"a",{"href":35,"rel":36},"https://uniform.dev/what-is-digital-experience-composition",[37],"nofollow",[39],{"type":30,"value":40},"digital experience composition platforms (DXCPs)",{"type":30,"value":42}," share the same goal of making it easier for business users to create visually dynamic, personalized digital experiences. A major contrast is that DXCPs orchestrate solutions and technologies from different vendors. On the other hand, even though DXPs call themselves composable, they lock brands into a single vendor and one way of doing things at the expense of other capabilities.",{"type":25,"tag":26,"props":44,"children":45},{},[46],{"type":30,"value":47},"To help brands decide whether to switch from a DXP to a DXCP, we explain below their key differences. More details are available in this video created by Headless Creator.",{"type":25,"tag":49,"props":50,"children":52},"h3",{"id":51},"dxcps-are-far-more-cloud-native",[53],{"type":30,"value":54},"DXCPs are far more cloud native",{"type":25,"tag":26,"props":56,"children":57},{},[58],{"type":30,"value":59},"A major disadvantage of DXPs is that their foundation is a content management system (CMS), which contains integrated add-ons or bolted-on tools along with such platforms as a digital asset management (DAM) and a product information management (PIM) system. Consequently, developers must manually apply updates, manage the hosting, customize the platform, and scale up the hosting to accommodate traffic spikes, such as those that occur around busy shopping days like Black Friday in the U.S. and Europe. The alternative is to hire the vendor to do all that at an additional cost.",{"type":25,"tag":26,"props":61,"children":62},{},[63],{"type":30,"value":64},"Conversely, DXCPs and the headless tools they manage are all hosted in the cloud and cloud native, which means that updates can not only occur automatically, but also scale elastically as demand rises and falls. Also, since DXCPs are tech agnostic and API-first, business users can work with multiple tools there. They can do that in DXPs, too, but only to a limited extent, let alone that in venturing outside that vendor’s proverbial walled garden, they give up features and capabilities.",{"type":25,"tag":49,"props":66,"children":68},{"id":67},"dxcps-are-more-than-a-data-aggregator",[69],{"type":30,"value":70},"DXCPs are more than a data aggregator",{"type":25,"tag":26,"props":72,"children":73},{},[74],{"type":30,"value":75},"Uniform views DXCPs as a way for brands and their developers to select advanced, API-first vendors and loosely couple those vendors’ tools together. Furthermore, thanks to DXCPs’ tooling, business users can work across the many integrated tools in a holistic, unified workflow. ",{"type":25,"tag":26,"props":77,"children":78},{},[79],{"type":30,"value":80},"Additionally:",{"type":25,"tag":82,"props":83,"children":84},"ul",{},[85,91],{"type":25,"tag":86,"props":87,"children":88},"li",{},[89],{"type":30,"value":90},"DXCPs are more than a data aggregator. Even though effective tools are available for stitching APIs into a cohesive model for access and use by developers, those tools do not deftly manage experiences as DXCPs do. After all, API aggregators are meant for access by developers through code only, not for business users, whose expertise rests with a low- or no-code editing environment, in which DXCPs also specialize. ",{"type":25,"tag":86,"props":92,"children":93},{},[94],{"type":30,"value":95},"DXCPs are different from a CMS because, unlike a CMS that requires that all content be routed through it for a tight coupling of technology, they keep content and data sources on a level playing field and maintain the loose coupling so that you can replace and add capabilities as necessary with no technology lock-in. ",{"type":25,"tag":26,"props":97,"children":98},{},[99],{"type":30,"value":100},"In short, the entire focus of DXCPs is to accord teams freedom to collaborate smoothly, and for brands to switch tools without impacting the way other tools work and the overall web experience.",{"type":25,"tag":49,"props":102,"children":104},{"id":103},"dxcp-protects-domain-data",[105],{"type":30,"value":106},"DXCP protects domain data",{"type":25,"tag":26,"props":108,"children":109},{},[110],{"type":30,"value":111},"When building webpages or experiences, developers need two types of data:",{"type":25,"tag":82,"props":113,"children":114},{},[115,126],{"type":25,"tag":86,"props":116,"children":117},{},[118,124],{"type":25,"tag":119,"props":120,"children":121},"strong",{},[122],{"type":30,"value":123},"Domain data,",{"type":30,"value":125}," which is core material, such as product models, that defines your brand across channels. For an events website, this data contains the names of the event spaces provided by your company, the dates, and the procedure for registration.",{"type":25,"tag":86,"props":127,"children":128},{},[129,134],{"type":25,"tag":119,"props":130,"children":131},{},[132],{"type":30,"value":133},"Design data,",{"type":30,"value":135}," which is volatile, channel-specific material, such as your site’s colors and the way in which you can edit the display of week-by-week information. For an events website, for example, you can change page design or spotlight a feature with volatile data.",{"type":25,"tag":26,"props":137,"children":138},{},[139],{"type":30,"value":140},"In DXPs, both domain data and design data reside in the same CMS, potentially leading to a messy situation and a polluted content model. In DXCPs, the design data and domain data are separate, providing clean data workflows for innovation efforts and more system longevity.",{"type":25,"tag":49,"props":142,"children":144},{"id":143},"uniform-dxcp-readily-facilitates-transitioning-from-the-old",[145],{"type":30,"value":146},"Uniform DXCP readily facilitates transitioning from the old",{"type":25,"tag":26,"props":148,"children":149},{},[150],{"type":30,"value":151},"The primary function of composable frameworks like DXCPs is to enable both developers and business users to work seamlessly together, doing what they do best by leveraging the headless solutions that support them best. Composability also unlocks the potential of creating state-of-the-art, future-forward web experiences.",{"title":7,"searchDepth":153,"depth":153,"links":154},2,[155,157,158,159],{"id":51,"depth":156,"text":54},3,{"id":67,"depth":156,"text":70},{"id":103,"depth":156,"text":106},{"id":143,"depth":156,"text":146},"markdown","content:4.writing:digital-experience-platforms-the-old-versus-the-new.md","content","4.writing/digital-experience-platforms-the-old-versus-the-new.md","md",[166,169,961,1036,1272,1275,1278],{"title":167,"_path":168},"About","/about",{"title":170,"_path":171,"children":172},"videos","/videos",[173,192,211,257,258,310,413,436,458,786],{"title":174,"_path":175,"children":176},"Alive And Kicking","/videos/alive-and-kicking",[177,180,183,186,189],{"title":178,"_path":179},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":181,"_path":182},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":184,"_path":185},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":187,"_path":188},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":190,"_path":191},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":193,"_path":194,"children":195},"Headless Creator","/videos/headless-creator",[196,199,202,205,208],{"title":197,"_path":198},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":200,"_path":201},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":203,"_path":204},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":206,"_path":207},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":209,"_path":210},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":212,"_path":213,"children":214},"Hygraph","/videos/hygraph",[215,218,221,224,227,230,233,236,239,242,245,248,251,254],{"title":216,"_path":217},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":219,"_path":220},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":222,"_path":223},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":225,"_path":226},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":228,"_path":229},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":231,"_path":232},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":234,"_path":235},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":237,"_path":238},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":240,"_path":241},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":243,"_path":244},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":246,"_path":247},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":249,"_path":250},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":252,"_path":253},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":255,"_path":256},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":170,"_path":171},{"title":259,"_path":260,"children":261},"Live Hygraph","/videos/live-hygraph",[262,265,268,271,274,277,280,283,286,289,292,295,298,301,304,307],{"title":263,"_path":264},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":266,"_path":267},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":269,"_path":270},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":272,"_path":273},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":275,"_path":276},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":278,"_path":279},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":281,"_path":282},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":284,"_path":285},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":287,"_path":288},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":290,"_path":291},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":293,"_path":294},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":296,"_path":297},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":299,"_path":300},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":302,"_path":303},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":305,"_path":306},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":308,"_path":309},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":311,"_path":312,"children":313},"Live Uniform","/videos/live-uniform",[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,389,392,395,398,401,404,407,410],{"title":315,"_path":316},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":318,"_path":319},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":321,"_path":322},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":324,"_path":325},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":327,"_path":328},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":330,"_path":331},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":333,"_path":334},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":336,"_path":337},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":339,"_path":340},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":342,"_path":343},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":345,"_path":346},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":348,"_path":349},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":351,"_path":352},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":354,"_path":355},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":357,"_path":358},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":360,"_path":361},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":363,"_path":364},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":366,"_path":367},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":369,"_path":370},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":372,"_path":373},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":375,"_path":376},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":378,"_path":379},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":381,"_path":382},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":384,"_path":385},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":387,"_path":388},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":390,"_path":391},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":393,"_path":394},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":396,"_path":397},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":399,"_path":400},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":402,"_path":403},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":405,"_path":406},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":408,"_path":409},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":411,"_path":412},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":414,"_path":415,"children":416},"Misc Streams","/videos/misc-streams",[417,420,423,426,428,430,433],{"title":418,"_path":419},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":421,"_path":422},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":424,"_path":425},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":408,"_path":427},"/videos/misc-streams/003-jvgiaotcerq",{"title":399,"_path":429},"/videos/misc-streams/004-ekut1koa2n8",{"title":431,"_path":432},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":434,"_path":435},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":437,"_path":438,"children":439},"Mp","/videos/mp",[440,443,446,449,452,455],{"title":441,"_path":442},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":444,"_path":445},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":447,"_path":448},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":450,"_path":451},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":453,"_path":454},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":456,"_path":457},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":459,"_path":460,"children":461},"Tim","/videos/tim",[462,464,467,470,473,476,479,482,485,488,491,494,497,500,503,506,509,512,514,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,780,783],{"title":181,"_path":463},"/videos/tim/000-mvq-_s20ndk",{"title":465,"_path":466},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":468,"_path":469},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":471,"_path":472},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":474,"_path":475},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":477,"_path":478},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":480,"_path":481},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":483,"_path":484},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":486,"_path":487},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":489,"_path":490},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":492,"_path":493},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":495,"_path":496},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":498,"_path":499},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":501,"_path":502},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":504,"_path":505},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":507,"_path":508},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":510,"_path":511},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":184,"_path":513},"/videos/tim/017-m0mrligs6i0",{"title":178,"_path":515},"/videos/tim/018-hhpitreyobi",{"title":517,"_path":518},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":520,"_path":521},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":523,"_path":524},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":526,"_path":527},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":529,"_path":530},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":532,"_path":533},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":535,"_path":536},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":538,"_path":539},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":541,"_path":542},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":544,"_path":545},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":547,"_path":548},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":550,"_path":551},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":553,"_path":554},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":556,"_path":557},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":559,"_path":560},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":562,"_path":563},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":565,"_path":566},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":568,"_path":569},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":571,"_path":572},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":574,"_path":575},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":577,"_path":578},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":580,"_path":581},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":583,"_path":584},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":586,"_path":587},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":589,"_path":590},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":592,"_path":593},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":595,"_path":596},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":598,"_path":599},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":601,"_path":602},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":604,"_path":605},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":607,"_path":608},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":610,"_path":611},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":613,"_path":614},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":616,"_path":617},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":619,"_path":620},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":622,"_path":623},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":625,"_path":626},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":628,"_path":629},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":631,"_path":632},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":634,"_path":635},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":637,"_path":638},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":640,"_path":641},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":643,"_path":644},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":646,"_path":647},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":649,"_path":650},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":652,"_path":653},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":655,"_path":656},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":658,"_path":659},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":661,"_path":662},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":664,"_path":665},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":667,"_path":668},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":670,"_path":671},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":673,"_path":674},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":676,"_path":677},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":679,"_path":680},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":682,"_path":683},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":685,"_path":686},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":688,"_path":689},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":691,"_path":692},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":694,"_path":695},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":697,"_path":698},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":700,"_path":701},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":703,"_path":704},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":706,"_path":707},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":709,"_path":710},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":712,"_path":713},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":715,"_path":716},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":718,"_path":719},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":721,"_path":722},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":724,"_path":725},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":727,"_path":728},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":730,"_path":731},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":733,"_path":734},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":736,"_path":737},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":739,"_path":740},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":742,"_path":743},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":745,"_path":746},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":748,"_path":749},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":751,"_path":752},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":754,"_path":755},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":757,"_path":758},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":760,"_path":761},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":763,"_path":764},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":766,"_path":767},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":769,"_path":770},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":772,"_path":773},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":775,"_path":776},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":778,"_path":779},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":781,"_path":782},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":784,"_path":785},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":787,"_path":788,"children":789},"Uniform","/videos/uniform",[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,952,955,958],{"title":791,"_path":792},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":794,"_path":795},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":797,"_path":798},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":800,"_path":801},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":803,"_path":804},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":806,"_path":807},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":809,"_path":810},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":812,"_path":813},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":815,"_path":816},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":818,"_path":819},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":821,"_path":822},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":824,"_path":825},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":827,"_path":828},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":830,"_path":831},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":833,"_path":834},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":836,"_path":837},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":839,"_path":840},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":842,"_path":843},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":845,"_path":846},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":848,"_path":849},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":851,"_path":852},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":854,"_path":855},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":857,"_path":858},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":860,"_path":861},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":863,"_path":864},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":866,"_path":867},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":869,"_path":870},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":872,"_path":873},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":875,"_path":876},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":878,"_path":879},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":881,"_path":882},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":884,"_path":885},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":887,"_path":888},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":890,"_path":891},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":893,"_path":894},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":896,"_path":897},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":899,"_path":900},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":902,"_path":903},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":905,"_path":906},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":908,"_path":909},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":911,"_path":912},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":914,"_path":915},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":917,"_path":918},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":920,"_path":921},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":923,"_path":924},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":926,"_path":927},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":929,"_path":930},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":932,"_path":933},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":935,"_path":936},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":938,"_path":939},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":941,"_path":942},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":944,"_path":945},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":947,"_path":948},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":950,"_path":951},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":953,"_path":954},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":956,"_path":957},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":959,"_path":960},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":962,"_path":963,"children":964},"Writing","/writing",[965,966,969,972,975,978,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033],{"title":8,"_path":4},{"title":967,"_path":968},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":970,"_path":971},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":973,"_path":974},"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":976,"_path":977},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":962,"_path":963},{"title":980,"_path":981},"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":983,"_path":984},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":986,"_path":987},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":989,"_path":990},"My Fitness Story","/writing/my-fitness-story",{"title":992,"_path":993},"New job alert!","/writing/new-job-alert",{"title":995,"_path":996},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":998,"_path":999},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1001,"_path":1002},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1004,"_path":1005},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1007,"_path":1008},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1010,"_path":1011},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1013,"_path":1014},"The MACH monolith","/writing/the-mach-monolith",{"title":1016,"_path":1017},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1019,"_path":1020},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1022,"_path":1023},"This is headless 2.0","/writing/this-is-headless-20",{"title":1025,"_path":1026},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1028,"_path":1029},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1031,"_path":1032},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1034,"_path":1035},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1037,"_path":1038,"children":1039},"Speaking","/speaking",[1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271],{"title":1041,"_path":1042},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1044,"_path":1045},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1047,"_path":1048},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1050,"_path":1051},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1053,"_path":1054},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1056,"_path":1057},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1059,"_path":1060},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1062,"_path":1063},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1065,"_path":1066},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1068,"_path":1069},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1071,"_path":1072},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1074,"_path":1075},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1077,"_path":1078},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1080,"_path":1081},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1083,"_path":1084},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1086,"_path":1087},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1089,"_path":1090},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1092,"_path":1093},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1095,"_path":1096},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1098,"_path":1099},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1101,"_path":1102},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1104,"_path":1105},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1107,"_path":1108},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1110,"_path":1111},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1113,"_path":1114},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1116,"_path":1117},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1119,"_path":1120},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1122,"_path":1123},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1125,"_path":1126},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1128,"_path":1129},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1131,"_path":1132},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1134,"_path":1135},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1137,"_path":1138},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1140,"_path":1141},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1143,"_path":1144},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1146,"_path":1147},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1149,"_path":1150},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1152,"_path":1153},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1155,"_path":1156},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1158,"_path":1159},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1161,"_path":1162},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1164,"_path":1165},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1167,"_path":1168},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1170,"_path":1171},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1173,"_path":1174},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1176,"_path":1177},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1179,"_path":1180},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1182,"_path":1183},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1185,"_path":1186},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1188,"_path":1189},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1191,"_path":1192},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1194,"_path":1195},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1197,"_path":1198},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1200,"_path":1201},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1203,"_path":1204},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1206,"_path":1207},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1209,"_path":1210},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1212,"_path":1213},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1215,"_path":1216},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1218,"_path":1219},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1221,"_path":1222},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1224,"_path":1225},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1227,"_path":1228},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1230,"_path":1231},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1233,"_path":1234},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1236,"_path":1237},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1239,"_path":1240},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1242,"_path":1243},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1245,"_path":1246},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1248,"_path":1249},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1251,"_path":1252},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1254,"_path":1255},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1257,"_path":1258},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1260,"_path":1261},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1263,"_path":1264},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1266,"_path":1267},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1269,"_path":1270},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1037,"_path":1038},{"title":1273,"_path":1274},"live streams","/livestreams",{"title":1276,"_path":1277},"press kit","/presskit",{"title":1279,"_path":1280},"alive and kicking","/alive-and-kicking",1718484379630] \ No newline at end of file diff --git a/writing/digital-experience-platforms-the-old-versus-the-new/index.html b/writing/digital-experience-platforms-the-old-versus-the-new/index.html deleted file mode 100644 index a7cf8548..00000000 --- a/writing/digital-experience-platforms-the-old-versus-the-new/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - -Digital experience platforms: the old versus the new - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Digital experience platforms: the old versus the new

Mar 18, 2023 at https://uniform.dev/blogs/digital-experience-composition-dxc/difference-between-dxp-and-dxcp

Digital experience platforms (DXPs) and the more modern digital experience composition platforms (DXCPs) share the same goal of making it easier for business users to create visually dynamic, personalized digital experiences. A major contrast is that DXCPs orchestrate solutions and technologies from different vendors. On the other hand, even though DXPs call themselves composable, they lock brands into a single vendor and one way of doing things at the expense of other capabilities.

To help brands decide whether to switch from a DXP to a DXCP, we explain below their key differences. More details are available in this video created by Headless Creator.

DXCPs are far more cloud native

A major disadvantage of DXPs is that their foundation is a content management system (CMS), which contains integrated add-ons or bolted-on tools along with such platforms as a digital asset management (DAM) and a product information management (PIM) system. Consequently, developers must manually apply updates, manage the hosting, customize the platform, and scale up the hosting to accommodate traffic spikes, such as those that occur around busy shopping days like Black Friday in the U.S. and Europe. The alternative is to hire the vendor to do all that at an additional cost.

Conversely, DXCPs and the headless tools they manage are all hosted in the cloud and cloud native, which means that updates can not only occur automatically, but also scale elastically as demand rises and falls. Also, since DXCPs are tech agnostic and API-first, business users can work with multiple tools there. They can do that in DXPs, too, but only to a limited extent, let alone that in venturing outside that vendor’s proverbial walled garden, they give up features and capabilities.

DXCPs are more than a data aggregator

Uniform views DXCPs as a way for brands and their developers to select advanced, API-first vendors and loosely couple those vendors’ tools together. Furthermore, thanks to DXCPs’ tooling, business users can work across the many integrated tools in a holistic, unified workflow. 

Additionally:

  • DXCPs are more than a data aggregator. Even though effective tools are available for stitching APIs into a cohesive model for access and use by developers, those tools do not deftly manage experiences as DXCPs do. After all, API aggregators are meant for access by developers through code only, not for business users, whose expertise rests with a low- or no-code editing environment, in which DXCPs also specialize. 
  • DXCPs are different from a CMS because, unlike a CMS that requires that all content be routed through it for a tight coupling of technology, they keep content and data sources on a level playing field and maintain the loose coupling so that you can replace and add capabilities as necessary with no technology lock-in. 

In short, the entire focus of DXCPs is to accord teams freedom to collaborate smoothly, and for brands to switch tools without impacting the way other tools work and the overall web experience.

DXCP protects domain data

When building webpages or experiences, developers need two types of data:

  • Domain data, which is core material, such as product models, that defines your brand across channels. For an events website, this data contains the names of the event spaces provided by your company, the dates, and the procedure for registration.
  • Design data, which is volatile, channel-specific material, such as your site’s colors and the way in which you can edit the display of week-by-week information. For an events website, for example, you can change page design or spotlight a feature with volatile data.

In DXPs, both domain data and design data reside in the same CMS, potentially leading to a messy situation and a polluted content model. In DXCPs, the design data and domain data are separate, providing clean data workflows for innovation efforts and more system longevity.

Uniform DXCP readily facilitates transitioning from the old

The primary function of composable frameworks like DXCPs is to enable both developers and business users to work seamlessly together, doing what they do best by leveraging the headless solutions that support them best. Composability also unlocks the potential of creating state-of-the-art, future-forward web experiences.

- \ No newline at end of file diff --git a/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform/_payload.json b/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform/_payload.json deleted file mode 100644 index d448bb98..00000000 --- a/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1288},["Reactive",2],{"content-query-lYbn8WoyBr":3,"content-navigation-8C37fagqQL":172},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":167,"_id":168,"_source":169,"_file":170,"_extension":171},"/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform","writing",false,"","Fast, personalized pages with Vercel Edge Middleware and Uniform","To maintain an engaging relationship with your audience and increase conversions to your site, you...",1405723,"fast-personalized-pages-with-vercel-edge-middleware-and-uniform","2023-03-18T12:49:56Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1yp1gg5ldu4y8tozle7.png","https://uniform.dev/blogs/personalization/blazing-fast-personalized-pages-with-vercel-edge-middleware-and-uniform",[16,17,18,19],"performance","personalization","vercel","edge",22300,{"type":22,"children":23,"toc":160},"root",[24,32,48,55,60,66,71,110,115,129,134,148,155],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","To maintain an engaging relationship with your audience and increase conversions to your site, you need personalization. However, creating personalized experiences is technically challenging. Most personalization techniques involve dynamic rendering and an origin server that holds personalization rules for end-users—a slow approach that often negates the conversions gained through personalization.",{"type":25,"tag":26,"props":33,"children":34},{},[35,37,46],{"type":30,"value":36},"Among the many moving parts to consider, performance and scalability are tough nuts to crack. Fortunately, companies like Vercel, which recently released ",{"type":25,"tag":38,"props":39,"children":43},"a",{"href":40,"rel":41},"https://vercel.com/docs/concepts/functions/edge-middleware",[42],"nofollow",[44],{"type":30,"value":45},"Edge Middleware",{"type":30,"value":47},", make those problems readily solvable for developers. With Vercel in place, you only need to choose the right tech to personalize at the CDN edge without having to grapple with the one thing that slows things down: the origin server.",{"type":25,"tag":49,"props":50,"children":52},"h3",{"id":51},"the-benefits-of-edge",[53],{"type":30,"value":54},"The benefits of edge",{"type":25,"tag":26,"props":56,"children":57},{},[58],{"type":30,"value":59},"Vercel offers familiar tech to developers: it’s all JavaScript based. With Edge Middleware, developers have the tools to make great things happen that they could not before. All the dynamic tasks that typically occur on an origin server can now happen near end-users, leading to faster page loads and automatic scaling out of the box. Not only that, Edge Middleware have user data that’s handy for personalization: country, region, and the device in use.",{"type":25,"tag":49,"props":61,"children":63},{"id":62},"the-personalization-process-at-the-edge",[64],{"type":30,"value":65},"The personalization process at the edge",{"type":25,"tag":26,"props":67,"children":68},{},[69],{"type":30,"value":70},"By eliminating the origin server that is typically far away from end-users and bringing the dynamic rendering closer with Edge Middleware, you can personalize with high performance and in a decentralized manner. The only way to personalize without a central brain that knows all the personalization rules is to bring that brain into the software as a first-party tool. This is how that works:",{"type":25,"tag":72,"props":73,"children":74},"ol",{},[75,90,95,100,105],{"type":25,"tag":76,"props":77,"children":78},"li",{},[79,81,88],{"type":30,"value":80},"Create and store the configuration rules, i.e., all the ",{"type":25,"tag":38,"props":82,"children":85},{"href":83,"rel":84},"https://docs.uniform.app/capabilities/personalization",[42],[86],{"type":30,"value":87},"criteria for personalization",{"type":30,"value":89},", in the codebase as a manifest JSON file at build time.",{"type":25,"tag":76,"props":91,"children":92},{},[93],{"type":30,"value":94},"Store variations of the personalized content in the codebase at build time. Since a headless CMS is generally in use, those variations are tiny JSON models in the form of components.",{"type":25,"tag":76,"props":96,"children":97},{},[98],{"type":30,"value":99},"The Edge Middleware has a tracker that monitors user behaviors, which are signals that users give off by doing something on the site. The Edge Middleware awards a score to the personalization criteria configured in step 1. ",{"type":25,"tag":76,"props":101,"children":102},{},[103],{"type":30,"value":104},"The tracker automatically creates a profile of user actions and, based on the scores awarded against the various criteria, displays the right content.",{"type":25,"tag":76,"props":106,"children":107},{},[108],{"type":30,"value":109},"You can render the content via the Edge Middleware or in the front end at hydration time.",{"type":25,"tag":26,"props":111,"children":112},{},[113],{"type":30,"value":114},"The above approach to personalization is how Uniform Context works. Combining Edge Middleware rendering of personalized content with JavaScript hydration for subsequent page loads renders highly dynamic pages within ~50 milliseconds only. The approach is to initially render all the pages statically (SSG/Jamstack) and ensure that the Edge Middleware knows which parts it can personalize. While serving a page, the Edge Middleware checks if personalization is needed and, if so, fills the identified components with the correct personalized content.",{"type":25,"tag":26,"props":116,"children":117},{},[118],{"type":25,"tag":119,"props":120,"children":128},"img",{"alt":121,"height":122,"loading":123,"provider":124,"sizes":125,"src":126,"width":127},"uniform-vercel-edge-middleware",720,"lazy","cloudinary","sm:100vw","https://images.ctfassets.net/9ku1oyd4k3wo/4lvoQsz6WNCbJXIWQVQJSI/b36e13c87c86ca668fea6adf3da2b078/uniform-vercel-edge-middleware.svg",1280,[],{"type":25,"tag":26,"props":130,"children":131},{},[132],{"type":30,"value":133},"Another benefit of the Vercel edge is that at the edge level, the CDN knows a lot about the end-users: their location, city, device, browser version, etc. Thus, Uniform Context can prepersonalize pages with Edge Middleware according to the location or device information from the Vercel CDN.",{"type":25,"tag":26,"props":135,"children":136},{},[137,139,146],{"type":30,"value":138},"Want to try that out for yourself? You’ll find all the details in Uniform’s ",{"type":25,"tag":38,"props":140,"children":143},{"href":141,"rel":142},"https://docs.uniform.app/integrations/cdn/vercel/personalization",[42],[144],{"type":30,"value":145},"documentation on Vercel’s edge-side personalization",{"type":30,"value":147},".",{"type":25,"tag":149,"props":150,"children":152},"h2",{"id":151},"conclusion",[153],{"type":30,"value":154},"Conclusion",{"type":25,"tag":26,"props":156,"children":157},{},[158],{"type":30,"value":159},"To recap, by combining Uniform Context on Edge Middleware with statically rendered pages (SSG/Jamstack), you can create highly dynamic, personalized pages that load in less than a minute. In the past, Uniform offered dynamic personalization features through Vercel ESI. Edge Middleware now gives you a much more flexible and intuitive model for implementing personalization at scale. ",{"title":7,"searchDepth":161,"depth":161,"links":162},2,[163,165,166],{"id":51,"depth":164,"text":54},3,{"id":62,"depth":164,"text":65},{"id":151,"depth":161,"text":154},"markdown","content:4.writing:fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","content","4.writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform.md","md",[173,176,968,1043,1279,1282,1285],{"title":174,"_path":175},"About","/about",{"title":177,"_path":178,"children":179},"videos","/videos",[180,199,218,264,265,317,420,443,465,793],{"title":181,"_path":182,"children":183},"Alive And Kicking","/videos/alive-and-kicking",[184,187,190,193,196],{"title":185,"_path":186},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":188,"_path":189},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":191,"_path":192},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":194,"_path":195},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":197,"_path":198},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":200,"_path":201,"children":202},"Headless Creator","/videos/headless-creator",[203,206,209,212,215],{"title":204,"_path":205},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":207,"_path":208},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":210,"_path":211},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":213,"_path":214},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":216,"_path":217},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":219,"_path":220,"children":221},"Hygraph","/videos/hygraph",[222,225,228,231,234,237,240,243,246,249,252,255,258,261],{"title":223,"_path":224},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":226,"_path":227},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":229,"_path":230},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":232,"_path":233},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":235,"_path":236},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":238,"_path":239},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":241,"_path":242},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":244,"_path":245},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":247,"_path":248},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":250,"_path":251},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":253,"_path":254},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":256,"_path":257},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":259,"_path":260},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":262,"_path":263},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":177,"_path":178},{"title":266,"_path":267,"children":268},"Live Hygraph","/videos/live-hygraph",[269,272,275,278,281,284,287,290,293,296,299,302,305,308,311,314],{"title":270,"_path":271},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":273,"_path":274},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":276,"_path":277},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":279,"_path":280},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":282,"_path":283},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":285,"_path":286},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":288,"_path":289},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":291,"_path":292},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":294,"_path":295},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":297,"_path":298},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":300,"_path":301},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":303,"_path":304},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":306,"_path":307},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":309,"_path":310},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":312,"_path":313},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":315,"_path":316},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":318,"_path":319,"children":320},"Live Uniform","/videos/live-uniform",[321,324,327,330,333,336,339,342,345,348,351,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417],{"title":322,"_path":323},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":325,"_path":326},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":328,"_path":329},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":331,"_path":332},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":334,"_path":335},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":337,"_path":338},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":340,"_path":341},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":343,"_path":344},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":346,"_path":347},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":349,"_path":350},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":352,"_path":353},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":355,"_path":356},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":358,"_path":359},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":361,"_path":362},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":364,"_path":365},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":367,"_path":368},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":370,"_path":371},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":373,"_path":374},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":376,"_path":377},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":379,"_path":380},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":382,"_path":383},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":385,"_path":386},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":388,"_path":389},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":391,"_path":392},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":394,"_path":395},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":397,"_path":398},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":400,"_path":401},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":403,"_path":404},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":406,"_path":407},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":409,"_path":410},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":412,"_path":413},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":415,"_path":416},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":418,"_path":419},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":421,"_path":422,"children":423},"Misc Streams","/videos/misc-streams",[424,427,430,433,435,437,440],{"title":425,"_path":426},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":428,"_path":429},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":431,"_path":432},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":415,"_path":434},"/videos/misc-streams/003-jvgiaotcerq",{"title":406,"_path":436},"/videos/misc-streams/004-ekut1koa2n8",{"title":438,"_path":439},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":441,"_path":442},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":444,"_path":445,"children":446},"Mp","/videos/mp",[447,450,453,456,459,462],{"title":448,"_path":449},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":451,"_path":452},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":454,"_path":455},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":457,"_path":458},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":460,"_path":461},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":463,"_path":464},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":466,"_path":467,"children":468},"Tim","/videos/tim",[469,471,474,477,480,483,486,489,492,495,498,501,504,507,510,513,516,519,521,523,526,529,532,535,538,541,544,547,550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790],{"title":188,"_path":470},"/videos/tim/000-mvq-_s20ndk",{"title":472,"_path":473},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":475,"_path":476},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":478,"_path":479},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":481,"_path":482},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":484,"_path":485},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":487,"_path":488},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":490,"_path":491},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":493,"_path":494},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":496,"_path":497},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":499,"_path":500},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":502,"_path":503},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":505,"_path":506},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":508,"_path":509},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":511,"_path":512},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":514,"_path":515},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":517,"_path":518},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":191,"_path":520},"/videos/tim/017-m0mrligs6i0",{"title":185,"_path":522},"/videos/tim/018-hhpitreyobi",{"title":524,"_path":525},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":527,"_path":528},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":530,"_path":531},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":533,"_path":534},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":536,"_path":537},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":539,"_path":540},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":542,"_path":543},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":545,"_path":546},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":548,"_path":549},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":551,"_path":552},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":554,"_path":555},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":557,"_path":558},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":560,"_path":561},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":563,"_path":564},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":566,"_path":567},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":569,"_path":570},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":572,"_path":573},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":575,"_path":576},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":578,"_path":579},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":581,"_path":582},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":584,"_path":585},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":587,"_path":588},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":590,"_path":591},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":593,"_path":594},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":596,"_path":597},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":599,"_path":600},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":602,"_path":603},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":605,"_path":606},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":608,"_path":609},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":611,"_path":612},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":614,"_path":615},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":617,"_path":618},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":620,"_path":621},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":623,"_path":624},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":626,"_path":627},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":629,"_path":630},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":632,"_path":633},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":635,"_path":636},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":638,"_path":639},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":641,"_path":642},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":644,"_path":645},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":647,"_path":648},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":650,"_path":651},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":653,"_path":654},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":656,"_path":657},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":659,"_path":660},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":662,"_path":663},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":665,"_path":666},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":668,"_path":669},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":671,"_path":672},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":674,"_path":675},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":677,"_path":678},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":680,"_path":681},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":683,"_path":684},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":686,"_path":687},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":689,"_path":690},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":692,"_path":693},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":695,"_path":696},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":698,"_path":699},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":701,"_path":702},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":704,"_path":705},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":707,"_path":708},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":710,"_path":711},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":713,"_path":714},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":716,"_path":717},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":719,"_path":720},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":722,"_path":723},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":725,"_path":726},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":728,"_path":729},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":731,"_path":732},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":734,"_path":735},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":737,"_path":738},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":740,"_path":741},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":743,"_path":744},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":746,"_path":747},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":749,"_path":750},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":752,"_path":753},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":755,"_path":756},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":758,"_path":759},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":761,"_path":762},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":764,"_path":765},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":767,"_path":768},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":770,"_path":771},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":773,"_path":774},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":776,"_path":777},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":779,"_path":780},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":782,"_path":783},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":785,"_path":786},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":788,"_path":789},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":791,"_path":792},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":794,"_path":795,"children":796},"Uniform","/videos/uniform",[797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965],{"title":798,"_path":799},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":801,"_path":802},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":804,"_path":805},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":807,"_path":808},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":810,"_path":811},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":813,"_path":814},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":816,"_path":817},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":819,"_path":820},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":822,"_path":823},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":825,"_path":826},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":828,"_path":829},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":831,"_path":832},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":834,"_path":835},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":837,"_path":838},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":840,"_path":841},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":843,"_path":844},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":846,"_path":847},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":849,"_path":850},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":852,"_path":853},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":855,"_path":856},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":858,"_path":859},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":861,"_path":862},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":864,"_path":865},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":867,"_path":868},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":870,"_path":871},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":873,"_path":874},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":876,"_path":877},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":879,"_path":880},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":882,"_path":883},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":885,"_path":886},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":888,"_path":889},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":891,"_path":892},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":894,"_path":895},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":897,"_path":898},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":900,"_path":901},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":903,"_path":904},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":906,"_path":907},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":909,"_path":910},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":912,"_path":913},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":915,"_path":916},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":918,"_path":919},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":921,"_path":922},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":924,"_path":925},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":927,"_path":928},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":930,"_path":931},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":933,"_path":934},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":936,"_path":937},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":939,"_path":940},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":942,"_path":943},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":945,"_path":946},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":948,"_path":949},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":951,"_path":952},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":954,"_path":955},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":957,"_path":958},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":960,"_path":961},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":963,"_path":964},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":966,"_path":967},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":969,"_path":970,"children":971},"Writing","/writing",[972,975,976,979,982,985,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040],{"title":973,"_path":974},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":8,"_path":4},{"title":977,"_path":978},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":980,"_path":981},"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":983,"_path":984},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":969,"_path":970},{"title":987,"_path":988},"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":990,"_path":991},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":993,"_path":994},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":996,"_path":997},"My Fitness Story","/writing/my-fitness-story",{"title":999,"_path":1000},"New job alert!","/writing/new-job-alert",{"title":1002,"_path":1003},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1005,"_path":1006},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1008,"_path":1009},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1011,"_path":1012},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1014,"_path":1015},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1017,"_path":1018},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1020,"_path":1021},"The MACH monolith","/writing/the-mach-monolith",{"title":1023,"_path":1024},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1026,"_path":1027},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1029,"_path":1030},"This is headless 2.0","/writing/this-is-headless-20",{"title":1032,"_path":1033},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1035,"_path":1036},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1038,"_path":1039},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1041,"_path":1042},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1044,"_path":1045,"children":1046},"Speaking","/speaking",[1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1227,1230,1233,1236,1239,1242,1245,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278],{"title":1048,"_path":1049},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1051,"_path":1052},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1054,"_path":1055},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1057,"_path":1058},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1060,"_path":1061},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1063,"_path":1064},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1066,"_path":1067},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1069,"_path":1070},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1072,"_path":1073},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1075,"_path":1076},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1078,"_path":1079},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1081,"_path":1082},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1084,"_path":1085},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1087,"_path":1088},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1090,"_path":1091},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1093,"_path":1094},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1096,"_path":1097},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1099,"_path":1100},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1102,"_path":1103},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1105,"_path":1106},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1108,"_path":1109},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1111,"_path":1112},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1114,"_path":1115},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1117,"_path":1118},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1120,"_path":1121},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1123,"_path":1124},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1126,"_path":1127},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1129,"_path":1130},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1132,"_path":1133},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1135,"_path":1136},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1138,"_path":1139},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1141,"_path":1142},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1144,"_path":1145},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1147,"_path":1148},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1150,"_path":1151},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1153,"_path":1154},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1156,"_path":1157},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1159,"_path":1160},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1162,"_path":1163},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1165,"_path":1166},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1168,"_path":1169},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1171,"_path":1172},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1174,"_path":1175},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1177,"_path":1178},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1180,"_path":1181},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1183,"_path":1184},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1186,"_path":1187},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1189,"_path":1190},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1192,"_path":1193},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1195,"_path":1196},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1198,"_path":1199},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1201,"_path":1202},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1204,"_path":1205},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1207,"_path":1208},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1210,"_path":1211},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1213,"_path":1214},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1216,"_path":1217},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1219,"_path":1220},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1222,"_path":1223},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1225,"_path":1226},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1228,"_path":1229},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1231,"_path":1232},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1234,"_path":1235},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1237,"_path":1238},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1240,"_path":1241},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1243,"_path":1244},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1246,"_path":1247},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1249,"_path":1250},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1252,"_path":1253},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1255,"_path":1256},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1258,"_path":1259},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1261,"_path":1262},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1264,"_path":1265},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1267,"_path":1268},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1270,"_path":1271},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1273,"_path":1274},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1276,"_path":1277},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1044,"_path":1045},{"title":1280,"_path":1281},"live streams","/livestreams",{"title":1283,"_path":1284},"press kit","/presskit",{"title":1286,"_path":1287},"alive and kicking","/alive-and-kicking",1718484379843] \ No newline at end of file diff --git a/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform/index.html b/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform/index.html deleted file mode 100644 index 57a1676c..00000000 --- a/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - -Fast, personalized pages with Vercel Edge Middleware and Uniform - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Fast, personalized pages with Vercel Edge Middleware and Uniform

Mar 18, 2023 at https://uniform.dev/blogs/personalization/blazing-fast-personalized-pages-with-vercel-edge-middleware-and-uniform

To maintain an engaging relationship with your audience and increase conversions to your site, you need personalization. However, creating personalized experiences is technically challenging. Most personalization techniques involve dynamic rendering and an origin server that holds personalization rules for end-users—a slow approach that often negates the conversions gained through personalization.

Among the many moving parts to consider, performance and scalability are tough nuts to crack. Fortunately, companies like Vercel, which recently released Edge Middleware, make those problems readily solvable for developers. With Vercel in place, you only need to choose the right tech to personalize at the CDN edge without having to grapple with the one thing that slows things down: the origin server.

The benefits of edge

Vercel offers familiar tech to developers: it’s all JavaScript based. With Edge Middleware, developers have the tools to make great things happen that they could not before. All the dynamic tasks that typically occur on an origin server can now happen near end-users, leading to faster page loads and automatic scaling out of the box. Not only that, Edge Middleware have user data that’s handy for personalization: country, region, and the device in use.

The personalization process at the edge

By eliminating the origin server that is typically far away from end-users and bringing the dynamic rendering closer with Edge Middleware, you can personalize with high performance and in a decentralized manner. The only way to personalize without a central brain that knows all the personalization rules is to bring that brain into the software as a first-party tool. This is how that works:

  1. Create and store the configuration rules, i.e., all the criteria for personalization, in the codebase as a manifest JSON file at build time.
  2. Store variations of the personalized content in the codebase at build time. Since a headless CMS is generally in use, those variations are tiny JSON models in the form of components.
  3. The Edge Middleware has a tracker that monitors user behaviors, which are signals that users give off by doing something on the site. The Edge Middleware awards a score to the personalization criteria configured in step 1. 
  4. The tracker automatically creates a profile of user actions and, based on the scores awarded against the various criteria, displays the right content.
  5. You can render the content via the Edge Middleware or in the front end at hydration time.

The above approach to personalization is how Uniform Context works. Combining Edge Middleware rendering of personalized content with JavaScript hydration for subsequent page loads renders highly dynamic pages within ~50 milliseconds only. The approach is to initially render all the pages statically (SSG/Jamstack) and ensure that the Edge Middleware knows which parts it can personalize. While serving a page, the Edge Middleware checks if personalization is needed and, if so, fills the identified components with the correct personalized content.

uniform-vercel-edge-middleware

Another benefit of the Vercel edge is that at the edge level, the CDN knows a lot about the end-users: their location, city, device, browser version, etc. Thus, Uniform Context can prepersonalize pages with Edge Middleware according to the location or device information from the Vercel CDN.

Want to try that out for yourself? You’ll find all the details in Uniform’s documentation on Vercel’s edge-side personalization.

Conclusion

To recap, by combining Uniform Context on Edge Middleware with statically rendered pages (SSG/Jamstack), you can create highly dynamic, personalized pages that load in less than a minute. In the past, Uniform offered dynamic personalization features through Vercel ESI. Edge Middleware now gives you a much more flexible and intuitive model for implementing personalization at scale. 

- \ No newline at end of file diff --git a/writing/how-to-dynamically-stream-video/_payload.json b/writing/how-to-dynamically-stream-video/_payload.json deleted file mode 100644 index aa9ae94a..00000000 --- a/writing/how-to-dynamically-stream-video/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1614},["Reactive",2],{"content-query-FyOFepZLWC":3,"content-navigation-8C37fagqQL":498},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":19,"body":20,"_type":493,"_id":494,"_source":495,"_file":496,"_extension":497},"/writing/how-to-dynamically-stream-video","writing",false,"","How to dynamically stream video","Build it yourself or use Cloudinary Dynamic video streaming is a video delivery technique...",1406138,"how-to-dynamically-stream-video","2023-03-18T21:56:45Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wx2ix9t60eajoccgjh7.png","https://dev.to/timbenniks/how-to-dynamically-stream-video-135f",[16,17,18],"video","cloudinary","streaming",22300,{"type":21,"children":22,"toc":484},"root",[23,32,38,43,48,53,60,65,70,77,82,87,92,98,104,109,115,137,143,148,161,167,172,198,207,212,221,229,237,242,250,255,263,268,284,292,313,321,335,343,348,354,359,382,396,401,409,414,419,427,432,440,454,459,473],{"type":24,"tag":25,"props":26,"children":28},"element","h2",{"id":27},"build-it-yourself-or-use-cloudinary",[29],{"type":30,"value":31},"text","Build it yourself or use Cloudinary",{"type":24,"tag":33,"props":34,"children":35},"p",{},[36],{"type":30,"value":37},"Dynamic video streaming is a video delivery technique that adjusts the quality of a video stream in real time. It does this according to detected bandwidth and CPU capacity of a user. In this article we will explore the two techniques which allow you to dynamically stream video.",{"type":24,"tag":33,"props":39,"children":40},{},[41],{"type":30,"value":42},"HLS and MPEG-DASH are the two most popular formats out there. Dynamic or adaptive video delivery requires outputting a video in different quality settings along with some additional files. Both HLS and MPEG-DASH have different approaches to the problem.",{"type":24,"tag":33,"props":44,"children":45},{},[46],{"type":30,"value":47},"The process of making adaptive streaming work is complex. Most services out there do not provide an end-to-end solution for this and the ones that do a are quite costly. The adaptive video streaming paradigm is not one that many companies have conquered as it requires specific knowledge and access to hardware. There is a reason we don't have many competitors for Netflix and YouTube. Adaptive streaming of video is hard.",{"type":24,"tag":33,"props":49,"children":50},{},[51],{"type":30,"value":52},"First we’ll go into how adaptive streaming works and then I’ll explain exactly how to do this yourself. It’s much easier than you think once you have the knowledge and the right third party tool to do the heavy lifting.",{"type":24,"tag":54,"props":55,"children":57},"h3",{"id":56},"how-adaptive-video-delivery-works",[58],{"type":30,"value":59},"How adaptive video delivery works",{"type":24,"tag":33,"props":61,"children":62},{},[63],{"type":30,"value":64},"The video stream adapts itself based on a set of rules. The user’s bandwidth, CPU load and video player resolution on the page. To be able to stream adaptively you need to be able to stream different versions of a video. Each variant is of different quality, has a different bitrate and potentially has a different codec or resolution. Think of it as progressive enhancement in web development. The simplest stream always works and based on the features you have (in this case, CPU power, bandwidth, resolution), you get a nicer looking video stream.",{"type":24,"tag":33,"props":66,"children":67},{},[68],{"type":30,"value":69},"Each adaptive video is also joined by an index file that specifies predefined segments of the video. In the HLS standard these segments are usually 10 seconds long where in MPEG-DASH we use 1 second. There is also a master playlist that points to the available video variations with additional information about each one.",{"type":24,"tag":71,"props":72,"children":74},"h4",{"id":73},"an-audio-playlist-adaptation",[75],{"type":30,"value":76},"An audio playlist adaptation",{"type":24,"tag":33,"props":78,"children":79},{},[80],{"type":30,"value":81},"It’s pretty cool that dynamic video streaming is based on the spec from the M3U8 audio playlist. M3U8 was originally designed for audio files, such as MP3, but nowadays it is commonly used to point media players to audio and video sources.",{"type":24,"tag":33,"props":83,"children":84},{},[85],{"type":30,"value":86},"An adaptive streaming video player uses the playlist information to decide which of the available video variations fits the user’s network conditions, CPU load or resolution best. It can switch to another source at each 10 second segment (these segments can also be shorter, see examples below) if the network conditions change.",{"type":24,"tag":33,"props":88,"children":89},{},[90],{"type":30,"value":91},"This approach works well to minimise bandwidth use and optimise it for a smooth playback for everybody who watches the video stream. It can also be used the other way around, if the streaming service is completely overloaded it can send a video stream with a smaller bitrate or resolution to the viewer.",{"type":24,"tag":54,"props":93,"children":95},{"id":94},"about-hls-and-mpeg-dash",[96],{"type":30,"value":97},"About HLS and MPEG-DASH",{"type":24,"tag":71,"props":99,"children":101},{"id":100},"hls",[102],{"type":30,"value":103},"HLS",{"type":24,"tag":33,"props":105,"children":106},{},[107],{"type":30,"value":108},"HLS was originally created by Apple to provide video for the iPhone, but now it’s a common format used across HTML5 web applications. You’ll need to encode your video with H.264 or HEVC/H.265 codecs, which can be decoded by all major browsers. With HLS, the video is chopped up into 10 second intervals and sent to the user.",{"type":24,"tag":71,"props":110,"children":112},{"id":111},"mpeg-dash",[113],{"type":30,"value":114},"MPEG-DASH",{"type":24,"tag":33,"props":116,"children":117},{},[118,120,127,129,135],{"type":30,"value":119},"MPEG-DASH is the latest HLS competitor. It was originally created to be an alternative to HLS. It has a few advantages over HLS, mainly because it is open-source. This means the media content publisher community as a whole can contribute to its changes and updates. MPEG-DASH is globally supported and codec agnostic, which means that you can encode video without worrying about codec support. It has lower latency than HLS. It's playlist file is an ",{"type":24,"tag":121,"props":122,"children":124},"code",{"className":123},[],[125],{"type":30,"value":126},".MPD",{"type":30,"value":128},", which is an ",{"type":24,"tag":121,"props":130,"children":132},{"className":131},[],[133],{"type":30,"value":134},"XML",{"type":30,"value":136}," format.",{"type":24,"tag":54,"props":138,"children":140},{"id":139},"doing-it-yourself",[141],{"type":30,"value":142},"Doing it yourself",{"type":24,"tag":33,"props":144,"children":145},{},[146],{"type":30,"value":147},"To deliver videos using adaptive streaming you must generate multiple video versions, add an index file per variant and add a master playlist. The formats and encoding for HLS and MPEG-DASH are different for each of these files. If you want to stream using both HLS and MPEG-DASH formats you need to double the effort for every video you want to deliver. Additionally, for MPEG-DASH, the best practice is to deliver the audio and video separately. This stuff is complex and time consuming.",{"type":24,"tag":33,"props":149,"children":150},{},[151,153,159],{"type":30,"value":152},"If you are a developer who likes to get into the nitty gritty of ",{"type":24,"tag":121,"props":154,"children":156},{"className":155},[],[157],{"type":30,"value":158},"ffmpeg",{"type":30,"value":160}," you can deep dive and create all sources for HLS and MPEG-DASH yourself.",{"type":24,"tag":71,"props":162,"children":164},{"id":163},"diy-steps-for-mpeg-dash",[165],{"type":30,"value":166},"DIY steps for MPEG-DASH",{"type":24,"tag":33,"props":168,"children":169},{},[170],{"type":30,"value":171},"MPEG-DASH is simplest to do yourself. Let's give it a go!",{"type":24,"tag":33,"props":173,"children":174},{},[175,177,183,185],{"type":30,"value":176},"Imagine we have a video file called ",{"type":24,"tag":121,"props":178,"children":180},{"className":179},[],[181],{"type":30,"value":182},"video.mp4",{"type":30,"value":184},". To make sure we can adaptively stream the video we need to create video files with different bitrates and an audio file. ",{"type":24,"tag":186,"props":187,"children":188},"em",{},[189,191,196],{"type":30,"value":190},"Beware that this is a simplified version for illustration purposes. In real life ",{"type":24,"tag":121,"props":192,"children":194},{"className":193},[],[195],{"type":30,"value":158},{"type":30,"value":197}," has many quirks based what video you give it.",{"type":24,"tag":33,"props":199,"children":200},{},[201],{"type":24,"tag":202,"props":203,"children":204},"strong",{},[205],{"type":30,"value":206},"Step 1: extract the audio",{"type":24,"tag":33,"props":208,"children":209},{},[210],{"type":30,"value":211},"Extract the audio track:",{"type":24,"tag":213,"props":214,"children":216},"pre",{"code":215},"$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4\n\n",[217],{"type":24,"tag":121,"props":218,"children":219},{"__ignoreMap":7},[220],{"type":30,"value":215},{"type":24,"tag":33,"props":222,"children":223},{},[224],{"type":24,"tag":202,"props":225,"children":226},{},[227],{"type":30,"value":228},"Step 2: extract and re-encode the video track",{"type":24,"tag":213,"props":230,"children":232},{"code":231},"$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4\n\n$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4\n",[233],{"type":24,"tag":121,"props":234,"children":235},{"__ignoreMap":7},[236],{"type":30,"value":231},{"type":24,"tag":33,"props":238,"children":239},{},[240],{"type":30,"value":241},"The video is encoded using H.264 codec. This forces to have a key frame every 24 frames, in this case, every second. This allows the video to be segmented in chunks of 1 second. The bitrate is evaluated according to the buffer size, so in order to be sure the encoding is close to the requested rate, the buffer size should be lower than the bitrate.",{"type":24,"tag":33,"props":243,"children":244},{},[245],{"type":24,"tag":202,"props":246,"children":247},{},[248],{"type":30,"value":249},"Step 3: generate the MPD file",{"type":24,"tag":33,"props":251,"children":252},{},[253],{"type":30,"value":254},"We now have one audio file and five video files. A Media Presentation Description (MPD) file has to be created. An MPD file functions as an index referencing the different video and audio tracks with their bitrate, size and how the segments are ordered.",{"type":24,"tag":213,"props":256,"children":258},{"code":257},"$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4\n",[259],{"type":24,"tag":121,"props":260,"children":261},{"__ignoreMap":7},[262],{"type":30,"value":257},{"type":24,"tag":33,"props":264,"children":265},{},[266],{"type":30,"value":267},"The -dash option sets the duration of each segment to one second.",{"type":24,"tag":33,"props":269,"children":270},{},[271,273,282],{"type":30,"value":272},"Next to preparing adaptive streaming content MP4Box can do a lot more. So much more in fact that it's best to just read more ",{"type":24,"tag":274,"props":275,"children":279},"a",{"href":276,"rel":277},"https://github.com/gpac/gpac/wiki/MP4Box",[278],"nofollow",[280],{"type":30,"value":281},"here",{"type":30,"value":283},".",{"type":24,"tag":33,"props":285,"children":286},{},[287],{"type":24,"tag":202,"props":288,"children":289},{},[290],{"type":30,"value":291},"Step 4: configure your webserver",{"type":24,"tag":33,"props":293,"children":294},{},[295,297,303,305,311],{"type":30,"value":296},"Make sure your webserver understands ",{"type":24,"tag":121,"props":298,"children":300},{"className":299},[],[301],{"type":30,"value":302},".mpd",{"type":30,"value":304}," files by adding the following mime type: ",{"type":24,"tag":121,"props":306,"children":308},{"className":307},[],[309],{"type":30,"value":310},"application/dash+xml",{"type":30,"value":312}," to its config.",{"type":24,"tag":33,"props":314,"children":315},{},[316],{"type":24,"tag":202,"props":317,"children":318},{},[319],{"type":30,"value":320},"Step 5: make sure your video player understands adaptive streaming",{"type":24,"tag":33,"props":322,"children":323},{},[324,326,333],{"type":30,"value":325},"Implement ",{"type":24,"tag":274,"props":327,"children":330},{"href":328,"rel":329},"https://github.com/Dash-Industry-Forum/dash.js",[278],[331],{"type":30,"value":332},"dash.js",{"type":30,"value":334}," into your video player or build a custom video player around dash.js.",{"type":24,"tag":33,"props":336,"children":337},{},[338],{"type":24,"tag":202,"props":339,"children":340},{},[341],{"type":30,"value":342},"Concluding",{"type":24,"tag":33,"props":344,"children":345},{},[346],{"type":30,"value":347},"Obviously, doing this at scale or as a slightly less technical user this process is not realistic. You'll want to automate this completely.",{"type":24,"tag":71,"props":349,"children":351},{"id":350},"enter-cloudinary",[352],{"type":30,"value":353},"Enter: Cloudinary",{"type":24,"tag":33,"props":355,"children":356},{},[357],{"type":30,"value":358},"Next to being market leader in image delivery Cloudinary also provides features for video: from dynamic streaming profiles to cropping the subject perfectly on different video ratios. They even use AI to generate captions for muted videos or meaningful previews.",{"type":24,"tag":33,"props":360,"children":361},{},[362,364,371,373,380],{"type":30,"value":363},"Today we are discussing the dynamic streaming service they offer. Cloudinary has created ",{"type":24,"tag":274,"props":365,"children":368},{"href":366,"rel":367},"https://cloudinary.com/documentation/video_manipulation_and_delivery#adaptive_bitrate_streaming_hls_and_mpeg_dash",[278],[369],{"type":30,"value":370},"smart pre-defined",{"type":30,"value":372}," streaming profiles to help you out. A streaming profile holds a set of video variation definitions with different qualities, bitrates, and codecs. For example, the one profile specifies 10 different variations ranging from extremely high quality to audio-only. You can also create ",{"type":24,"tag":274,"props":374,"children":377},{"href":375,"rel":376},"https://cloudinary.com/documentation/admin_api#adaptive_streaming_profiles",[278],[378],{"type":30,"value":379},"custom profiles",{"type":30,"value":381}," through their admin API.",{"type":24,"tag":33,"props":383,"children":384},{},[385,387,394],{"type":30,"value":386},"Once you have selected a profile, you upload your video file with an eager transformation that instructs the system to generate all the required files for the requested profile in either HLS or MPEG-DASH format. If you want to deliver both formats, add two ",{"type":24,"tag":274,"props":388,"children":391},{"href":389,"rel":390},"https://cloudinary.com/documentation/transformations_on_upload#eager_transformations",[278],[392],{"type":30,"value":393},"eager transformations",{"type":30,"value":395}," within your upload command.",{"type":24,"tag":33,"props":397,"children":398},{},[399],{"type":30,"value":400},"This upload code is for the Node.js SDK.",{"type":24,"tag":213,"props":402,"children":404},{"code":403},"// This file is to be used in node.js and is for uploading your video file to Cloudinary.\n// This will not work in codesandbox and is here only for example purposes.\n// Run locally like: `node upload.js`\n\nconst cloudinary = require('cloudinary').v2;\n\n// Create a Cloudinary account and fill out your credentials\ncloudinary.config({\n cloud_name: '',\n api_key: '',\n api_secret: '',\n});\n\n// Upload your file with the Cloudinary Uploader API\ncloudinary.uploader\n .upload('\u003Cyour-video.mp4>', {\n resource_type: 'video',\n eager: [\n // Specify what streaming profile you want to use\n { format: 'm3u8', streaming_profile: '4k' },\n { format: 'mpd', streaming_profile: '4k' },\n ],\n eager_async: true,\n eager_notification_url: '\u003Cyour-notify-url>',\n public_id: '\u003Cyour-public-id>', // This will be the public ID of the video\n })\n .then((video) => {\n console.log('File Uploaded');\n console.log(video.public_id);\n })\n .catch((error) => {\n console.log('File Upload Error');\n console.log(error);\n });\n",[405],{"type":24,"tag":121,"props":406,"children":407},{"__ignoreMap":7},[408],{"type":30,"value":403},{"type":24,"tag":33,"props":410,"children":411},{},[412],{"type":30,"value":413},"Now that the file has been uploaded, it generates a bunch of different video and audio streams. These streams are represented in the playlist files below.",{"type":24,"tag":33,"props":415,"children":416},{},[417],{"type":30,"value":418},"For the HLS version of the video this is what comes out as the m3u8 playlist file:",{"type":24,"tag":213,"props":420,"children":422},{"code":421},"#EXTM3U\n\n#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=3840x2160\n/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=2560x1440\n/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS=\"avc1.640028,mp4a.40.2\",RESOLUTION=1920x1080\n/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=1280x720\n/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS=\"avc1.4D401F,mp4a.40.2\",RESOLUTION=960x540\n/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=640x360\n/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=480x270\n/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n\n#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS=\"avc1.42C01E,mp4a.40.2\",RESOLUTION=320x180\n/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8\n",[423],{"type":24,"tag":121,"props":424,"children":425},{"__ignoreMap":7},[426],{"type":30,"value":421},{"type":24,"tag":33,"props":428,"children":429},{},[430],{"type":30,"value":431},"For the MPEG-DASH version of the video this is what comes out as the MPD playlist file (I have shortened the file for readability):",{"type":24,"tag":213,"props":433,"children":435},{"code":434},"\u003CMPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\" minBufferTime=\"PT1.500S\" type=\"static\" mediaPresentationDuration=\"PT0H0M28.800S\" maxSegmentDuration=\"PT0H0M2.800S\" profiles=\"urn:mpeg:dash:profile:full:2011\">\n \u003CPeriod duration=\"PT0H0M28.800S\">\n \u003CAdaptationSet segmentAlignment=\"true\" maxWidth=\"1280\" maxHeight=\"720\" maxFrameRate=\"25\" par=\"16:9\" lang=\"und\">\n \u003CRepresentation id=\"1\" mimeType=\"video/mp4\" codecs=\"avc1.42C01E\" width=\"320\" height=\"180\" frameRate=\"25\" sar=\"1:1\" startWithSAP=\"1\" bandwidth=\"188841\">\n \u003CBaseURL>/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\u003C/BaseURL>\n \u003CSegmentList timescale=\"12800\" duration=\"25600\">\n \u003CInitialization range=\"0-909\" />\n \u003CSegmentURL mediaRange=\"910-48949\" indexRange=\"910-953\" />\n \u003CSegmentURL mediaRange=\"48950-90844\" indexRange=\"48950-48993\" />\n \u003CSegmentURL mediaRange=\"90845-134433\" indexRange=\"90845-90888\" />\n \u003CSegmentURL mediaRange=\"134434-177434\" indexRange=\"134434-134477\" />\n \u003CSegmentURL mediaRange=\"177435-229116\" indexRange=\"177435-177478\" />\n \u003CSegmentURL mediaRange=\"229117-280431\" indexRange=\"229117-229160\" />\n \u003CSegmentURL mediaRange=\"280432-328048\" indexRange=\"280432-280475\" />\n \u003CSegmentURL mediaRange=\"328049-376769\" indexRange=\"328049-328092\" />\n \u003CSegmentURL mediaRange=\"376770-426815\" indexRange=\"376770-376813\" />\n \u003CSegmentURL mediaRange=\"426816-478009\" indexRange=\"426816-426859\" />\n \u003CSegmentURL mediaRange=\"478010-528551\" indexRange=\"478010-478053\" />\n \u003CSegmentURL mediaRange=\"528552-572601\" indexRange=\"528552-528595\" />\n \u003CSegmentURL mediaRange=\"572602-620003\" indexRange=\"572602-572645\" />\n \u003CSegmentURL mediaRange=\"620004-679828\" indexRange=\"620004-620047\" />\n \u003C/SegmentList>\n \u003C/Representation>\n \u003CRepresentation id=\"2\" mimeType=\"video/mp4\" codecs=\"avc1.42C01E\" width=\"480\" height=\"270\" frameRate=\"25\" sar=\"1:1\" startWithSAP=\"1\" bandwidth=\"346668\">\n \u003CBaseURL>/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv\u003C/BaseURL>\n \u003CSegmentList timescale=\"12800\" duration=\"25600\">\n \u003CInitialization range=\"0-909\" />\n \u003CSegmentURL mediaRange=\"910-84012\" indexRange=\"910-953\" />\n \u003CSegmentURL mediaRange=\"84013-157030\" indexRange=\"84013-84056\" />\n \u003CSegmentURL mediaRange=\"157031-233498\" indexRange=\"157031-157074\" />\n \u003CSegmentURL mediaRange=\"233499-307813\" indexRange=\"233499-233542\" />\n \u003CSegmentURL mediaRange=\"307814-397973\" indexRange=\"307814-307857\" />\n \u003CSegmentURL mediaRange=\"397974-486089\" indexRange=\"397974-398017\" />\n \u003CSegmentURL mediaRange=\"486090-566671\" indexRange=\"486090-486133\" />\n \u003CSegmentURL mediaRange=\"566672-651620\" indexRange=\"566672-566715\" />\n \u003CSegmentURL mediaRange=\"651621-750051\" indexRange=\"651621-651664\" />\n \u003CSegmentURL mediaRange=\"750052-862906\" indexRange=\"750052-750095\" />\n \u003CSegmentURL mediaRange=\"862907-974846\" indexRange=\"862907-862950\" />\n \u003CSegmentURL mediaRange=\"974847-1059121\" indexRange=\"974847-974890\" />\n \u003CSegmentURL mediaRange=\"1059122-1143744\" indexRange=\"1059122-1059165\" />\n \u003CSegmentURL mediaRange=\"1143745-1248006\" indexRange=\"1143745-1143788\" />\n \u003C/SegmentList>\n \u003C/Representation>\n \u003CRepresentation id=\"3\" mimeType=\"video/mp4\" codecs=\"avc1.42C01E\" width=\"640\" height=\"360\" frameRate=\"25\" sar=\"1:1\" startWithSAP=\"1\" bandwidth=\"561940\">\n \u003C!-- ... and many more ... -->\n \u003C/AdaptationSet>\n \u003C/Period>\n\u003C/MPD>\n",[436],{"type":24,"tag":121,"props":437,"children":438},{"__ignoreMap":7},[439],{"type":30,"value":434},{"type":24,"tag":33,"props":441,"children":442},{},[443,445,452],{"type":30,"value":444},"Now that we have the playlist files and all the video streams we can either build our own fancy video player that understands dynamic streaming or we go for the ",{"type":24,"tag":274,"props":446,"children":449},{"href":447,"rel":448},"https://cloudinary.com/documentation/cloudinary_video_player",[278],[450],{"type":30,"value":451},"Cloudinary player",{"type":30,"value":453},". In this case I suggest we use the Cloudinary player as it works out of the box. Check out the code sandbox for a very simple vanilla JavaScript example of loading the player for both HLS and MPEG-DASH.",{"type":24,"tag":33,"props":455,"children":456},{},[457],{"type":30,"value":458},"Try throttling your connection and see the differences in quality. To do this, open your web developer tools (assuming you use chrome), open the network tab and select a different connection type in the dropdown next to the \"preserve log\" and \"Disable cache\" checkboxes.",{"type":24,"tag":33,"props":460,"children":461},{},[462,464,471],{"type":30,"value":463},"The Cloudinary video player is based on ",{"type":24,"tag":274,"props":465,"children":468},{"href":466,"rel":467},"https://videojs.com/",[278],[469],{"type":30,"value":470},"videojs",{"type":30,"value":472}," and has both the HLS and MPEG-DASH plugins installed by default. In the code sandbox below you'll see both the HLS and the MPEG-DASH version. Beware that the HLS version has better support for showing different statistics than the MPEG-DASH version.",{"type":24,"tag":33,"props":474,"children":475},{},[476,478],{"type":30,"value":477},"See the code here: ",{"type":24,"tag":274,"props":479,"children":482},{"href":480,"rel":481},"https://codesandbox.io/s/white-cherry-g4ixt",[278],[483],{"type":30,"value":480},{"title":7,"searchDepth":485,"depth":485,"links":486},2,[487],{"id":27,"depth":485,"text":31,"children":488},[489,491,492],{"id":56,"depth":490,"text":59},3,{"id":94,"depth":490,"text":97},{"id":139,"depth":490,"text":142},"markdown","content:4.writing:how-to-dynamically-stream-video.md","content","4.writing/how-to-dynamically-stream-video.md","md",[499,502,1294,1369,1605,1608,1611],{"title":500,"_path":501},"About","/about",{"title":503,"_path":504,"children":505},"videos","/videos",[506,525,544,590,591,643,746,769,791,1119],{"title":507,"_path":508,"children":509},"Alive And Kicking","/videos/alive-and-kicking",[510,513,516,519,522],{"title":511,"_path":512},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":514,"_path":515},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":517,"_path":518},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":520,"_path":521},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":523,"_path":524},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":526,"_path":527,"children":528},"Headless Creator","/videos/headless-creator",[529,532,535,538,541],{"title":530,"_path":531},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":533,"_path":534},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":536,"_path":537},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":539,"_path":540},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":542,"_path":543},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":545,"_path":546,"children":547},"Hygraph","/videos/hygraph",[548,551,554,557,560,563,566,569,572,575,578,581,584,587],{"title":549,"_path":550},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":552,"_path":553},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":555,"_path":556},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":558,"_path":559},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":561,"_path":562},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":564,"_path":565},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":567,"_path":568},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":570,"_path":571},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":573,"_path":574},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":576,"_path":577},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":579,"_path":580},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":582,"_path":583},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":585,"_path":586},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":588,"_path":589},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":503,"_path":504},{"title":592,"_path":593,"children":594},"Live Hygraph","/videos/live-hygraph",[595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640],{"title":596,"_path":597},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":599,"_path":600},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":602,"_path":603},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":605,"_path":606},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":608,"_path":609},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":611,"_path":612},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":614,"_path":615},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":617,"_path":618},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":620,"_path":621},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":623,"_path":624},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":626,"_path":627},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":629,"_path":630},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":632,"_path":633},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":635,"_path":636},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":638,"_path":639},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":641,"_path":642},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":644,"_path":645,"children":646},"Live Uniform","/videos/live-uniform",[647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743],{"title":648,"_path":649},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":651,"_path":652},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":654,"_path":655},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":657,"_path":658},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":660,"_path":661},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":663,"_path":664},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":666,"_path":667},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":669,"_path":670},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":672,"_path":673},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":675,"_path":676},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":678,"_path":679},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":681,"_path":682},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":684,"_path":685},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":687,"_path":688},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":690,"_path":691},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":693,"_path":694},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":696,"_path":697},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":699,"_path":700},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":702,"_path":703},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":705,"_path":706},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":708,"_path":709},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":711,"_path":712},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":714,"_path":715},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":717,"_path":718},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":720,"_path":721},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":723,"_path":724},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":726,"_path":727},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":729,"_path":730},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":732,"_path":733},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":735,"_path":736},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":738,"_path":739},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":741,"_path":742},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":744,"_path":745},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":747,"_path":748,"children":749},"Misc Streams","/videos/misc-streams",[750,753,756,759,761,763,766],{"title":751,"_path":752},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":754,"_path":755},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":757,"_path":758},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":741,"_path":760},"/videos/misc-streams/003-jvgiaotcerq",{"title":732,"_path":762},"/videos/misc-streams/004-ekut1koa2n8",{"title":764,"_path":765},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":767,"_path":768},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":770,"_path":771,"children":772},"Mp","/videos/mp",[773,776,779,782,785,788],{"title":774,"_path":775},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":777,"_path":778},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":780,"_path":781},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":783,"_path":784},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":786,"_path":787},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":789,"_path":790},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":792,"_path":793,"children":794},"Tim","/videos/tim",[795,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,847,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116],{"title":514,"_path":796},"/videos/tim/000-mvq-_s20ndk",{"title":798,"_path":799},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":801,"_path":802},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":804,"_path":805},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":807,"_path":808},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":810,"_path":811},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":813,"_path":814},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":816,"_path":817},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":819,"_path":820},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":822,"_path":823},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":825,"_path":826},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":828,"_path":829},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":831,"_path":832},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":834,"_path":835},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":837,"_path":838},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":840,"_path":841},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":843,"_path":844},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":517,"_path":846},"/videos/tim/017-m0mrligs6i0",{"title":511,"_path":848},"/videos/tim/018-hhpitreyobi",{"title":850,"_path":851},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":853,"_path":854},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":856,"_path":857},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":859,"_path":860},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":862,"_path":863},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":865,"_path":866},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":868,"_path":869},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":871,"_path":872},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":874,"_path":875},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":877,"_path":878},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":880,"_path":881},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":883,"_path":884},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":886,"_path":887},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":889,"_path":890},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":892,"_path":893},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":895,"_path":896},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":898,"_path":899},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":901,"_path":902},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":904,"_path":905},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":907,"_path":908},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":910,"_path":911},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":913,"_path":914},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":916,"_path":917},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":919,"_path":920},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":922,"_path":923},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":925,"_path":926},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":928,"_path":929},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":931,"_path":932},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":934,"_path":935},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":937,"_path":938},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":940,"_path":941},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":943,"_path":944},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":946,"_path":947},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":949,"_path":950},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":952,"_path":953},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":955,"_path":956},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":958,"_path":959},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":961,"_path":962},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":964,"_path":965},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":967,"_path":968},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":970,"_path":971},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":973,"_path":974},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":976,"_path":977},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":979,"_path":980},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":982,"_path":983},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":985,"_path":986},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":988,"_path":989},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":991,"_path":992},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":994,"_path":995},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":997,"_path":998},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":1000,"_path":1001},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":1003,"_path":1004},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":1006,"_path":1007},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":1009,"_path":1010},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":1012,"_path":1013},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":1015,"_path":1016},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":1018,"_path":1019},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":1021,"_path":1022},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":1024,"_path":1025},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":1027,"_path":1028},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":1030,"_path":1031},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":1033,"_path":1034},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":1036,"_path":1037},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":1039,"_path":1040},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":1042,"_path":1043},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":1045,"_path":1046},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":1048,"_path":1049},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":1051,"_path":1052},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":1054,"_path":1055},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":1057,"_path":1058},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":1060,"_path":1061},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":1063,"_path":1064},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":1066,"_path":1067},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":1069,"_path":1070},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":1072,"_path":1073},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":1075,"_path":1076},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":1078,"_path":1079},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":1081,"_path":1082},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":1084,"_path":1085},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":1087,"_path":1088},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":1090,"_path":1091},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":1093,"_path":1094},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":1096,"_path":1097},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":1099,"_path":1100},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":1102,"_path":1103},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":1105,"_path":1106},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":1108,"_path":1109},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":1111,"_path":1112},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":1114,"_path":1115},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":1117,"_path":1118},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":1120,"_path":1121,"children":1122},"Uniform","/videos/uniform",[1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291],{"title":1124,"_path":1125},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":1127,"_path":1128},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":1130,"_path":1131},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":1133,"_path":1134},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":1136,"_path":1137},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":1139,"_path":1140},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":1142,"_path":1143},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1145,"_path":1146},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1148,"_path":1149},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1151,"_path":1152},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1154,"_path":1155},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1157,"_path":1158},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1160,"_path":1161},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1163,"_path":1164},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1166,"_path":1167},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1169,"_path":1170},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1172,"_path":1173},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1175,"_path":1176},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1178,"_path":1179},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1181,"_path":1182},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1184,"_path":1185},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1187,"_path":1188},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1190,"_path":1191},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1193,"_path":1194},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1196,"_path":1197},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1199,"_path":1200},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1202,"_path":1203},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1205,"_path":1206},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1208,"_path":1209},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1211,"_path":1212},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1214,"_path":1215},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1217,"_path":1218},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1220,"_path":1221},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1223,"_path":1224},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1226,"_path":1227},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1229,"_path":1230},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1232,"_path":1233},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1235,"_path":1236},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1238,"_path":1239},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1241,"_path":1242},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1244,"_path":1245},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1247,"_path":1248},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1250,"_path":1251},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1253,"_path":1254},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1256,"_path":1257},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1259,"_path":1260},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1262,"_path":1263},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1265,"_path":1266},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1268,"_path":1269},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1271,"_path":1272},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1274,"_path":1275},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1277,"_path":1278},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1280,"_path":1281},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1283,"_path":1284},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1286,"_path":1287},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1289,"_path":1290},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1292,"_path":1293},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1295,"_path":1296,"children":1297},"Writing","/writing",[1298,1301,1304,1305,1308,1311,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366],{"title":1299,"_path":1300},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1302,"_path":1303},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":8,"_path":4},{"title":1306,"_path":1307},"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":1309,"_path":1310},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1295,"_path":1296},{"title":1313,"_path":1314},"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":1316,"_path":1317},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1319,"_path":1320},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1322,"_path":1323},"My Fitness Story","/writing/my-fitness-story",{"title":1325,"_path":1326},"New job alert!","/writing/new-job-alert",{"title":1328,"_path":1329},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1331,"_path":1332},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1334,"_path":1335},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1337,"_path":1338},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1340,"_path":1341},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1343,"_path":1344},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1346,"_path":1347},"The MACH monolith","/writing/the-mach-monolith",{"title":1349,"_path":1350},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1352,"_path":1353},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1355,"_path":1356},"This is headless 2.0","/writing/this-is-headless-20",{"title":1358,"_path":1359},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1361,"_path":1362},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1364,"_path":1365},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1367,"_path":1368},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1370,"_path":1371,"children":1372},"Speaking","/speaking",[1373,1376,1379,1382,1385,1388,1391,1394,1397,1400,1403,1406,1409,1412,1415,1418,1421,1424,1427,1430,1433,1436,1439,1442,1445,1448,1451,1454,1457,1460,1463,1466,1469,1472,1475,1478,1481,1484,1487,1490,1493,1496,1499,1502,1505,1508,1511,1514,1517,1520,1523,1526,1529,1532,1535,1538,1541,1544,1547,1550,1553,1556,1559,1562,1565,1568,1571,1574,1577,1580,1583,1586,1589,1592,1595,1598,1601,1604],{"title":1374,"_path":1375},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1377,"_path":1378},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1380,"_path":1381},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1383,"_path":1384},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1386,"_path":1387},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1389,"_path":1390},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1392,"_path":1393},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1395,"_path":1396},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1398,"_path":1399},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1401,"_path":1402},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1404,"_path":1405},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1407,"_path":1408},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1410,"_path":1411},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1413,"_path":1414},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1416,"_path":1417},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1419,"_path":1420},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1422,"_path":1423},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1425,"_path":1426},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1428,"_path":1429},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1431,"_path":1432},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1434,"_path":1435},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1437,"_path":1438},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1440,"_path":1441},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1443,"_path":1444},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1446,"_path":1447},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1449,"_path":1450},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1452,"_path":1453},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1455,"_path":1456},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1458,"_path":1459},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1461,"_path":1462},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1464,"_path":1465},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1467,"_path":1468},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1470,"_path":1471},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1473,"_path":1474},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1476,"_path":1477},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1479,"_path":1480},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1482,"_path":1483},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1485,"_path":1486},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1488,"_path":1489},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1491,"_path":1492},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1494,"_path":1495},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1497,"_path":1498},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1500,"_path":1501},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1503,"_path":1504},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1506,"_path":1507},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1509,"_path":1510},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1512,"_path":1513},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1515,"_path":1516},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1518,"_path":1519},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1521,"_path":1522},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1524,"_path":1525},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1527,"_path":1528},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1530,"_path":1531},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1533,"_path":1534},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1536,"_path":1537},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1539,"_path":1540},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1542,"_path":1543},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1545,"_path":1546},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1548,"_path":1549},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1551,"_path":1552},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1554,"_path":1555},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1557,"_path":1558},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1560,"_path":1561},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1563,"_path":1564},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1566,"_path":1567},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1569,"_path":1570},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1572,"_path":1573},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1575,"_path":1576},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1578,"_path":1579},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1581,"_path":1582},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1584,"_path":1585},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1587,"_path":1588},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1590,"_path":1591},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1593,"_path":1594},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1596,"_path":1597},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1599,"_path":1600},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1602,"_path":1603},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1370,"_path":1371},{"title":1606,"_path":1607},"live streams","/livestreams",{"title":1609,"_path":1610},"press kit","/presskit",{"title":1612,"_path":1613},"alive and kicking","/alive-and-kicking",1718484379616] \ No newline at end of file diff --git a/writing/how-to-dynamically-stream-video/index.html b/writing/how-to-dynamically-stream-video/index.html deleted file mode 100644 index 675b022d..00000000 --- a/writing/how-to-dynamically-stream-video/index.html +++ /dev/null @@ -1,206 +0,0 @@ - - -How to dynamically stream video - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

How to dynamically stream video

Mar 18, 2023 at https://dev.to/timbenniks/how-to-dynamically-stream-video-135f

Build it yourself or use Cloudinary

Dynamic video streaming is a video delivery technique that adjusts the quality of a video stream in real time. It does this according to detected bandwidth and CPU capacity of a user. In this article we will explore the two techniques which allow you to dynamically stream video.

HLS and MPEG-DASH are the two most popular formats out there. Dynamic or adaptive video delivery requires outputting a video in different quality settings along with some additional files. Both HLS and MPEG-DASH have different approaches to the problem.

The process of making adaptive streaming work is complex. Most services out there do not provide an end-to-end solution for this and the ones that do a are quite costly. The adaptive video streaming paradigm is not one that many companies have conquered as it requires specific knowledge and access to hardware. There is a reason we don't have many competitors for Netflix and YouTube. Adaptive streaming of video is hard.

First we’ll go into how adaptive streaming works and then I’ll explain exactly how to do this yourself. It’s much easier than you think once you have the knowledge and the right third party tool to do the heavy lifting.

How adaptive video delivery works

The video stream adapts itself based on a set of rules. The user’s bandwidth, CPU load and video player resolution on the page. To be able to stream adaptively you need to be able to stream different versions of a video. Each variant is of different quality, has a different bitrate and potentially has a different codec or resolution. Think of it as progressive enhancement in web development. The simplest stream always works and based on the features you have (in this case, CPU power, bandwidth, resolution), you get a nicer looking video stream.

Each adaptive video is also joined by an index file that specifies predefined segments of the video. In the HLS standard these segments are usually 10 seconds long where in MPEG-DASH we use 1 second. There is also a master playlist that points to the available video variations with additional information about each one.

An audio playlist adaptation

It’s pretty cool that dynamic video streaming is based on the spec from the M3U8 audio playlist. M3U8 was originally designed for audio files, such as MP3, but nowadays it is commonly used to point media players to audio and video sources.

An adaptive streaming video player uses the playlist information to decide which of the available video variations fits the user’s network conditions, CPU load or resolution best. It can switch to another source at each 10 second segment (these segments can also be shorter, see examples below) if the network conditions change.

This approach works well to minimise bandwidth use and optimise it for a smooth playback for everybody who watches the video stream. It can also be used the other way around, if the streaming service is completely overloaded it can send a video stream with a smaller bitrate or resolution to the viewer.

About HLS and MPEG-DASH

HLS

HLS was originally created by Apple to provide video for the iPhone, but now it’s a common format used across HTML5 web applications. You’ll need to encode your video with H.264 or HEVC/H.265 codecs, which can be decoded by all major browsers. With HLS, the video is chopped up into 10 second intervals and sent to the user.

MPEG-DASH

MPEG-DASH is the latest HLS competitor. It was originally created to be an alternative to HLS. It has a few advantages over HLS, mainly because it is open-source. This means the media content publisher community as a whole can contribute to its changes and updates. MPEG-DASH is globally supported and codec agnostic, which means that you can encode video without worrying about codec support. It has lower latency than HLS. It's playlist file is an .MPD, which is an XML format.

Doing it yourself

To deliver videos using adaptive streaming you must generate multiple video versions, add an index file per variant and add a master playlist. The formats and encoding for HLS and MPEG-DASH are different for each of these files. If you want to stream using both HLS and MPEG-DASH formats you need to double the effort for every video you want to deliver. Additionally, for MPEG-DASH, the best practice is to deliver the audio and video separately. This stuff is complex and time consuming.

If you are a developer who likes to get into the nitty gritty of ffmpeg you can deep dive and create all sources for HLS and MPEG-DASH yourself.

DIY steps for MPEG-DASH

MPEG-DASH is simplest to do yourself. Let's give it a go!

Imagine we have a video file called video.mp4. To make sure we can adaptively stream the video we need to create video files with different bitrates and an audio file. Beware that this is a simplified version for illustration purposes. In real life ffmpeg has many quirks based what video you give it.

Step 1: extract the audio

Extract the audio track:

$ ffmpeg -i video.mp4 -c:a copy -vn video-audio.mp4
-
-

Step 2: extract and re-encode the video track

$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 5300k -maxrate 5300k -bufsize 2650k -vf 'scale=-1:1080' video-1080.mp4
-
-$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 2400k -maxrate 2400k -bufsize 1200k -vf 'scale=-1:720' video-720.mp4
-
-$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 1060k -maxrate 1060k -bufsize 530k -vf 'scale=-1:478' video-480.mp4
-
-$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 600k -maxrate 600k -bufsize 300k -vf 'scale=-1:360' video-360.mp4
-
-$ ffmpeg -i video.mp4 -an -c:v libx264 -x264opts 'keyint=24:min-keyint=24:no-scenecut' -b:v 260k -maxrate 260k -bufsize 130k -vf 'scale=-1:242' video-240.mp4
-

The video is encoded using H.264 codec. This forces to have a key frame every 24 frames, in this case, every second. This allows the video to be segmented in chunks of 1 second. The bitrate is evaluated according to the buffer size, so in order to be sure the encoding is close to the requested rate, the buffer size should be lower than the bitrate.

Step 3: generate the MPD file

We now have one audio file and five video files. A Media Presentation Description (MPD) file has to be created. An MPD file functions as an index referencing the different video and audio tracks with their bitrate, size and how the segments are ordered.

$ MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video-1080.mp4 video-720.mp4 video-480.mp4 video-360.mp4 video-240.mp4 video-audio.mp4
-

The -dash option sets the duration of each segment to one second.

Next to preparing adaptive streaming content MP4Box can do a lot more. So much more in fact that it's best to just read more here.

Step 4: configure your webserver

Make sure your webserver understands .mpd files by adding the following mime type: application/dash+xml to its config.

Step 5: make sure your video player understands adaptive streaming

Implement dash.js into your video player or build a custom video player around dash.js.

Concluding

Obviously, doing this at scale or as a slightly less technical user this process is not realistic. You'll want to automate this completely.

Enter: Cloudinary

Next to being market leader in image delivery Cloudinary also provides features for video: from dynamic streaming profiles to cropping the subject perfectly on different video ratios. They even use AI to generate captions for muted videos or meaningful previews.

Today we are discussing the dynamic streaming service they offer. Cloudinary has created smart pre-defined streaming profiles to help you out. A streaming profile holds a set of video variation definitions with different qualities, bitrates, and codecs. For example, the one profile specifies 10 different variations ranging from extremely high quality to audio-only. You can also create custom profiles through their admin API.

Once you have selected a profile, you upload your video file with an eager transformation that instructs the system to generate all the required files for the requested profile in either HLS or MPEG-DASH format. If you want to deliver both formats, add two eager transformations within your upload command.

This upload code is for the Node.js SDK.

// This file is to be used in node.js and is for uploading your video file to Cloudinary.
-// This will not work in codesandbox and is here only for example purposes.
-// Run locally like: `node upload.js`
-
-const cloudinary = require('cloudinary').v2;
-
-// Create a Cloudinary account and fill out your credentials
-cloudinary.config({
-  cloud_name: '',
-  api_key: '',
-  api_secret: '',
-});
-
-// Upload your file with the Cloudinary Uploader API
-cloudinary.uploader
-  .upload('<your-video.mp4>', {
-    resource_type: 'video',
-    eager: [
-      // Specify what streaming profile you want to use
-      { format: 'm3u8', streaming_profile: '4k' },
-      { format: 'mpd', streaming_profile: '4k' },
-    ],
-    eager_async: true,
-    eager_notification_url: '<your-notify-url>',
-    public_id: '<your-public-id>', // This will be the public ID of the video
-  })
-  .then((video) => {
-    console.log('File Uploaded');
-    console.log(video.public_id);
-  })
-  .catch((error) => {
-    console.log('File Upload Error');
-    console.log(error);
-  });
-

Now that the file has been uploaded, it generates a bunch of different video and audio streams. These streams are represented in the playlist files below.

For the HLS version of the video this is what comes out as the m3u8 playlist file:

#EXTM3U
-
-#EXT-X-STREAM-INF:BANDWIDTH=10712000,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=3840x2160
-/dwfcofnrd/video/upload/c_limit,w_3840,h_2160,vc_h264:high:4.0,br_35m/v1602940452/cloudinary-dynamic-video-streaming.m3u8
-
-#EXT-X-STREAM-INF:BANDWIDTH=5420000,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=2560x1440
-/dwfcofnrd/video/upload/c_limit,w_2560,h_1440,vc_h264:high:4.0,br_16m/v1602940452/cloudinary-dynamic-video-streaming.m3u8
-
-#EXT-X-STREAM-INF:BANDWIDTH=3248000,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1920x1080
-/dwfcofnrd/video/upload/c_limit,w_1920,h_1080,vc_h264:high:4.0,br_8500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8
-
-#EXT-X-STREAM-INF:BANDWIDTH=1400000,CODECS="avc1.4D401F,mp4a.40.2",RESOLUTION=1280x720
-/dwfcofnrd/video/upload/c_limit,w_1280,h_720,vc_h264:main:3.1,br_5500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8
-
-#EXT-X-STREAM-INF:BANDWIDTH=876000,CODECS="avc1.4D401F,mp4a.40.2",RESOLUTION=960x540
-/dwfcofnrd/video/upload/c_limit,w_960,h_540,vc_h264:main:3.1,br_3500k/v1602940452/cloudinary-dynamic-video-streaming.m3u8
-
-#EXT-X-STREAM-INF:BANDWIDTH=615000,CODECS="avc1.42C01E,mp4a.40.2",RESOLUTION=640x360
-/dwfcofnrd/video/upload/c_limit,w_640,h_360,vc_h264:baseline:3.0,br_2m/v1602940452/cloudinary-dynamic-video-streaming.m3u8
-
-#EXT-X-STREAM-INF:BANDWIDTH=411000,CODECS="avc1.42C01E,mp4a.40.2",RESOLUTION=480x270
-/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.m3u8
-
-#EXT-X-STREAM-INF:BANDWIDTH=279000,CODECS="avc1.42C01E,mp4a.40.2",RESOLUTION=320x180
-/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.m3u8
-

For the MPEG-DASH version of the video this is what comes out as the MPD playlist file (I have shortened the file for readability):

<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500S" type="static" mediaPresentationDuration="PT0H0M28.800S" maxSegmentDuration="PT0H0M2.800S" profiles="urn:mpeg:dash:profile:full:2011">
-  <Period duration="PT0H0M28.800S">
-    <AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720" maxFrameRate="25" par="16:9" lang="und">
-      <Representation id="1" mimeType="video/mp4" codecs="avc1.42C01E" width="320" height="180" frameRate="25" sar="1:1" startWithSAP="1" bandwidth="188841">
-        <BaseURL>/dwfcofnrd/video/upload/c_limit,w_320,h_240,vc_h264:baseline:3.0,br_192k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv</BaseURL>
-        <SegmentList timescale="12800" duration="25600">
-          <Initialization range="0-909" />
-          <SegmentURL mediaRange="910-48949" indexRange="910-953" />
-          <SegmentURL mediaRange="48950-90844" indexRange="48950-48993" />
-          <SegmentURL mediaRange="90845-134433" indexRange="90845-90888" />
-          <SegmentURL mediaRange="134434-177434" indexRange="134434-134477" />
-          <SegmentURL mediaRange="177435-229116" indexRange="177435-177478" />
-          <SegmentURL mediaRange="229117-280431" indexRange="229117-229160" />
-          <SegmentURL mediaRange="280432-328048" indexRange="280432-280475" />
-          <SegmentURL mediaRange="328049-376769" indexRange="328049-328092" />
-          <SegmentURL mediaRange="376770-426815" indexRange="376770-376813" />
-          <SegmentURL mediaRange="426816-478009" indexRange="426816-426859" />
-          <SegmentURL mediaRange="478010-528551" indexRange="478010-478053" />
-          <SegmentURL mediaRange="528552-572601" indexRange="528552-528595" />
-          <SegmentURL mediaRange="572602-620003" indexRange="572602-572645" />
-          <SegmentURL mediaRange="620004-679828" indexRange="620004-620047" />
-        </SegmentList>
-      </Representation>
-      <Representation id="2" mimeType="video/mp4" codecs="avc1.42C01E" width="480" height="270" frameRate="25" sar="1:1" startWithSAP="1" bandwidth="346668">
-        <BaseURL>/dwfcofnrd/video/upload/c_limit,w_480,h_270,vc_h264:baseline:3.0,br_800k/v1602940452/cloudinary-dynamic-video-streaming.mp4dv</BaseURL>
-        <SegmentList timescale="12800" duration="25600">
-          <Initialization range="0-909" />
-          <SegmentURL mediaRange="910-84012" indexRange="910-953" />
-          <SegmentURL mediaRange="84013-157030" indexRange="84013-84056" />
-          <SegmentURL mediaRange="157031-233498" indexRange="157031-157074" />
-          <SegmentURL mediaRange="233499-307813" indexRange="233499-233542" />
-          <SegmentURL mediaRange="307814-397973" indexRange="307814-307857" />
-          <SegmentURL mediaRange="397974-486089" indexRange="397974-398017" />
-          <SegmentURL mediaRange="486090-566671" indexRange="486090-486133" />
-          <SegmentURL mediaRange="566672-651620" indexRange="566672-566715" />
-          <SegmentURL mediaRange="651621-750051" indexRange="651621-651664" />
-          <SegmentURL mediaRange="750052-862906" indexRange="750052-750095" />
-          <SegmentURL mediaRange="862907-974846" indexRange="862907-862950" />
-          <SegmentURL mediaRange="974847-1059121" indexRange="974847-974890" />
-          <SegmentURL mediaRange="1059122-1143744" indexRange="1059122-1059165" />
-          <SegmentURL mediaRange="1143745-1248006" indexRange="1143745-1143788" />
-        </SegmentList>
-      </Representation>
-      <Representation id="3" mimeType="video/mp4" codecs="avc1.42C01E" width="640" height="360" frameRate="25" sar="1:1" startWithSAP="1" bandwidth="561940">
-      <!-- ... and many more ... -->
-    </AdaptationSet>
-  </Period>
-</MPD>
-

Now that we have the playlist files and all the video streams we can either build our own fancy video player that understands dynamic streaming or we go for the Cloudinary player. In this case I suggest we use the Cloudinary player as it works out of the box. Check out the code sandbox for a very simple vanilla JavaScript example of loading the player for both HLS and MPEG-DASH.

Try throttling your connection and see the differences in quality. To do this, open your web developer tools (assuming you use chrome), open the network tab and select a different connection type in the dropdown next to the "preserve log" and "Disable cache" checkboxes.

The Cloudinary video player is based on videojs and has both the HLS and MPEG-DASH plugins installed by default. In the code sandbox below you'll see both the HLS and the MPEG-DASH version. Beware that the HLS version has better support for showing different statistics than the MPEG-DASH version.

See the code here: https://codesandbox.io/s/white-cherry-g4ixt

- \ No newline at end of file diff --git a/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/_payload.json b/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/_payload.json deleted file mode 100644 index 34232101..00000000 --- a/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1547},["Reactive",2],{"content-query-R4nqodRc0K":3,"content-navigation-8C37fagqQL":431},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":17,"body":18,"_type":426,"_id":427,"_source":428,"_file":429,"_extension":430},"/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","writing",false,"","How to get your webcam to look decent in a few simple steps","If you have used a webcam before you know what it means to look like shit on camera. Even the most...",1407808,"how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps","2023-03-20T13:01:35Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finfev45k3ve6i4dgtu2r.png","https://dev.to/timbenniks/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps-5eo4",[16],"webcam",22299,{"type":19,"children":20,"toc":418},"root",[21,29,34,41,57,62,76,81,88,102,107,112,118,123,128,133,139,144,150,155,161,166,173,178,183,189,194,199,205,210,215,223,228,248,253,271,276,282,287,293,298,322,330,336,341,347,360,380,386,391,397,402,410],{"type":22,"tag":23,"props":24,"children":25},"element","p",{},[26],{"type":27,"value":28},"text","If you have used a webcam before you know what it means to look like shit on camera. Even the most expensive consumer webcams produce a “meh” result. So why do webcams suck? It’s their design. The webcam form factor has a bunch physical challenges that limits them from producing a good looking picture.",{"type":22,"tag":23,"props":30,"children":31},{},[32],{"type":27,"value":33},"Beware, the ideas outlined below are based on my experience and are by far not comprehensive or complete. That is not the idea of this post. Someone in the field of cameras will probably pick this apart on details. The global ideas stand, however.",{"type":22,"tag":35,"props":36,"children":38},"h3",{"id":37},"why-webcams-suck",[39],{"type":27,"value":40},"Why webcams suck",{"type":22,"tag":23,"props":42,"children":43},{},[44,46,55],{"type":27,"value":45},"Let’s get a bit technical. Almost all webcam ",{"type":22,"tag":47,"props":48,"children":52},"a",{"href":49,"rel":50},"https://en.wikipedia.org/wiki/Image_sensor",[51],"nofollow",[53],{"type":27,"value":54},"image sensors",{"type":27,"value":56}," are somewhere between 1/4\" and 1/3\" in size and they have a crop factor of around 7. Crop factor is a term that describes the difference between your camera’s sensor size and a traditional 35mm film frame. In the case of a webcam’s image sensor size and its crop factor a normal 18mm lens is the equivalent of a 126mm zoom lens. I might be a bit off here. The idea is that the crop factor plays a huge role.",{"type":22,"tag":23,"props":58,"children":59},{},[60],{"type":27,"value":61},"A webcam tends to be positioned around 40cm (1.3 feet) from your face. Due to the high crop factor an extremely wide angle lens is needed to get a good visual at that distance. Think about it. If a 18mm lens is the equivalent of an 126mm lens it means that something we consider normal on a SLR camera is extremely zoomed in on a webcam. So, we need to zoom it out. BY A LOT. To do that, we use a wide angle lens.",{"type":22,"tag":23,"props":63,"children":64},{},[65],{"type":22,"tag":66,"props":67,"children":75},"img",{"alt":68,"height":69,"loading":70,"provider":71,"sizes":72,"src":73,"width":74},"Sensor explanation",720,"lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16nf6fvk0v76s11zb1ph.png",1280,[],{"type":22,"tag":23,"props":77,"children":78},{},[79],{"type":27,"value":80},"The problem is, the wider you go, the less sharp the picture gets. If there wasn’t enough against the webcam form factor: the lenses in webcams are generally cheap and shitty. The webcam’s physical limitations make it terrible in low light situations. Even with studio lighting the image can appear grainy.",{"type":22,"tag":82,"props":83,"children":85},"h4",{"id":84},"there-are-more-issues-yikes",[86],{"type":27,"value":87},"There are more issues. Yikes.",{"type":22,"tag":23,"props":89,"children":90},{},[91,93,100],{"type":27,"value":92},"If you check out high quality content there is always a nice ",{"type":22,"tag":47,"props":94,"children":97},{"href":95,"rel":96},"https://en.wikipedia.org/wiki/Bokeh",[51],[98],{"type":27,"value":99},"bokeh effect",{"type":27,"value":101},". The more light a lens can capture (aperture) and the bigger the image sensor, the more bokeh you can expect. Bokeh is awesome, everybody needs bokeh.",{"type":22,"tag":23,"props":103,"children":104},{},[105],{"type":27,"value":106},"In webcams autofocus works from about 1cm until 60cm (2feet). After that everything is always sharp. Webcams have a shallow depth of field. No bokeh. Not even close.",{"type":22,"tag":23,"props":108,"children":109},{},[110],{"type":27,"value":111},"Combine a small sensor, a crappy wide angle lens and a shallow depth of field and you have the average webcam. A 200 euro webcam isn’t that much better than a 50 euro webcam. Sad but true.",{"type":22,"tag":82,"props":113,"children":115},{"id":114},"but-why-does-my-phone-camera-look-so-good",[116],{"type":27,"value":117},"But why does my phone camera look so good?",{"type":22,"tag":23,"props":119,"children":120},{},[121],{"type":27,"value":122},"A real camera or a phone have much more computational power. The camera on a phone is almost its main feature nowadays. It’s where all the advertisement dollars go. Phones have bigger sensors, better lenses and sometimes even a dedicated hardware chip just for image processing.",{"type":22,"tag":23,"props":124,"children":125},{},[126],{"type":27,"value":127},"Most webcams also have some sort of processing power on board but it always kind of sucks. It mainly compresses the video feed so it’s streamable over the USB connection. Due to the compressed stream the PC hardly needs any processing to show the video. You have no access to aperture, shutter speed or ISO though.",{"type":22,"tag":23,"props":129,"children":130},{},[131],{"type":27,"value":132},"You can only post process the signal. But the damage is usually already done at this stage.",{"type":22,"tag":82,"props":134,"children":136},{"id":135},"but-why-arent-there-any-amazing-webcams-out-there",[137],{"type":27,"value":138},"But why aren’t there any amazing webcams out there?",{"type":22,"tag":23,"props":140,"children":141},{},[142],{"type":27,"value":143},"It’s definitely possible and there are niche brands that build 1000 euro webcams. But if you have to spend that much, why not just buy a real camera? The actual market for webcams is likely just for conference calls, skype with family (if you don’t have a laptop or a phone) or content creators who are starting out. If webcams get too expensive, nobody will buy them.",{"type":22,"tag":35,"props":145,"children":147},{"id":146},"you-can-make-it-work-however",[148],{"type":27,"value":149},"You can make it work however",{"type":22,"tag":23,"props":151,"children":152},{},[153],{"type":27,"value":154},"In this post I’ll outline some tips and tricks you can apply to make your webcam look better. All techniques described below are applicable to any sort of camera setup. If you have a proper camera it just works better. We will be covering two topics. Lighting and post processing settings.",{"type":22,"tag":82,"props":156,"children":158},{"id":157},"lighting",[159],{"type":27,"value":160},"Lighting",{"type":22,"tag":23,"props":162,"children":163},{},[164],{"type":27,"value":165},"Lighting is by far the most important part of your setup if you want to make your webcam image look good. As mentioned before, webcams are not great in low light situations. To overcome this limitation you have to blast the filming subject (you) with light.",{"type":22,"tag":167,"props":168,"children":170},"h5",{"id":169},"light-temperatures",[171],{"type":27,"value":172},"Light temperatures",{"type":22,"tag":23,"props":174,"children":175},{},[176],{"type":27,"value":177},"There are different types of light that need different white balance settings. Generally light bulbs are yellow and sun light is blue. When combining both you can green a green overtone. White balancing your camera in software is very important in this case.",{"type":22,"tag":23,"props":179,"children":180},{},[181],{"type":27,"value":182},"I’d suggest not to use sunlight as it is hard to control. Close your blinds and go for light bulbs or LED lights only. There are many cheap options out there. Most lights can deliver different color temperatures ranging from 2500 (sunset) to 10000 (blue sky). Generally 5500 is considered noon daylight.",{"type":22,"tag":167,"props":184,"children":186},{"id":185},"shadows-diffusion",[187],{"type":27,"value":188},"Shadows & diffusion",{"type":22,"tag":23,"props":190,"children":191},{},[192],{"type":27,"value":193},"Light can be cast in different ways. Harder shadows and lighting from the top is used to depict movie villains for example. If you want an dramatic look, use hard shadows and light yourself from one side. If you want to look more mainstream use softer shadows and light yourself from more angles.",{"type":22,"tag":23,"props":195,"children":196},{},[197],{"type":27,"value":198},"To generate softer shadows you have to diffuse your light. The more focused a light source is, the harder the shadows. The more diffusion is added, the softer the shadows. I personally use a couple of cloths of white t-shirt fabric stretched over my lights. Obviously there are also more professional ways to diffuse light but these are not available to everyone.",{"type":22,"tag":167,"props":200,"children":202},{"id":201},"your-light-setup",[203],{"type":27,"value":204},"Your light setup",{"type":22,"tag":23,"props":206,"children":207},{},[208],{"type":27,"value":209},"Now that we have our color temperatures and diffusion out of the way, let’s talk about how to set up your lights so you are lit properly for the webcam. If you have very limited options, just put a big light behind your camera and blast your face with white light. This will give you a 100% quality boost over having no lights.",{"type":22,"tag":23,"props":211,"children":212},{},[213],{"type":27,"value":214},"If you have a little bit more flexibility I suggest using a three point light setup. The three point light setup is considered industry standard and will generally give you great results.",{"type":22,"tag":23,"props":216,"children":217},{},[218],{"type":22,"tag":66,"props":219,"children":222},{"alt":220,"height":69,"loading":70,"provider":71,"sizes":72,"src":221,"width":74},"Lighting setup","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/keef3ou8sbzpg24acrzj.png",[],{"type":22,"tag":23,"props":224,"children":225},{},[226],{"type":27,"value":227},"The three point light setup assumes you have a “key light”, a “fill light” and a “hair light”.",{"type":22,"tag":229,"props":230,"children":231},"ul",{},[232,238,243],{"type":22,"tag":233,"props":234,"children":235},"li",{},[236],{"type":27,"value":237},"Key light: This is the main light source. It shines directly on the subject, usually from the front right or front left. It establishes the overall look and feel of the shot.",{"type":22,"tag":233,"props":239,"children":240},{},[241],{"type":27,"value":242},"Fill light: The fill light provides balance to the key light by “filling in” the rest of the subject’s face with softer light. It should be positioned to the side opposite side of the key light.",{"type":22,"tag":233,"props":244,"children":245},{},[246],{"type":27,"value":247},"Hair light: Also called “back light” or “rim light”. This light creates a flattering rim of light around the subject, separating him or her from the background.",{"type":22,"tag":23,"props":249,"children":250},{},[251],{"type":27,"value":252},"This is how to set up your lights. To start turn all lights off so you are in a dark room.",{"type":22,"tag":229,"props":254,"children":255},{},[256,261,266],{"type":22,"tag":233,"props":257,"children":258},{},[259],{"type":27,"value":260},"Turn on your key light. Your key light is the brightest light in the scene and the one that creates the overall feel of the shot. Adjust its brightness to your liking. You should position the key light in a relatively high spot to reduce shadows on the face.",{"type":22,"tag":233,"props":262,"children":263},{},[264],{"type":27,"value":265},"Add your fill light. The fill light should be on the opposite side of the key light, but still in front of the subject. Don’t make the key and fill lights symmetrical. The fill should be at the subject’s face level, and should get rid of any remaining shadows. The intensity of the fill light should be about half that of the key light.",{"type":22,"tag":233,"props":267,"children":268},{},[269],{"type":27,"value":270},"Bring in the hair light. The back light separates you from the background. It can be placed anywhere behind the subject. Make sure to keep it out of the shot. Angle it down from a high position to achieve a sharp outline on the edge of the subject.",{"type":22,"tag":23,"props":272,"children":273},{},[274],{"type":27,"value":275},"If there are lights behind you, make sure these have a very low intensity so they do not distract from you, the subject of the shot. To make the shot more interesting you can add some fun colored lights behind you as long as they are not too distracting. This is obviously not needed but it’s a fun thing to add.",{"type":22,"tag":35,"props":277,"children":279},{"id":278},"application-settings",[280],{"type":27,"value":281},"Application settings",{"type":22,"tag":23,"props":283,"children":284},{},[285],{"type":27,"value":286},"We are almost there! Let’s tweak some settings to make the camera quality appear much higher.",{"type":22,"tag":82,"props":288,"children":290},{"id":289},"turn-things-off",[291],{"type":27,"value":292},"Turn things off.",{"type":22,"tag":23,"props":294,"children":295},{},[296],{"type":27,"value":297},"I have a Logitech webcam. This camera comes with a little control panel that allows for some post process tweaking of the camera feed. If you are well lit you can turn off a bunch of things in this interface. First of all, keep the settings for brightness, contrast, saturation and sharpness at the default. We will fix these at a later stage.",{"type":22,"tag":299,"props":300,"children":301},"ol",{},[302,307,312,317],{"type":22,"tag":233,"props":303,"children":304},{},[305],{"type":27,"value":306},"Set the white balance on a fixed setting and make sure it is not set to auto. For my setup a white balance at around 4000 works.",{"type":22,"tag":233,"props":308,"children":309},{},[310],{"type":27,"value":311},"Make sure to turn off Backlight compensation and Gain. We do not need these as we are well lit.",{"type":22,"tag":233,"props":313,"children":314},{},[315],{"type":27,"value":316},"In the next tab make sure exposure is set to “auto”. If you attempt to expose yourself manually with a Logitech webcam all hell brakes loose. The image either looks like crap or your framerate will drop significantly.",{"type":22,"tag":233,"props":318,"children":319},{},[320],{"type":27,"value":321},"Make sure to turn off Low Light compensation. There is no need for this as you are well lit.",{"type":22,"tag":23,"props":323,"children":324},{},[325],{"type":22,"tag":66,"props":326,"children":329},{"alt":327,"height":69,"loading":70,"provider":71,"sizes":72,"src":328,"width":74},"Webcam settings","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rktns1m78yyy1owfexqd.png",[],{"type":22,"tag":82,"props":331,"children":333},{"id":332},"color-correction",[334],{"type":27,"value":335},"Color correction",{"type":22,"tag":23,"props":337,"children":338},{},[339],{"type":27,"value":340},"I use OBS, which comes with a great plugin to color correct the video feed from your webcam. The smallest adjustments give a great result. Stay subtle with the changes and your video will look a lot better fast.",{"type":22,"tag":82,"props":342,"children":344},{"id":343},"lut",[345],{"type":27,"value":346},"LUT",{"type":22,"tag":23,"props":348,"children":349},{},[350,352,358],{"type":27,"value":351},"Instagram filters can make a simple picture of food look like a very fancy picture of food. You can use these same kinds of filters on webcams too! It’s amazing what a little cosmetic tweak can do to your video quality. The filters I’m talking about are called ",{"type":22,"tag":47,"props":353,"children":356},{"href":354,"rel":355},"https://en.wikipedia.org/wiki/3D_lookup_table",[51],[357],{"type":27,"value":346},{"type":27,"value":359},". LUT’s are generally used in the professional film world to color grade a movie.",{"type":22,"tag":23,"props":361,"children":362},{},[363,365,372,374],{"type":27,"value":364},"LUT’s are simple, easy-to-use filters that can be applied directly into ",{"type":22,"tag":47,"props":366,"children":369},{"href":367,"rel":368},"https://obsproject.com/",[51],[370],{"type":27,"value":371},"OBS",{"type":27,"value":373}," allowing your webcam presentation to become brighter or more cinematic. For a great free pack of LUT’s go here: ",{"type":22,"tag":47,"props":375,"children":378},{"href":376,"rel":377},"https://gamingcareers.com/guides/30-free-webcam-filters-obs/",[51],[379],{"type":27,"value":376},{"type":22,"tag":82,"props":381,"children":383},{"id":382},"you-can-try-one-more-thing",[384],{"type":27,"value":385},"You can try one more thing",{"type":22,"tag":23,"props":387,"children":388},{},[389],{"type":27,"value":390},"If you have a cheap camera with a shallow depth of field and your lights are set up well, you can use a program called xsplit vcam to create a software bokeh effect! Beware, you need a relatively strong graphics card and the lighting needs to be spot on. Also, the program is not free.",{"type":22,"tag":35,"props":392,"children":394},{"id":393},"thats-it",[395],{"type":27,"value":396},"That's it",{"type":22,"tag":23,"props":398,"children":399},{},[400],{"type":27,"value":401},"This is the result I got after a bit of research and tweaking settings.",{"type":22,"tag":23,"props":403,"children":404},{},[405],{"type":22,"tag":66,"props":406,"children":409},{"alt":407,"height":69,"loading":70,"provider":71,"sizes":72,"src":408,"width":74},"Before","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53ums57svft6zuza79l9.png",[],{"type":22,"tag":23,"props":411,"children":412},{},[413],{"type":22,"tag":66,"props":414,"children":417},{"alt":415,"height":69,"loading":70,"provider":71,"sizes":72,"src":416,"width":74},"After","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h293vez6piv68hyzfy98.png",[],{"title":7,"searchDepth":419,"depth":419,"links":420},2,[421,423,424,425],{"id":37,"depth":422,"text":40},3,{"id":146,"depth":422,"text":149},{"id":278,"depth":422,"text":281},{"id":393,"depth":422,"text":396},"markdown","content:4.writing:how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","content","4.writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps.md","md",[432,435,1227,1302,1538,1541,1544],{"title":433,"_path":434},"About","/about",{"title":436,"_path":437,"children":438},"videos","/videos",[439,458,477,523,524,576,679,702,724,1052],{"title":440,"_path":441,"children":442},"Alive And Kicking","/videos/alive-and-kicking",[443,446,449,452,455],{"title":444,"_path":445},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":447,"_path":448},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":450,"_path":451},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":453,"_path":454},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":456,"_path":457},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":459,"_path":460,"children":461},"Headless Creator","/videos/headless-creator",[462,465,468,471,474],{"title":463,"_path":464},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":466,"_path":467},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":469,"_path":470},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":472,"_path":473},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":475,"_path":476},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":478,"_path":479,"children":480},"Hygraph","/videos/hygraph",[481,484,487,490,493,496,499,502,505,508,511,514,517,520],{"title":482,"_path":483},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":485,"_path":486},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":488,"_path":489},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":491,"_path":492},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":494,"_path":495},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":497,"_path":498},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":500,"_path":501},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":503,"_path":504},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":506,"_path":507},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":509,"_path":510},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":512,"_path":513},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":515,"_path":516},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":518,"_path":519},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":521,"_path":522},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":436,"_path":437},{"title":525,"_path":526,"children":527},"Live Hygraph","/videos/live-hygraph",[528,531,534,537,540,543,546,549,552,555,558,561,564,567,570,573],{"title":529,"_path":530},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":532,"_path":533},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":535,"_path":536},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":538,"_path":539},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":541,"_path":542},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":544,"_path":545},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":547,"_path":548},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":550,"_path":551},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":553,"_path":554},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":556,"_path":557},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":559,"_path":560},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":562,"_path":563},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":565,"_path":566},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":568,"_path":569},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":571,"_path":572},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":574,"_path":575},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":577,"_path":578,"children":579},"Live Uniform","/videos/live-uniform",[580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676],{"title":581,"_path":582},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":584,"_path":585},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":587,"_path":588},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":590,"_path":591},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":593,"_path":594},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":596,"_path":597},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":599,"_path":600},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":602,"_path":603},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":605,"_path":606},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":608,"_path":609},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":611,"_path":612},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":614,"_path":615},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":617,"_path":618},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":620,"_path":621},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":623,"_path":624},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":626,"_path":627},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":629,"_path":630},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":632,"_path":633},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":635,"_path":636},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":638,"_path":639},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":641,"_path":642},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":644,"_path":645},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":647,"_path":648},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":650,"_path":651},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":653,"_path":654},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":656,"_path":657},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":659,"_path":660},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":662,"_path":663},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":665,"_path":666},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":668,"_path":669},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":671,"_path":672},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":674,"_path":675},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":677,"_path":678},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":680,"_path":681,"children":682},"Misc Streams","/videos/misc-streams",[683,686,689,692,694,696,699],{"title":684,"_path":685},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":687,"_path":688},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":690,"_path":691},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":674,"_path":693},"/videos/misc-streams/003-jvgiaotcerq",{"title":665,"_path":695},"/videos/misc-streams/004-ekut1koa2n8",{"title":697,"_path":698},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":700,"_path":701},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":703,"_path":704,"children":705},"Mp","/videos/mp",[706,709,712,715,718,721],{"title":707,"_path":708},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":710,"_path":711},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":713,"_path":714},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":716,"_path":717},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":719,"_path":720},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":722,"_path":723},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":725,"_path":726,"children":727},"Tim","/videos/tim",[728,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,780,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049],{"title":447,"_path":729},"/videos/tim/000-mvq-_s20ndk",{"title":731,"_path":732},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":734,"_path":735},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":737,"_path":738},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":740,"_path":741},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":743,"_path":744},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":746,"_path":747},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":749,"_path":750},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":752,"_path":753},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":755,"_path":756},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":758,"_path":759},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":761,"_path":762},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":764,"_path":765},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":767,"_path":768},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":770,"_path":771},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":773,"_path":774},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":776,"_path":777},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":450,"_path":779},"/videos/tim/017-m0mrligs6i0",{"title":444,"_path":781},"/videos/tim/018-hhpitreyobi",{"title":783,"_path":784},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":786,"_path":787},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":789,"_path":790},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":792,"_path":793},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":795,"_path":796},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":798,"_path":799},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":801,"_path":802},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":804,"_path":805},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":807,"_path":808},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":810,"_path":811},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":813,"_path":814},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":816,"_path":817},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":819,"_path":820},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":822,"_path":823},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":825,"_path":826},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":828,"_path":829},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":831,"_path":832},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":834,"_path":835},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":837,"_path":838},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":840,"_path":841},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":843,"_path":844},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":846,"_path":847},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":849,"_path":850},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":852,"_path":853},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":855,"_path":856},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":858,"_path":859},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":861,"_path":862},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":864,"_path":865},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":867,"_path":868},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":870,"_path":871},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":873,"_path":874},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":876,"_path":877},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":879,"_path":880},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":882,"_path":883},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":885,"_path":886},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":888,"_path":889},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":891,"_path":892},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":894,"_path":895},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":897,"_path":898},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":900,"_path":901},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":903,"_path":904},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":906,"_path":907},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":909,"_path":910},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":912,"_path":913},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":915,"_path":916},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":918,"_path":919},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":921,"_path":922},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":924,"_path":925},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":927,"_path":928},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":930,"_path":931},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":933,"_path":934},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":936,"_path":937},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":939,"_path":940},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":942,"_path":943},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":945,"_path":946},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":948,"_path":949},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":951,"_path":952},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":954,"_path":955},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":957,"_path":958},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":960,"_path":961},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":963,"_path":964},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":966,"_path":967},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":969,"_path":970},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":972,"_path":973},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":975,"_path":976},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":978,"_path":979},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":981,"_path":982},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":984,"_path":985},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":987,"_path":988},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":990,"_path":991},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":993,"_path":994},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":996,"_path":997},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":999,"_path":1000},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":1002,"_path":1003},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":1005,"_path":1006},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":1008,"_path":1009},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":1011,"_path":1012},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":1014,"_path":1015},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":1017,"_path":1018},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":1020,"_path":1021},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":1023,"_path":1024},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":1026,"_path":1027},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":1029,"_path":1030},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":1032,"_path":1033},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":1035,"_path":1036},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":1038,"_path":1039},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":1041,"_path":1042},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":1044,"_path":1045},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":1047,"_path":1048},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":1050,"_path":1051},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":1053,"_path":1054,"children":1055},"Uniform","/videos/uniform",[1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224],{"title":1057,"_path":1058},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":1060,"_path":1061},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":1063,"_path":1064},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":1066,"_path":1067},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":1069,"_path":1070},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":1072,"_path":1073},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":1075,"_path":1076},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1078,"_path":1079},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1081,"_path":1082},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1084,"_path":1085},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1087,"_path":1088},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1090,"_path":1091},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1093,"_path":1094},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1096,"_path":1097},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1099,"_path":1100},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1102,"_path":1103},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1105,"_path":1106},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1108,"_path":1109},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1111,"_path":1112},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1114,"_path":1115},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1117,"_path":1118},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1120,"_path":1121},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1123,"_path":1124},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1126,"_path":1127},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1129,"_path":1130},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1132,"_path":1133},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1135,"_path":1136},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1138,"_path":1139},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1141,"_path":1142},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1144,"_path":1145},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1147,"_path":1148},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1150,"_path":1151},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1153,"_path":1154},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1156,"_path":1157},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1159,"_path":1160},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1162,"_path":1163},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1165,"_path":1166},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1168,"_path":1169},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1171,"_path":1172},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1174,"_path":1175},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1177,"_path":1178},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1180,"_path":1181},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1183,"_path":1184},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1186,"_path":1187},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1189,"_path":1190},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1192,"_path":1193},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1195,"_path":1196},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1198,"_path":1199},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1201,"_path":1202},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1204,"_path":1205},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1207,"_path":1208},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1210,"_path":1211},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1213,"_path":1214},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1216,"_path":1217},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1219,"_path":1220},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1222,"_path":1223},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1225,"_path":1226},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1228,"_path":1229,"children":1230},"Writing","/writing",[1231,1234,1237,1240,1241,1244,1245,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1284,1287,1290,1293,1296,1299],{"title":1232,"_path":1233},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1235,"_path":1236},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1238,"_path":1239},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":8,"_path":4},{"title":1242,"_path":1243},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1228,"_path":1229},{"title":1246,"_path":1247},"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":1249,"_path":1250},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1252,"_path":1253},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1255,"_path":1256},"My Fitness Story","/writing/my-fitness-story",{"title":1258,"_path":1259},"New job alert!","/writing/new-job-alert",{"title":1261,"_path":1262},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1264,"_path":1265},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1267,"_path":1268},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1270,"_path":1271},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1273,"_path":1274},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1276,"_path":1277},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1279,"_path":1280},"The MACH monolith","/writing/the-mach-monolith",{"title":1282,"_path":1283},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1285,"_path":1286},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1288,"_path":1289},"This is headless 2.0","/writing/this-is-headless-20",{"title":1291,"_path":1292},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1294,"_path":1295},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1297,"_path":1298},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1300,"_path":1301},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1303,"_path":1304,"children":1305},"Speaking","/speaking",[1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381,1384,1387,1390,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420,1423,1426,1429,1432,1435,1438,1441,1444,1447,1450,1453,1456,1459,1462,1465,1468,1471,1474,1477,1480,1483,1486,1489,1492,1495,1498,1501,1504,1507,1510,1513,1516,1519,1522,1525,1528,1531,1534,1537],{"title":1307,"_path":1308},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1310,"_path":1311},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1313,"_path":1314},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1316,"_path":1317},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1319,"_path":1320},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1322,"_path":1323},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1325,"_path":1326},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1328,"_path":1329},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1331,"_path":1332},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1334,"_path":1335},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1337,"_path":1338},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1340,"_path":1341},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1343,"_path":1344},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1346,"_path":1347},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1349,"_path":1350},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1352,"_path":1353},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1355,"_path":1356},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1358,"_path":1359},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1361,"_path":1362},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1364,"_path":1365},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1367,"_path":1368},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1370,"_path":1371},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1373,"_path":1374},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1376,"_path":1377},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1379,"_path":1380},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1382,"_path":1383},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1385,"_path":1386},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1388,"_path":1389},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1391,"_path":1392},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1394,"_path":1395},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1397,"_path":1398},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1400,"_path":1401},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1403,"_path":1404},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1406,"_path":1407},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1409,"_path":1410},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1412,"_path":1413},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1415,"_path":1416},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1418,"_path":1419},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1421,"_path":1422},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1424,"_path":1425},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1427,"_path":1428},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1430,"_path":1431},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1433,"_path":1434},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1436,"_path":1437},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1439,"_path":1440},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1442,"_path":1443},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1445,"_path":1446},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1448,"_path":1449},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1451,"_path":1452},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1454,"_path":1455},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1457,"_path":1458},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1460,"_path":1461},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1463,"_path":1464},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1466,"_path":1467},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1469,"_path":1470},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1472,"_path":1473},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1475,"_path":1476},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1478,"_path":1479},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1481,"_path":1482},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1484,"_path":1485},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1487,"_path":1488},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1490,"_path":1491},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1493,"_path":1494},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1496,"_path":1497},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1499,"_path":1500},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1502,"_path":1503},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1505,"_path":1506},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1508,"_path":1509},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1511,"_path":1512},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1514,"_path":1515},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1517,"_path":1518},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1520,"_path":1521},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1523,"_path":1524},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1526,"_path":1527},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1529,"_path":1530},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1532,"_path":1533},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1535,"_path":1536},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1303,"_path":1304},{"title":1539,"_path":1540},"live streams","/livestreams",{"title":1542,"_path":1543},"press kit","/presskit",{"title":1545,"_path":1546},"alive and kicking","/alive-and-kicking",1718484379217] \ No newline at end of file diff --git a/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/index.html b/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/index.html deleted file mode 100644 index 4d30f0d3..00000000 --- a/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps/index.html +++ /dev/null @@ -1,83 +0,0 @@ - - -How to get your webcam to look decent in a few simple steps - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

How to get your webcam to look decent in a few simple steps

Mar 20, 2023 at https://dev.to/timbenniks/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps-5eo4

If you have used a webcam before you know what it means to look like shit on camera. Even the most expensive consumer webcams produce a “meh” result. So why do webcams suck? It’s their design. The webcam form factor has a bunch physical challenges that limits them from producing a good looking picture.

Beware, the ideas outlined below are based on my experience and are by far not comprehensive or complete. That is not the idea of this post. Someone in the field of cameras will probably pick this apart on details. The global ideas stand, however.

Why webcams suck

Let’s get a bit technical. Almost all webcam image sensors are somewhere between 1/4" and 1/3" in size and they have a crop factor of around 7. Crop factor is a term that describes the difference between your camera’s sensor size and a traditional 35mm film frame. In the case of a webcam’s image sensor size and its crop factor a normal 18mm lens is the equivalent of a 126mm zoom lens. I might be a bit off here. The idea is that the crop factor plays a huge role.

A webcam tends to be positioned around 40cm (1.3 feet) from your face. Due to the high crop factor an extremely wide angle lens is needed to get a good visual at that distance. Think about it. If a 18mm lens is the equivalent of an 126mm lens it means that something we consider normal on a SLR camera is extremely zoomed in on a webcam. So, we need to zoom it out. BY A LOT. To do that, we use a wide angle lens.

Sensor explanation

The problem is, the wider you go, the less sharp the picture gets. If there wasn’t enough against the webcam form factor: the lenses in webcams are generally cheap and shitty. The webcam’s physical limitations make it terrible in low light situations. Even with studio lighting the image can appear grainy.

There are more issues. Yikes.

If you check out high quality content there is always a nice bokeh effect. The more light a lens can capture (aperture) and the bigger the image sensor, the more bokeh you can expect. Bokeh is awesome, everybody needs bokeh.

In webcams autofocus works from about 1cm until 60cm (2feet). After that everything is always sharp. Webcams have a shallow depth of field. No bokeh. Not even close.

Combine a small sensor, a crappy wide angle lens and a shallow depth of field and you have the average webcam. A 200 euro webcam isn’t that much better than a 50 euro webcam. Sad but true.

But why does my phone camera look so good?

A real camera or a phone have much more computational power. The camera on a phone is almost its main feature nowadays. It’s where all the advertisement dollars go. Phones have bigger sensors, better lenses and sometimes even a dedicated hardware chip just for image processing.

Most webcams also have some sort of processing power on board but it always kind of sucks. It mainly compresses the video feed so it’s streamable over the USB connection. Due to the compressed stream the PC hardly needs any processing to show the video. You have no access to aperture, shutter speed or ISO though.

You can only post process the signal. But the damage is usually already done at this stage.

But why aren’t there any amazing webcams out there?

It’s definitely possible and there are niche brands that build 1000 euro webcams. But if you have to spend that much, why not just buy a real camera? The actual market for webcams is likely just for conference calls, skype with family (if you don’t have a laptop or a phone) or content creators who are starting out. If webcams get too expensive, nobody will buy them.

You can make it work however

In this post I’ll outline some tips and tricks you can apply to make your webcam look better. All techniques described below are applicable to any sort of camera setup. If you have a proper camera it just works better. We will be covering two topics. Lighting and post processing settings.

Lighting

Lighting is by far the most important part of your setup if you want to make your webcam image look good. As mentioned before, webcams are not great in low light situations. To overcome this limitation you have to blast the filming subject (you) with light.

Light temperatures

There are different types of light that need different white balance settings. Generally light bulbs are yellow and sun light is blue. When combining both you can green a green overtone. White balancing your camera in software is very important in this case.

I’d suggest not to use sunlight as it is hard to control. Close your blinds and go for light bulbs or LED lights only. There are many cheap options out there. Most lights can deliver different color temperatures ranging from 2500 (sunset) to 10000 (blue sky). Generally 5500 is considered noon daylight.

Shadows & diffusion

Light can be cast in different ways. Harder shadows and lighting from the top is used to depict movie villains for example. If you want an dramatic look, use hard shadows and light yourself from one side. If you want to look more mainstream use softer shadows and light yourself from more angles.

To generate softer shadows you have to diffuse your light. The more focused a light source is, the harder the shadows. The more diffusion is added, the softer the shadows. I personally use a couple of cloths of white t-shirt fabric stretched over my lights. Obviously there are also more professional ways to diffuse light but these are not available to everyone.

Your light setup

Now that we have our color temperatures and diffusion out of the way, let’s talk about how to set up your lights so you are lit properly for the webcam. If you have very limited options, just put a big light behind your camera and blast your face with white light. This will give you a 100% quality boost over having no lights.

If you have a little bit more flexibility I suggest using a three point light setup. The three point light setup is considered industry standard and will generally give you great results.

Lighting setup

The three point light setup assumes you have a “key light”, a “fill light” and a “hair light”.

  • Key light: This is the main light source. It shines directly on the subject, usually from the front right or front left. It establishes the overall look and feel of the shot.
  • Fill light: The fill light provides balance to the key light by “filling in” the rest of the subject’s face with softer light. It should be positioned to the side opposite side of the key light.
  • Hair light: Also called “back light” or “rim light”. This light creates a flattering rim of light around the subject, separating him or her from the background.

This is how to set up your lights. To start turn all lights off so you are in a dark room.

  • Turn on your key light. Your key light is the brightest light in the scene and the one that creates the overall feel of the shot. Adjust its brightness to your liking. You should position the key light in a relatively high spot to reduce shadows on the face.
  • Add your fill light. The fill light should be on the opposite side of the key light, but still in front of the subject. Don’t make the key and fill lights symmetrical. The fill should be at the subject’s face level, and should get rid of any remaining shadows. The intensity of the fill light should be about half that of the key light.
  • Bring in the hair light. The back light separates you from the background. It can be placed anywhere behind the subject. Make sure to keep it out of the shot. Angle it down from a high position to achieve a sharp outline on the edge of the subject.

If there are lights behind you, make sure these have a very low intensity so they do not distract from you, the subject of the shot. To make the shot more interesting you can add some fun colored lights behind you as long as they are not too distracting. This is obviously not needed but it’s a fun thing to add.

Application settings

We are almost there! Let’s tweak some settings to make the camera quality appear much higher.

Turn things off.

I have a Logitech webcam. This camera comes with a little control panel that allows for some post process tweaking of the camera feed. If you are well lit you can turn off a bunch of things in this interface. First of all, keep the settings for brightness, contrast, saturation and sharpness at the default. We will fix these at a later stage.

  1. Set the white balance on a fixed setting and make sure it is not set to auto. For my setup a white balance at around 4000 works.
  2. Make sure to turn off Backlight compensation and Gain. We do not need these as we are well lit.
  3. In the next tab make sure exposure is set to “auto”. If you attempt to expose yourself manually with a Logitech webcam all hell brakes loose. The image either looks like crap or your framerate will drop significantly.
  4. Make sure to turn off Low Light compensation. There is no need for this as you are well lit.

Webcam settings

Color correction

I use OBS, which comes with a great plugin to color correct the video feed from your webcam. The smallest adjustments give a great result. Stay subtle with the changes and your video will look a lot better fast.

LUT

Instagram filters can make a simple picture of food look like a very fancy picture of food. You can use these same kinds of filters on webcams too! It’s amazing what a little cosmetic tweak can do to your video quality. The filters I’m talking about are called LUT. LUT’s are generally used in the professional film world to color grade a movie.

LUT’s are simple, easy-to-use filters that can be applied directly into OBS allowing your webcam presentation to become brighter or more cinematic. For a great free pack of LUT’s go here: https://gamingcareers.com/guides/30-free-webcam-filters-obs/

You can try one more thing

If you have a cheap camera with a shallow depth of field and your lights are set up well, you can use a program called xsplit vcam to create a software bokeh effect! Beware, you need a relatively strong graphics card and the lighting needs to be spot on. Also, the program is not free.

That's it

This is the result I got after a bit of research and tweaking settings.

Before

After

- \ No newline at end of file diff --git a/writing/how-to-sniff-out-the-glue-monster/_payload.json b/writing/how-to-sniff-out-the-glue-monster/_payload.json deleted file mode 100644 index 417b2f26..00000000 --- a/writing/how-to-sniff-out-the-glue-monster/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1429},["Reactive",2],{"content-query-AmPiZD777Q":3,"content-navigation-8C37fagqQL":313},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":308,"_id":309,"_source":310,"_file":311,"_extension":312},"/writing/how-to-sniff-out-the-glue-monster","writing",false,"","How to sniff out the Glue Monster","Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic...",1405727,"how-to-sniff-out-the-glue-monster","2023-03-18T13:00:21Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8mwj68dscwvzuvcdd4y.png","https://uniform.dev/blogs/how-to-sniff-out-the-glue-monster",[16,17,18,19],"javascript","architecture","composable","devops",22300,{"type":22,"children":23,"toc":301},"root",[24,43,48,68,81,86,91,99,106,111,130,135,153,158,163,169,220,225,230,236,244,249,254,262,276,281,286,291,296],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29,32,41],{"type":30,"value":31},"text","Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic platforms to ",{"type":25,"tag":33,"props":34,"children":38},"a",{"href":35,"rel":36},"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how",[37],"nofollow",[39],{"type":30,"value":40},"composable architectures",{"type":30,"value":42},", glue code that connects to systems or cleanses data has grown exponentially. ",{"type":25,"tag":26,"props":44,"children":45},{},[46],{"type":30,"value":47},"Reality is, you as developers must connect headless systems for a cohesive, feature-complete architecture, but that’s a messy task. The amount of glue you must create hinges on deadlines, the potential need to switch systems later, and the answers to these questions:",{"type":25,"tag":49,"props":50,"children":51},"ul",{},[52,58,63],{"type":25,"tag":53,"props":54,"children":55},"li",{},[56],{"type":30,"value":57},"Do you clean up that messy API response so its data fits the front end?",{"type":25,"tag":53,"props":59,"children":60},{},[61],{"type":30,"value":62},"Do you adapt your front-end components to specific API output and add logic locally?",{"type":25,"tag":53,"props":64,"children":65},{},[66],{"type":30,"value":67},"Do you separate domain data with design-related data, or mix up everything in data models in different headless systems?",{"type":25,"tag":26,"props":69,"children":70},{},[71],{"type":25,"tag":72,"props":73,"children":80},"img",{"alt":74,"loading":75,"provider":76,"sizes":77,"src":78,"width":79},"Glue Code SPREAD","lazy","cloudinary","sm:100vw","https://images.ctfassets.net/9ku1oyd4k3wo/5iPWgs3hiyQZb1O7cZECJt/671395cc3852d456f1dc02d34d6d5b2c/GlueCode_Blog_SPREAD.png",1280,[],{"type":25,"tag":26,"props":82,"children":83},{},[84],{"type":30,"value":85},"Glue code is a nightmare of technical debt that leads to less innovation, more development effort, and, ultimately, higher expense on hidden requirements.",{"type":25,"tag":26,"props":87,"children":88},{},[89],{"type":30,"value":90},"##Types of glue",{"type":25,"tag":26,"props":92,"children":93},{},[94],{"type":25,"tag":72,"props":95,"children":98},{"alt":96,"loading":75,"provider":76,"sizes":77,"src":97,"width":79},"Glue code Icon","https://images.ctfassets.net/9ku1oyd4k3wo/5n8VoHX3RPLBLFWg2IJsYP/f2e9ccc22bd7541b352b7bf19d24ffcb/GlueCode_Blog_Images_Glue_code_Icon.png",[],{"type":25,"tag":100,"props":101,"children":103},"h3",{"id":102},"code-that-queries-a-source-or-receives-data-that-maps-the-input-to-fit-something-else",[104],{"type":30,"value":105},"Code that queries a source or receives data that maps the input to fit something else. ",{"type":25,"tag":26,"props":107,"children":108},{},[109],{"type":30,"value":110},"An example is code that queries an API endpoint and retrieves a huge yet incomplete dataset for the following steps:",{"type":25,"tag":112,"props":113,"children":114},"ol",{},[115,120,125],{"type":25,"tag":53,"props":116,"children":117},{},[118],{"type":30,"value":119},"Map the initial result into a more specific object. ",{"type":25,"tag":53,"props":121,"children":122},{},[123],{"type":30,"value":124},"Enrich that object by querying another endpoint and add the result to the original. ",{"type":25,"tag":53,"props":126,"children":127},{},[128],{"type":30,"value":129},"Tidy up the code and create a final data set.",{"type":25,"tag":26,"props":131,"children":132},{},[133],{"type":30,"value":134},"Here’s a real-world use case: queries on a YouTube playlist and retrieval of the metadata on the videos there. The process runs as follows:",{"type":25,"tag":112,"props":136,"children":137},{},[138,143,148],{"type":25,"tag":53,"props":139,"children":140},{},[141],{"type":30,"value":142},"The code traverses the response to identify and arrange the video IDs in an array. ",{"type":25,"tag":53,"props":144,"children":145},{},[146],{"type":30,"value":147},"You query the YouTube video API for each video ID for all the needed data. ",{"type":25,"tag":53,"props":149,"children":150},{},[151],{"type":30,"value":152},"Given the massive amount of data that results, you go through the response for the exact data.",{"type":25,"tag":26,"props":154,"children":155},{},[156],{"type":30,"value":157},"In the case of a less reputable source than YouTube or a legacy API, any changes could break the data structure you assume is returned. Not only that, since you have no inkling of the type of the returned data, your data-mapping code must be defensive. Some fields might be empty or even nonexistent sometimes. ",{"type":25,"tag":26,"props":159,"children":160},{},[161],{"type":30,"value":162},"Plus, placing all that code in your front end spells complexity. What to do when you’re building another front end like a mobile app or an Apple TV app? Do you duplicate the code in all the new channels?",{"type":25,"tag":100,"props":164,"children":166},{"id":165},"polluting-stable-domain-data-with-volatile-design-data",[167],{"type":30,"value":168},"Polluting stable domain data with volatile design data",{"type":25,"tag":26,"props":170,"children":171},{},[172,174,181,183,189,190,196,197,203,204,210,212,218],{"type":30,"value":173},"Generally, a data model for videos contains the following fields: ",{"type":25,"tag":175,"props":176,"children":178},"code",{"className":177},[],[179],{"type":30,"value":180},"titleClick to copy",{"type":30,"value":182},", ",{"type":25,"tag":175,"props":184,"children":186},{"className":185},[],[187],{"type":30,"value":188},"descriptionClick to copy",{"type":30,"value":182},{"type":25,"tag":175,"props":191,"children":193},{"className":192},[],[194],{"type":30,"value":195},"poster imageClick to copy",{"type":30,"value":182},{"type":25,"tag":175,"props":198,"children":200},{"className":199},[],[201],{"type":30,"value":202},"durationClick to copy",{"type":30,"value":182},{"type":25,"tag":175,"props":205,"children":207},{"className":206},[],[208],{"type":30,"value":209},"upload dateClick to copy",{"type":30,"value":211},", and ",{"type":25,"tag":175,"props":213,"children":215},{"className":214},[],[216],{"type":30,"value":217},"video fileClick to copy",{"type":30,"value":219},". But what to do if the product owner wants to highlight this video as “featured” for the week? You would add a “featured” checkbox to the data model and ask content editors to check “featured” in the CMS. In the front-end code, you would look for the “featured” flag and show a bigger version of the video card along with a boldfaced title. If the video appears in another context, like a search result or on another website, that “featured” flag has no meaning.",{"type":25,"tag":26,"props":221,"children":222},{},[223],{"type":30,"value":224},"In time, you would add other checkboxes and dropdowns to show the content differently in various contexts, causing the content model to grow. At that point, if an architect who’s cleaning house removes a checkbox, multiple projects that leverage the video would crash and burn.",{"type":25,"tag":26,"props":226,"children":227},{},[228],{"type":30,"value":229},"To sustain a setup with data models that are regularly polluted in that manner, you must build a plethora of defensive code that catches all the additional data. That’s how undesirable glue code and tech debt build up.",{"type":25,"tag":100,"props":231,"children":233},{"id":232},"creating-glue-layers-by-vendors-to-stay-sticky-pun-intended-with-customers",[234],{"type":30,"value":235},"Creating glue layers by vendors to stay sticky (pun intended) with customers",{"type":25,"tag":26,"props":237,"children":238},{},[239],{"type":25,"tag":72,"props":240,"children":243},{"alt":241,"loading":75,"provider":76,"sizes":77,"src":242,"width":79},"Glue Code STICKY architecture","https://images.ctfassets.net/9ku1oyd4k3wo/5zwPAAafgm4qZpoU9H2Bbw/8d4928142367cd19f8b76528bfc61ef0/GlueCode_Blog_STICKY.png",[],{"type":25,"tag":26,"props":245,"children":246},{},[247],{"type":30,"value":248},"The more “official” glue vendors add to a composable system, the harder it is for their customers to perform updates, or switch or add components. The more tech debt, the more support hours vendors can sell. Also, since modern, more agile vendors are bound to outpace the less competitive ones in time, the wise thing for the latter to do is adopt solutions that offer hyperflexible systems at lower cost, enabling their customers to focus on storytelling and solving business problems for their audience without sticky glue.",{"type":25,"tag":26,"props":250,"children":251},{},[252],{"type":30,"value":253},"##Ways to deglue",{"type":25,"tag":26,"props":255,"children":256},{},[257],{"type":25,"tag":72,"props":258,"children":261},{"alt":259,"loading":75,"provider":76,"sizes":77,"src":260,"width":79},"Unglue Icon","https://images.ctfassets.net/9ku1oyd4k3wo/16F6FELfCSkZjE8cCuRauw/2c81553462dd1d16be36b2a56dffd443/GlueCode_Blog_Images_Unglue_Icon.png",[],{"type":25,"tag":26,"props":263,"children":264},{},[265,267,274],{"type":30,"value":266},"The new product category digital experience composition facilitates degluing. Typically, you create pages on ",{"type":25,"tag":33,"props":268,"children":271},{"href":269,"rel":270},"https://uniform.dev/what-is-digital-experience-composition",[37],[272],{"type":30,"value":273},"digital experience composition platforms (DXCPs)",{"type":30,"value":275}," with data from numerous headless sources without having to understand how those sources work. With the DXCP hosting a brand’s design system in page components, you can drag and drop them onto the page and connect data from external sources to them. No need to write connection code at all. ",{"type":25,"tag":26,"props":277,"children":278},{},[279],{"type":30,"value":280},"DXCPs map component properties to specific data fields of APIs. That means you could add to your video component an image from a DAM, a title and description from YouTube, and viewer metadata from an ERP system. Want to feature the video somewhere? Simply add a checkbox in the DXCP in the context of the component in question without affecting the data model of external systems. As a last step, add the data attached to the component to the CDN edge for caching. Alternatively, grab the information on the data source and query it yourself. ",{"type":25,"tag":26,"props":282,"children":283},{},[284],{"type":30,"value":285},"The front end contains a light and fast SDK that can query component compositions in the CDN-edge cache. With the content mapped explicitly to your component properties in the DXCP, no data mapping is required. And you are now deglued!—with no need to build code to straighten up data or query external systems.",{"type":25,"tag":26,"props":287,"children":288},{},[289],{"type":30,"value":290},"Want to add a tiny bit of glue nonetheless? The SDK also contains hooks through which you can enrich or map data from the API before sending the data to the components.",{"type":25,"tag":26,"props":292,"children":293},{},[294],{"type":30,"value":295},"In the meantime, content editors can take advantage of the DXCP’s live-preview feature to contextually edit the website by connecting new headless sources and mapping API responses to the components you created. Updating a CMS or adding a legacy source takes only a few clicks, code free. ",{"type":25,"tag":26,"props":297,"children":298},{},[299],{"type":30,"value":300},"Moreover, content editors can manually type in content on the DXCP and, later on, attach a CMS or commerce system that replaces the static copy with dynamic pointers from component fields to API responses. Again, no code is required to accommodate those functions.",{"title":7,"searchDepth":302,"depth":302,"links":303},2,[304,306,307],{"id":102,"depth":305,"text":105},3,{"id":165,"depth":305,"text":168},{"id":232,"depth":305,"text":235},"markdown","content:4.writing:how-to-sniff-out-the-glue-monster.md","content","4.writing/how-to-sniff-out-the-glue-monster.md","md",[314,317,1109,1184,1420,1423,1426],{"title":315,"_path":316},"About","/about",{"title":318,"_path":319,"children":320},"videos","/videos",[321,340,359,405,406,458,561,584,606,934],{"title":322,"_path":323,"children":324},"Alive And Kicking","/videos/alive-and-kicking",[325,328,331,334,337],{"title":326,"_path":327},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":329,"_path":330},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":332,"_path":333},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":335,"_path":336},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":338,"_path":339},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":341,"_path":342,"children":343},"Headless Creator","/videos/headless-creator",[344,347,350,353,356],{"title":345,"_path":346},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":348,"_path":349},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":351,"_path":352},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":354,"_path":355},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":357,"_path":358},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":360,"_path":361,"children":362},"Hygraph","/videos/hygraph",[363,366,369,372,375,378,381,384,387,390,393,396,399,402],{"title":364,"_path":365},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":367,"_path":368},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":370,"_path":371},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":373,"_path":374},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":376,"_path":377},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":379,"_path":380},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":382,"_path":383},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":385,"_path":386},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":388,"_path":389},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":391,"_path":392},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":394,"_path":395},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":397,"_path":398},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":400,"_path":401},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":403,"_path":404},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":318,"_path":319},{"title":407,"_path":408,"children":409},"Live Hygraph","/videos/live-hygraph",[410,413,416,419,422,425,428,431,434,437,440,443,446,449,452,455],{"title":411,"_path":412},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":414,"_path":415},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":417,"_path":418},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":420,"_path":421},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":423,"_path":424},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":426,"_path":427},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":429,"_path":430},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":432,"_path":433},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":435,"_path":436},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":438,"_path":439},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":441,"_path":442},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":444,"_path":445},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":447,"_path":448},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":450,"_path":451},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":453,"_path":454},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":456,"_path":457},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":459,"_path":460,"children":461},"Live Uniform","/videos/live-uniform",[462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,537,540,543,546,549,552,555,558],{"title":463,"_path":464},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":466,"_path":467},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":469,"_path":470},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":472,"_path":473},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":475,"_path":476},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":478,"_path":479},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":481,"_path":482},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":484,"_path":485},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":487,"_path":488},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":490,"_path":491},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":493,"_path":494},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":496,"_path":497},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":499,"_path":500},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":502,"_path":503},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":505,"_path":506},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":508,"_path":509},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":511,"_path":512},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":514,"_path":515},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":517,"_path":518},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":520,"_path":521},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":523,"_path":524},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":526,"_path":527},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":529,"_path":530},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":532,"_path":533},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":535,"_path":536},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":538,"_path":539},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":541,"_path":542},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":544,"_path":545},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":547,"_path":548},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":550,"_path":551},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":553,"_path":554},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":556,"_path":557},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":559,"_path":560},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":562,"_path":563,"children":564},"Misc Streams","/videos/misc-streams",[565,568,571,574,576,578,581],{"title":566,"_path":567},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":569,"_path":570},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":572,"_path":573},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":556,"_path":575},"/videos/misc-streams/003-jvgiaotcerq",{"title":547,"_path":577},"/videos/misc-streams/004-ekut1koa2n8",{"title":579,"_path":580},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":582,"_path":583},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":585,"_path":586,"children":587},"Mp","/videos/mp",[588,591,594,597,600,603],{"title":589,"_path":590},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":592,"_path":593},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":595,"_path":596},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":598,"_path":599},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":601,"_path":602},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":604,"_path":605},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":607,"_path":608,"children":609},"Tim","/videos/tim",[610,612,615,618,621,624,627,630,633,636,639,642,645,648,651,654,657,660,662,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,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],{"title":329,"_path":611},"/videos/tim/000-mvq-_s20ndk",{"title":613,"_path":614},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":616,"_path":617},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":619,"_path":620},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":622,"_path":623},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":625,"_path":626},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":628,"_path":629},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":631,"_path":632},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":634,"_path":635},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":637,"_path":638},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":640,"_path":641},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":643,"_path":644},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":646,"_path":647},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":649,"_path":650},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":652,"_path":653},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":655,"_path":656},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":658,"_path":659},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":332,"_path":661},"/videos/tim/017-m0mrligs6i0",{"title":326,"_path":663},"/videos/tim/018-hhpitreyobi",{"title":665,"_path":666},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":668,"_path":669},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":671,"_path":672},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":674,"_path":675},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":677,"_path":678},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":680,"_path":681},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":683,"_path":684},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":686,"_path":687},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":689,"_path":690},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":692,"_path":693},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":695,"_path":696},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":698,"_path":699},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":701,"_path":702},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":704,"_path":705},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":707,"_path":708},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":710,"_path":711},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":713,"_path":714},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":716,"_path":717},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":719,"_path":720},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":722,"_path":723},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":725,"_path":726},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":728,"_path":729},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":731,"_path":732},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":734,"_path":735},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":737,"_path":738},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":740,"_path":741},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":743,"_path":744},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":746,"_path":747},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":749,"_path":750},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":752,"_path":753},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":755,"_path":756},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":758,"_path":759},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":761,"_path":762},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":764,"_path":765},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":767,"_path":768},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":770,"_path":771},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":773,"_path":774},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":776,"_path":777},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":779,"_path":780},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":782,"_path":783},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":785,"_path":786},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":788,"_path":789},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":791,"_path":792},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":794,"_path":795},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":797,"_path":798},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":800,"_path":801},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":803,"_path":804},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":806,"_path":807},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":809,"_path":810},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":812,"_path":813},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":815,"_path":816},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":818,"_path":819},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":821,"_path":822},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":824,"_path":825},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":827,"_path":828},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":830,"_path":831},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":833,"_path":834},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":836,"_path":837},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":839,"_path":840},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":842,"_path":843},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":845,"_path":846},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":848,"_path":849},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":851,"_path":852},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":854,"_path":855},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":857,"_path":858},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":860,"_path":861},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":863,"_path":864},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":866,"_path":867},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":869,"_path":870},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":872,"_path":873},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":875,"_path":876},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":878,"_path":879},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":881,"_path":882},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":884,"_path":885},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":887,"_path":888},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":890,"_path":891},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":893,"_path":894},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":896,"_path":897},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":899,"_path":900},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":902,"_path":903},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":905,"_path":906},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":908,"_path":909},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":911,"_path":912},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":914,"_path":915},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":917,"_path":918},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":920,"_path":921},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":923,"_path":924},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":926,"_path":927},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":929,"_path":930},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":932,"_path":933},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":935,"_path":936,"children":937},"Uniform","/videos/uniform",[938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106],{"title":939,"_path":940},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":942,"_path":943},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":945,"_path":946},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":948,"_path":949},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":951,"_path":952},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":954,"_path":955},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":957,"_path":958},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":960,"_path":961},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":963,"_path":964},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":966,"_path":967},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":969,"_path":970},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":972,"_path":973},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":975,"_path":976},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":978,"_path":979},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":981,"_path":982},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":984,"_path":985},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":987,"_path":988},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":990,"_path":991},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":993,"_path":994},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":996,"_path":997},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":999,"_path":1000},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1002,"_path":1003},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1005,"_path":1006},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1008,"_path":1009},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1011,"_path":1012},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1014,"_path":1015},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1017,"_path":1018},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1020,"_path":1021},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1023,"_path":1024},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1026,"_path":1027},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1029,"_path":1030},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1032,"_path":1033},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1035,"_path":1036},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1038,"_path":1039},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1041,"_path":1042},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1044,"_path":1045},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1047,"_path":1048},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1050,"_path":1051},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1053,"_path":1054},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1056,"_path":1057},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1059,"_path":1060},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1062,"_path":1063},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1065,"_path":1066},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1068,"_path":1069},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1071,"_path":1072},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1074,"_path":1075},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1077,"_path":1078},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1080,"_path":1081},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1083,"_path":1084},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1086,"_path":1087},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1089,"_path":1090},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1092,"_path":1093},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1095,"_path":1096},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1098,"_path":1099},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1101,"_path":1102},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1104,"_path":1105},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1107,"_path":1108},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1110,"_path":1111,"children":1112},"Writing","/writing",[1113,1116,1119,1122,1125,1126,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181],{"title":1114,"_path":1115},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1117,"_path":1118},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1120,"_path":1121},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1123,"_path":1124},"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":8,"_path":4},{"title":1110,"_path":1111},{"title":1128,"_path":1129},"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":1131,"_path":1132},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1134,"_path":1135},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1137,"_path":1138},"My Fitness Story","/writing/my-fitness-story",{"title":1140,"_path":1141},"New job alert!","/writing/new-job-alert",{"title":1143,"_path":1144},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1146,"_path":1147},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1149,"_path":1150},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1152,"_path":1153},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1155,"_path":1156},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1158,"_path":1159},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1161,"_path":1162},"The MACH monolith","/writing/the-mach-monolith",{"title":1164,"_path":1165},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1167,"_path":1168},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1170,"_path":1171},"This is headless 2.0","/writing/this-is-headless-20",{"title":1173,"_path":1174},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1176,"_path":1177},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1179,"_path":1180},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1182,"_path":1183},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1185,"_path":1186,"children":1187},"Speaking","/speaking",[1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1227,1230,1233,1236,1239,1242,1245,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1284,1287,1290,1293,1296,1299,1302,1305,1308,1311,1314,1317,1320,1323,1326,1329,1332,1335,1338,1341,1344,1347,1350,1353,1356,1359,1362,1365,1368,1371,1374,1377,1380,1383,1386,1389,1392,1395,1398,1401,1404,1407,1410,1413,1416,1419],{"title":1189,"_path":1190},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1192,"_path":1193},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1195,"_path":1196},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1198,"_path":1199},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1201,"_path":1202},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1204,"_path":1205},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1207,"_path":1208},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1210,"_path":1211},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1213,"_path":1214},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1216,"_path":1217},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1219,"_path":1220},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1222,"_path":1223},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1225,"_path":1226},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1228,"_path":1229},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1231,"_path":1232},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1234,"_path":1235},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1237,"_path":1238},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1240,"_path":1241},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1243,"_path":1244},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1246,"_path":1247},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1249,"_path":1250},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1252,"_path":1253},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1255,"_path":1256},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1258,"_path":1259},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1261,"_path":1262},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1264,"_path":1265},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1267,"_path":1268},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1270,"_path":1271},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1273,"_path":1274},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1276,"_path":1277},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1279,"_path":1280},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1282,"_path":1283},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1285,"_path":1286},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1288,"_path":1289},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1291,"_path":1292},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1294,"_path":1295},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1297,"_path":1298},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1300,"_path":1301},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1303,"_path":1304},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1306,"_path":1307},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1309,"_path":1310},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1312,"_path":1313},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1315,"_path":1316},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1318,"_path":1319},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1321,"_path":1322},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1324,"_path":1325},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1327,"_path":1328},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1330,"_path":1331},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1333,"_path":1334},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1336,"_path":1337},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1339,"_path":1340},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1342,"_path":1343},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1345,"_path":1346},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1348,"_path":1349},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1351,"_path":1352},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1354,"_path":1355},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1357,"_path":1358},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1360,"_path":1361},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1363,"_path":1364},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1366,"_path":1367},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1369,"_path":1370},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1372,"_path":1373},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1375,"_path":1376},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1378,"_path":1379},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1381,"_path":1382},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1384,"_path":1385},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1387,"_path":1388},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1390,"_path":1391},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1393,"_path":1394},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1396,"_path":1397},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1399,"_path":1400},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1402,"_path":1403},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1405,"_path":1406},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1408,"_path":1409},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1411,"_path":1412},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1414,"_path":1415},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1417,"_path":1418},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1185,"_path":1186},{"title":1421,"_path":1422},"live streams","/livestreams",{"title":1424,"_path":1425},"press kit","/presskit",{"title":1427,"_path":1428},"alive and kicking","/alive-and-kicking",1718484379684] \ No newline at end of file diff --git a/writing/how-to-sniff-out-the-glue-monster/index.html b/writing/how-to-sniff-out-the-glue-monster/index.html deleted file mode 100644 index 136e10a2..00000000 --- a/writing/how-to-sniff-out-the-glue-monster/index.html +++ /dev/null @@ -1,82 +0,0 @@ - - -How to sniff out the Glue Monster - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

How to sniff out the Glue Monster

Mar 18, 2023 at https://uniform.dev/blogs/how-to-sniff-out-the-glue-monster

Even though you don’t see it, glue code is everywhere. Since the pendulum swung from monolithic platforms to composable architectures, glue code that connects to systems or cleanses data has grown exponentially. 

Reality is, you as developers must connect headless systems for a cohesive, feature-complete architecture, but that’s a messy task. The amount of glue you must create hinges on deadlines, the potential need to switch systems later, and the answers to these questions:

  • Do you clean up that messy API response so its data fits the front end?
  • Do you adapt your front-end components to specific API output and add logic locally?
  • Do you separate domain data with design-related data, or mix up everything in data models in different headless systems?

Glue Code SPREAD

Glue code is a nightmare of technical debt that leads to less innovation, more development effort, and, ultimately, higher expense on hidden requirements.

##Types of glue

Glue code Icon

Code that queries a source or receives data that maps the input to fit something else. 

An example is code that queries an API endpoint and retrieves a huge yet incomplete dataset for the following steps:

  1. Map the initial result into a more specific object. 
  2. Enrich that object by querying another endpoint and add the result to the original. 
  3. Tidy up the code and create a final data set.

Here’s a real-world use case: queries on a YouTube playlist and retrieval of the metadata on the videos there. The process runs as follows:

  1. The code traverses the response to identify and arrange the video IDs in an array. 
  2. You query the YouTube video API for each video ID for all the needed data. 
  3. Given the massive amount of data that results, you go through the response for the exact data.

In the case of a less reputable source than YouTube or a legacy API, any changes could break the data structure you assume is returned. Not only that, since you have no inkling of the type of the returned data, your data-mapping code must be defensive. Some fields might be empty or even nonexistent sometimes. 

Plus, placing all that code in your front end spells complexity. What to do when you’re building another front end like a mobile app or an Apple TV app? Do you duplicate the code in all the new channels?

Polluting stable domain data with volatile design data

Generally, a data model for videos contains the following fields: titleClick to copy, descriptionClick to copy, poster imageClick to copy, durationClick to copy, upload dateClick to copy, and video fileClick to copy. But what to do if the product owner wants to highlight this video as “featured” for the week? You would add a “featured” checkbox to the data model and ask content editors to check “featured” in the CMS. In the front-end code, you would look for the “featured” flag and show a bigger version of the video card along with a boldfaced title. If the video appears in another context, like a search result or on another website, that “featured” flag has no meaning.

In time, you would add other checkboxes and dropdowns to show the content differently in various contexts, causing the content model to grow. At that point, if an architect who’s cleaning house removes a checkbox, multiple projects that leverage the video would crash and burn.

To sustain a setup with data models that are regularly polluted in that manner, you must build a plethora of defensive code that catches all the additional data. That’s how undesirable glue code and tech debt build up.

Creating glue layers by vendors to stay sticky (pun intended) with customers

Glue Code STICKY architecture

The more “official” glue vendors add to a composable system, the harder it is for their customers to perform updates, or switch or add components. The more tech debt, the more support hours vendors can sell. Also, since modern, more agile vendors are bound to outpace the less competitive ones in time, the wise thing for the latter to do is adopt solutions that offer hyperflexible systems at lower cost, enabling their customers to focus on storytelling and solving business problems for their audience without sticky glue.

##Ways to deglue

Unglue Icon

The new product category digital experience composition facilitates degluing. Typically, you create pages on digital experience composition platforms (DXCPs) with data from numerous headless sources without having to understand how those sources work. With the DXCP hosting a brand’s design system in page components, you can drag and drop them onto the page and connect data from external sources to them. No need to write connection code at all. 

DXCPs map component properties to specific data fields of APIs. That means you could add to your video component an image from a DAM, a title and description from YouTube, and viewer metadata from an ERP system. Want to feature the video somewhere? Simply add a checkbox in the DXCP in the context of the component in question without affecting the data model of external systems. As a last step, add the data attached to the component to the CDN edge for caching. Alternatively, grab the information on the data source and query it yourself. 

The front end contains a light and fast SDK that can query component compositions in the CDN-edge cache. With the content mapped explicitly to your component properties in the DXCP, no data mapping is required. And you are now deglued!—with no need to build code to straighten up data or query external systems.

Want to add a tiny bit of glue nonetheless? The SDK also contains hooks through which you can enrich or map data from the API before sending the data to the components.

In the meantime, content editors can take advantage of the DXCP’s live-preview feature to contextually edit the website by connecting new headless sources and mapping API responses to the components you created. Updating a CMS or adding a legacy source takes only a few clicks, code free. 

Moreover, content editors can manually type in content on the DXCP and, later on, attach a CMS or commerce system that replaces the static copy with dynamic pointers from component fields to API responses. Again, no code is required to accommodate those functions.

- \ No newline at end of file diff --git a/writing/index.html b/writing/index.html index 65360830..dc064fd7 100644 --- a/writing/index.html +++ b/writing/index.html @@ -5,13 +5,13 @@ - - + + - + - - - - - + + + + + - - - - - - - - - + + + + + - - - - -
- \ No newline at end of file + + + + +

Writing

:articles{:small="false"}

+ \ No newline at end of file diff --git a/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro/_payload.json b/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro/_payload.json deleted file mode 100644 index 845a2272..00000000 --- a/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1396},["Reactive",2],{"content-query-JywE4Gs32a":3,"content-navigation-8C37fagqQL":280},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":19,"body":20,"_type":275,"_id":276,"_source":277,"_file":278,"_extension":279},"/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","writing",false,"","Level up your collaboration game: Developer insights for winning with marketing pros","Building outstanding user experiences takes, first and foremost, effective collaboration between...",1456239,"level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro","2023-05-03T15:49:29Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhfuu567f1khlxvglcn0.png","https://uniform.dev/blogs/level-up-your-collaboration-game-developer-insights-for-winning-with",[16,17,18],"webdev","marketing","collaboration",22300,{"type":21,"children":22,"toc":268},"root",[23,31,36,41,46,51,56,92,97,102,126,131,138,143,166,171,177,182,195,200,206,211,216,232,245,251,256],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28],{"type":29,"value":30},"text","Building outstanding user experiences takes, first and foremost, effective collaboration between marketing and development teams. Oftentimes, however, those teams’ different perspectives lead to misunderstandings and opacity, which could seriously impact progress and revenue. Over the last two years of interacting and working within a marketing department as a seasoned technical leader, I've developed strategies to enhance collaboration, boost cross-team communications, and promote project success. ",{"type":24,"tag":25,"props":32,"children":33},{},[34],{"type":29,"value":35},"Below are the steps to take.",{"type":24,"tag":25,"props":37,"children":38},{},[39],{"type":29,"value":40},"##Set clear objectives",{"type":24,"tag":25,"props":42,"children":43},{},[44],{"type":29,"value":45},"Since both development and marketing play vital roles in implementing user experiences that drive business goals, the contributors in question must share clear, common objectives, e.g., projected sales, number of service signups, and brand messaging. ",{"type":24,"tag":25,"props":47,"children":48},{},[49],{"type":29,"value":50},"Reaching those goals sometimes requires both technical and marketing-driven activities, such as code refactoring, site-performance boosts, messaging-success measurements, and analytics gathering. Those work streams, whose specifics are highly contextual to the specific job marketers or developers do, could easily cause conflict.",{"type":24,"tag":25,"props":52,"children":53},{},[54],{"type":29,"value":55},"To avoid miscommunication, do the following:",{"type":24,"tag":57,"props":58,"children":59},"ol",{},[60,72,82],{"type":24,"tag":61,"props":62,"children":63},"li",{},[64,70],{"type":24,"tag":65,"props":66,"children":67},"strong",{},[68],{"type":29,"value":69},"Invite participation from all team members.",{"type":29,"value":71}," Involve them in planning sessions, explain the background of the strategies to be built, and ascertain that everyone is on the same page.",{"type":24,"tag":61,"props":73,"children":74},{},[75,80],{"type":24,"tag":65,"props":76,"children":77},{},[78],{"type":29,"value":79},"Set SMART goals.",{"type":29,"value":81}," Create specific, measurable, attainable, relevant, and time-bound objectives.",{"type":24,"tag":61,"props":83,"children":84},{},[85,90],{"type":24,"tag":65,"props":86,"children":87},{},[88],{"type":29,"value":89},"Plan together",{"type":29,"value":91},". Align schedules based on the teams’ different workflows.",{"type":24,"tag":25,"props":93,"children":94},{},[95],{"type":29,"value":96},"##Understand how the other discipline works",{"type":24,"tag":25,"props":98,"children":99},{},[100],{"type":29,"value":101},"A healthy dose of the qualities below is key:",{"type":24,"tag":103,"props":104,"children":105},"ul",{},[106,116],{"type":24,"tag":61,"props":107,"children":108},{},[109,114],{"type":24,"tag":65,"props":110,"children":111},{},[112],{"type":29,"value":113},"Respect.",{"type":29,"value":115}," To minimize friction, respect for each other's operating methods, styles, and process is essential. Besides acquiring an understanding of the various workflows, team members must be willing to compromise for alignment’s sake.",{"type":24,"tag":61,"props":117,"children":118},{},[119,124],{"type":24,"tag":65,"props":120,"children":121},{},[122],{"type":29,"value":123},"Patience.",{"type":29,"value":125}," Be accommodating, thoughtful, and tolerant when explaining processes to the other team. A unified approach like Agile project management can forge collaboration by breaking projects into stages, constantly engaging with stakeholders, and enabling both teams to simultaneously track goals and meet objectives.",{"type":24,"tag":25,"props":127,"children":128},{},[129],{"type":29,"value":130},"Remember, a world of difference exists in how developers and marketers think. Establishing a mechanism through which they can learn about one another's tasks and routines goes a long way in championing collaboration.",{"type":24,"tag":132,"props":133,"children":135},"h2",{"id":134},"leverage-each-others-skills",[136],{"type":29,"value":137},"Leverage each other’s skills",{"type":24,"tag":25,"props":139,"children":140},{},[141],{"type":29,"value":142},"Developers and marketers contribute unique, value-add skills:",{"type":24,"tag":103,"props":144,"children":145},{},[146,156],{"type":24,"tag":61,"props":147,"children":148},{},[149,154],{"type":24,"tag":65,"props":150,"children":151},{},[152],{"type":29,"value":153},"Developers",{"type":29,"value":155}," can offer product or technical insights by clarifying why certain code approaches and rendering modes help reach marketing goals.",{"type":24,"tag":61,"props":157,"children":158},{},[159,164],{"type":24,"tag":65,"props":160,"children":161},{},[162],{"type":29,"value":163},"Marketers",{"type":29,"value":165}," can share user feedback, messaging learnings, and test data with developers as support for spiffing up the UI and product features.",{"type":24,"tag":25,"props":167,"children":168},{},[169],{"type":29,"value":170},"Essentially, developers work in the context of the “how,” and marketers, of the ”why.” Both are equally valuable for successful projects.",{"type":24,"tag":132,"props":172,"children":174},{"id":173},"make-data-based-decisions",[175],{"type":29,"value":176},"Make data-based decisions",{"type":24,"tag":25,"props":178,"children":179},{},[180],{"type":29,"value":181},"Data is crucial for measuring success. Developers and marketers play a different role vis-à-vis data:",{"type":24,"tag":103,"props":183,"children":184},{},[185,190],{"type":24,"tag":61,"props":186,"children":187},{},[188],{"type":29,"value":189},"Developers create technology for harnessing data that marketers need to optimize conversion.",{"type":24,"tag":61,"props":191,"children":192},{},[193],{"type":29,"value":194},"Marketers collect data and strategize campaigns accordingly. ",{"type":24,"tag":25,"props":196,"children":197},{},[198],{"type":29,"value":199},"Using analytics tools and personalization engines is instrumental for fulfilling project goals. Ultimately, developers must find a way to integrate “hated tools” so that both teams are happy.",{"type":24,"tag":132,"props":201,"children":203},{"id":202},"use-the-tools-that-appeal-to-both-teams",[204],{"type":29,"value":205},"Use the tools that appeal to both teams",{"type":24,"tag":25,"props":207,"children":208},{},[209],{"type":29,"value":210},"Tools that propel collaboration fall into different categories. For example, Jira and Linear are process systems, and Figma and Zeplin are design devices. Other tools are slated for website architecture.",{"type":24,"tag":25,"props":212,"children":213},{},[214],{"type":29,"value":215},"Even though developers love the freedom to choose the tools they prefer to build websites, it comes at the price of abstract interfaces and many open tabs for marketers. As technology evolves, techies must keep up with industry trends without being bogged down by marketers’ tool choices. That’s where headless has failed us: The pendulum of architecture choices to build websites has swung too far. Developers love it, yet marketers hate it. ",{"type":24,"tag":25,"props":217,"children":218},{},[219,221,230],{"type":29,"value":220},"A ",{"type":24,"tag":222,"props":223,"children":227},"a",{"href":224,"rel":225},"https://uniform.dev/what-is-digital-experience-composition",[226],"nofollow",[228],{"type":29,"value":229},"digital experience composition platform (DXCP)",{"type":29,"value":231}," affords both developers and marketers control of features, content, and the ever-ticking clock. Though technically agnostic, a DXCP—",{"type":24,"tag":103,"props":233,"children":234},{},[235,240],{"type":24,"tag":61,"props":236,"children":237},{},[238],{"type":29,"value":239},"Helps developers funnel data to a front-end channel of their choice without compromises. ",{"type":24,"tag":61,"props":241,"children":242},{},[243],{"type":29,"value":244},"Enables marketers to independently and visually edit content in a no-code environment without having to seek developer assistance.",{"type":24,"tag":132,"props":246,"children":248},{"id":247},"faithfully-perform-the-paramount-steps",[249],{"type":29,"value":250},"Faithfully perform the paramount steps",{"type":24,"tag":25,"props":252,"children":253},{},[254],{"type":29,"value":255},"By setting clear objectives, understanding each other's processes, leveraging each other’s unique skills, making data-driven decisions, and adopting tools that cater to both parties, marketing and development teams can cooperate smoothly, eliminate roadblocks, and deliver phenomenal projects. With the right strategies and mindset, the sky's the limit for the potential of those high-performing teams to achieve exceptional results.",{"type":24,"tag":25,"props":257,"children":258},{},[259,266],{"type":24,"tag":222,"props":260,"children":263},{"href":261,"rel":262},"https://uniform.dev/demo",[226],[264],{"type":29,"value":265},"Check out Uniform DXCP",{"type":29,"value":267},", on which developers and business teams can access all the tools they need to deliver well and fast.",{"title":7,"searchDepth":269,"depth":269,"links":270},2,[271,272,273,274],{"id":134,"depth":269,"text":137},{"id":173,"depth":269,"text":176},{"id":202,"depth":269,"text":205},{"id":247,"depth":269,"text":250},"markdown","content:4.writing:level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","content","4.writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro.md","md",[281,284,1076,1151,1387,1390,1393],{"title":282,"_path":283},"About","/about",{"title":285,"_path":286,"children":287},"videos","/videos",[288,307,326,372,373,425,528,551,573,901],{"title":289,"_path":290,"children":291},"Alive And Kicking","/videos/alive-and-kicking",[292,295,298,301,304],{"title":293,"_path":294},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":296,"_path":297},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":299,"_path":300},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":302,"_path":303},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":305,"_path":306},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":308,"_path":309,"children":310},"Headless Creator","/videos/headless-creator",[311,314,317,320,323],{"title":312,"_path":313},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":315,"_path":316},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":318,"_path":319},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":321,"_path":322},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":324,"_path":325},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":327,"_path":328,"children":329},"Hygraph","/videos/hygraph",[330,333,336,339,342,345,348,351,354,357,360,363,366,369],{"title":331,"_path":332},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":334,"_path":335},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":337,"_path":338},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":340,"_path":341},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":343,"_path":344},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":346,"_path":347},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":349,"_path":350},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":352,"_path":353},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":355,"_path":356},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":358,"_path":359},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":361,"_path":362},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":364,"_path":365},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":367,"_path":368},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":370,"_path":371},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":285,"_path":286},{"title":374,"_path":375,"children":376},"Live Hygraph","/videos/live-hygraph",[377,380,383,386,389,392,395,398,401,404,407,410,413,416,419,422],{"title":378,"_path":379},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":381,"_path":382},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":384,"_path":385},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":387,"_path":388},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":390,"_path":391},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":393,"_path":394},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":396,"_path":397},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":399,"_path":400},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":402,"_path":403},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":405,"_path":406},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":408,"_path":409},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":411,"_path":412},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":414,"_path":415},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":417,"_path":418},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":420,"_path":421},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":423,"_path":424},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":426,"_path":427,"children":428},"Live Uniform","/videos/live-uniform",[429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,510,513,516,519,522,525],{"title":430,"_path":431},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":433,"_path":434},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":436,"_path":437},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":439,"_path":440},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":442,"_path":443},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":445,"_path":446},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":448,"_path":449},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":451,"_path":452},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":454,"_path":455},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":457,"_path":458},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":460,"_path":461},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":463,"_path":464},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":466,"_path":467},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":469,"_path":470},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":472,"_path":473},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":475,"_path":476},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":478,"_path":479},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":481,"_path":482},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":484,"_path":485},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":487,"_path":488},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":490,"_path":491},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":493,"_path":494},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":496,"_path":497},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":499,"_path":500},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":502,"_path":503},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":505,"_path":506},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":508,"_path":509},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":511,"_path":512},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":514,"_path":515},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":517,"_path":518},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":520,"_path":521},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":523,"_path":524},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":526,"_path":527},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":529,"_path":530,"children":531},"Misc Streams","/videos/misc-streams",[532,535,538,541,543,545,548],{"title":533,"_path":534},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":536,"_path":537},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":539,"_path":540},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":523,"_path":542},"/videos/misc-streams/003-jvgiaotcerq",{"title":514,"_path":544},"/videos/misc-streams/004-ekut1koa2n8",{"title":546,"_path":547},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":549,"_path":550},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":552,"_path":553,"children":554},"Mp","/videos/mp",[555,558,561,564,567,570],{"title":556,"_path":557},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":559,"_path":560},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":562,"_path":563},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":565,"_path":566},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":568,"_path":569},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":571,"_path":572},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":574,"_path":575,"children":576},"Tim","/videos/tim",[577,579,582,585,588,591,594,597,600,603,606,609,612,615,618,621,624,627,629,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,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],{"title":296,"_path":578},"/videos/tim/000-mvq-_s20ndk",{"title":580,"_path":581},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":583,"_path":584},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":586,"_path":587},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":589,"_path":590},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":592,"_path":593},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":595,"_path":596},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":598,"_path":599},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":601,"_path":602},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":604,"_path":605},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":607,"_path":608},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":610,"_path":611},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":613,"_path":614},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":616,"_path":617},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":619,"_path":620},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":622,"_path":623},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":625,"_path":626},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":299,"_path":628},"/videos/tim/017-m0mrligs6i0",{"title":293,"_path":630},"/videos/tim/018-hhpitreyobi",{"title":632,"_path":633},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":635,"_path":636},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":638,"_path":639},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":641,"_path":642},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":644,"_path":645},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":647,"_path":648},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":650,"_path":651},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":653,"_path":654},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":656,"_path":657},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":659,"_path":660},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":662,"_path":663},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":665,"_path":666},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":668,"_path":669},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":671,"_path":672},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":674,"_path":675},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":677,"_path":678},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":680,"_path":681},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":683,"_path":684},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":686,"_path":687},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":689,"_path":690},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":692,"_path":693},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":695,"_path":696},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":698,"_path":699},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":701,"_path":702},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":704,"_path":705},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":707,"_path":708},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":710,"_path":711},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":713,"_path":714},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":716,"_path":717},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":719,"_path":720},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":722,"_path":723},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":725,"_path":726},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":728,"_path":729},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":731,"_path":732},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":734,"_path":735},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":737,"_path":738},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":740,"_path":741},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":743,"_path":744},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":746,"_path":747},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":749,"_path":750},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":752,"_path":753},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":755,"_path":756},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":758,"_path":759},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":761,"_path":762},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":764,"_path":765},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":767,"_path":768},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":770,"_path":771},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":773,"_path":774},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":776,"_path":777},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":779,"_path":780},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":782,"_path":783},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":785,"_path":786},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":788,"_path":789},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":791,"_path":792},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":794,"_path":795},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":797,"_path":798},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":800,"_path":801},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":803,"_path":804},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":806,"_path":807},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":809,"_path":810},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":812,"_path":813},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":815,"_path":816},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":818,"_path":819},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":821,"_path":822},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":824,"_path":825},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":827,"_path":828},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":830,"_path":831},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":833,"_path":834},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":836,"_path":837},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":839,"_path":840},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":842,"_path":843},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":845,"_path":846},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":848,"_path":849},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":851,"_path":852},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":854,"_path":855},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":857,"_path":858},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":860,"_path":861},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":863,"_path":864},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":866,"_path":867},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":869,"_path":870},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":872,"_path":873},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":875,"_path":876},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":878,"_path":879},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":881,"_path":882},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":884,"_path":885},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":887,"_path":888},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":890,"_path":891},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":893,"_path":894},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":896,"_path":897},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":899,"_path":900},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":902,"_path":903,"children":904},"Uniform","/videos/uniform",[905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073],{"title":906,"_path":907},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":909,"_path":910},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":912,"_path":913},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":915,"_path":916},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":918,"_path":919},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":921,"_path":922},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":924,"_path":925},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":927,"_path":928},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":930,"_path":931},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":933,"_path":934},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":936,"_path":937},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":939,"_path":940},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":942,"_path":943},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":945,"_path":946},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":948,"_path":949},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":951,"_path":952},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":954,"_path":955},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":957,"_path":958},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":960,"_path":961},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":963,"_path":964},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":966,"_path":967},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":969,"_path":970},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":972,"_path":973},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":975,"_path":976},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":978,"_path":979},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":981,"_path":982},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":984,"_path":985},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":987,"_path":988},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":990,"_path":991},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":993,"_path":994},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":996,"_path":997},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":999,"_path":1000},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1002,"_path":1003},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1005,"_path":1006},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1008,"_path":1009},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1011,"_path":1012},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1014,"_path":1015},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1017,"_path":1018},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1020,"_path":1021},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1023,"_path":1024},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1026,"_path":1027},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1029,"_path":1030},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1032,"_path":1033},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1035,"_path":1036},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1038,"_path":1039},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1041,"_path":1042},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1044,"_path":1045},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1047,"_path":1048},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1050,"_path":1051},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1053,"_path":1054},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1056,"_path":1057},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1059,"_path":1060},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1062,"_path":1063},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1065,"_path":1066},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1068,"_path":1069},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1071,"_path":1072},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1074,"_path":1075},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1077,"_path":1078,"children":1079},"Writing","/writing",[1080,1083,1086,1089,1092,1095,1096,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148],{"title":1081,"_path":1082},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1084,"_path":1085},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1087,"_path":1088},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1090,"_path":1091},"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":1093,"_path":1094},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1077,"_path":1078},{"title":8,"_path":4},{"title":1098,"_path":1099},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1101,"_path":1102},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1104,"_path":1105},"My Fitness Story","/writing/my-fitness-story",{"title":1107,"_path":1108},"New job alert!","/writing/new-job-alert",{"title":1110,"_path":1111},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1113,"_path":1114},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1116,"_path":1117},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1119,"_path":1120},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1122,"_path":1123},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1125,"_path":1126},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1128,"_path":1129},"The MACH monolith","/writing/the-mach-monolith",{"title":1131,"_path":1132},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1134,"_path":1135},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1137,"_path":1138},"This is headless 2.0","/writing/this-is-headless-20",{"title":1140,"_path":1141},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1143,"_path":1144},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1146,"_path":1147},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1149,"_path":1150},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1152,"_path":1153,"children":1154},"Speaking","/speaking",[1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1227,1230,1233,1236,1239,1242,1245,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1284,1287,1290,1293,1296,1299,1302,1305,1308,1311,1314,1317,1320,1323,1326,1329,1332,1335,1338,1341,1344,1347,1350,1353,1356,1359,1362,1365,1368,1371,1374,1377,1380,1383,1386],{"title":1156,"_path":1157},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1159,"_path":1160},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1162,"_path":1163},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1165,"_path":1166},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1168,"_path":1169},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1171,"_path":1172},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1174,"_path":1175},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1177,"_path":1178},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1180,"_path":1181},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1183,"_path":1184},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1186,"_path":1187},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1189,"_path":1190},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1192,"_path":1193},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1195,"_path":1196},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1198,"_path":1199},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1201,"_path":1202},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1204,"_path":1205},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1207,"_path":1208},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1210,"_path":1211},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1213,"_path":1214},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1216,"_path":1217},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1219,"_path":1220},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1222,"_path":1223},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1225,"_path":1226},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1228,"_path":1229},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1231,"_path":1232},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1234,"_path":1235},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1237,"_path":1238},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1240,"_path":1241},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1243,"_path":1244},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1246,"_path":1247},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1249,"_path":1250},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1252,"_path":1253},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1255,"_path":1256},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1258,"_path":1259},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1261,"_path":1262},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1264,"_path":1265},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1267,"_path":1268},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1270,"_path":1271},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1273,"_path":1274},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1276,"_path":1277},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1279,"_path":1280},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1282,"_path":1283},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1285,"_path":1286},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1288,"_path":1289},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1291,"_path":1292},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1294,"_path":1295},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1297,"_path":1298},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1300,"_path":1301},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1303,"_path":1304},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1306,"_path":1307},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1309,"_path":1310},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1312,"_path":1313},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1315,"_path":1316},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1318,"_path":1319},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1321,"_path":1322},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1324,"_path":1325},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1327,"_path":1328},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1330,"_path":1331},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1333,"_path":1334},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1336,"_path":1337},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1339,"_path":1340},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1342,"_path":1343},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1345,"_path":1346},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1348,"_path":1349},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1351,"_path":1352},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1354,"_path":1355},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1357,"_path":1358},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1360,"_path":1361},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1363,"_path":1364},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1366,"_path":1367},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1369,"_path":1370},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1372,"_path":1373},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1375,"_path":1376},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1378,"_path":1379},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1381,"_path":1382},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1384,"_path":1385},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1152,"_path":1153},{"title":1388,"_path":1389},"live streams","/livestreams",{"title":1391,"_path":1392},"press kit","/presskit",{"title":1394,"_path":1395},"alive and kicking","/alive-and-kicking",1718484379214] \ No newline at end of file diff --git a/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro/index.html b/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro/index.html deleted file mode 100644 index 50059a80..00000000 --- a/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - -Level up your collaboration game: Developer insights for winning with marketing pros - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Level up your collaboration game: Developer insights for winning with marketing pros

May 03, 2023 at https://uniform.dev/blogs/level-up-your-collaboration-game-developer-insights-for-winning-with

Building outstanding user experiences takes, first and foremost, effective collaboration between marketing and development teams. Oftentimes, however, those teams’ different perspectives lead to misunderstandings and opacity, which could seriously impact progress and revenue. Over the last two years of interacting and working within a marketing department as a seasoned technical leader, I've developed strategies to enhance collaboration, boost cross-team communications, and promote project success. 

Below are the steps to take.

##Set clear objectives

Since both development and marketing play vital roles in implementing user experiences that drive business goals, the contributors in question must share clear, common objectives, e.g., projected sales, number of service signups, and brand messaging. 

Reaching those goals sometimes requires both technical and marketing-driven activities, such as code refactoring, site-performance boosts, messaging-success measurements, and analytics gathering. Those work streams, whose specifics are highly contextual to the specific job marketers or developers do, could easily cause conflict.

To avoid miscommunication, do the following:

  1. Invite participation from all team members. Involve them in planning sessions, explain the background of the strategies to be built, and ascertain that everyone is on the same page.
  2. Set SMART goals. Create specific, measurable, attainable, relevant, and time-bound objectives.
  3. Plan together. Align schedules based on the teams’ different workflows.

##Understand how the other discipline works

A healthy dose of the qualities below is key:

  • Respect. To minimize friction, respect for each other's operating methods, styles, and process is essential. Besides acquiring an understanding of the various workflows, team members must be willing to compromise for alignment’s sake.
  • Patience. Be accommodating, thoughtful, and tolerant when explaining processes to the other team. A unified approach like Agile project management can forge collaboration by breaking projects into stages, constantly engaging with stakeholders, and enabling both teams to simultaneously track goals and meet objectives.

Remember, a world of difference exists in how developers and marketers think. Establishing a mechanism through which they can learn about one another's tasks and routines goes a long way in championing collaboration.

Leverage each other’s skills

Developers and marketers contribute unique, value-add skills:

  • Developers can offer product or technical insights by clarifying why certain code approaches and rendering modes help reach marketing goals.
  • Marketers can share user feedback, messaging learnings, and test data with developers as support for spiffing up the UI and product features.

Essentially, developers work in the context of the “how,” and marketers, of the ”why.” Both are equally valuable for successful projects.

Make data-based decisions

Data is crucial for measuring success. Developers and marketers play a different role vis-à-vis data:

  • Developers create technology for harnessing data that marketers need to optimize conversion.
  • Marketers collect data and strategize campaigns accordingly. 

Using analytics tools and personalization engines is instrumental for fulfilling project goals. Ultimately, developers must find a way to integrate “hated tools” so that both teams are happy.

Use the tools that appeal to both teams

Tools that propel collaboration fall into different categories. For example, Jira and Linear are process systems, and Figma and Zeplin are design devices. Other tools are slated for website architecture.

Even though developers love the freedom to choose the tools they prefer to build websites, it comes at the price of abstract interfaces and many open tabs for marketers. As technology evolves, techies must keep up with industry trends without being bogged down by marketers’ tool choices. That’s where headless has failed us: The pendulum of architecture choices to build websites has swung too far. Developers love it, yet marketers hate it. 

A digital experience composition platform (DXCP) affords both developers and marketers control of features, content, and the ever-ticking clock. Though technically agnostic, a DXCP—

  • Helps developers funnel data to a front-end channel of their choice without compromises. 
  • Enables marketers to independently and visually edit content in a no-code environment without having to seek developer assistance.

Faithfully perform the paramount steps

By setting clear objectives, understanding each other's processes, leveraging each other’s unique skills, making data-driven decisions, and adopting tools that cater to both parties, marketing and development teams can cooperate smoothly, eliminate roadblocks, and deliver phenomenal projects. With the right strategies and mindset, the sky's the limit for the potential of those high-performing teams to achieve exceptional results.

Check out Uniform DXCP, on which developers and business teams can access all the tools they need to deliver well and fast.

- \ No newline at end of file diff --git a/writing/mach-versus-monolithic-suites/_payload.json b/writing/mach-versus-monolithic-suites/_payload.json deleted file mode 100644 index c743e8a9..00000000 --- a/writing/mach-versus-monolithic-suites/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1302},["Reactive",2],{"content-query-frh4yVKtXd":3,"content-navigation-8C37fagqQL":186},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":181,"_id":182,"_source":183,"_file":184,"_extension":185},"/writing/mach-versus-monolithic-suites","writing",false,"","MACH versus monolithic suites","Today, with consumers fast becoming digitally advanced, companies realize that old technologies are...",1399552,"mach-versus-monolithic-suites","2023-03-13T20:37:36Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfwuyqdwlw3du1k96z1l.png","https://uniform.dev/blogs/composable-architecture/mach-versus-monolithic-suites#mach-as-an-evolution-of-monoliths",[16,17,18,19],"mach","composable","architecture","webdev",22300,{"type":22,"children":23,"toc":176},"root",[24,32,37,44,49,95,100,105,111,116,121,126,131,136,141,146,151,156,161,166,171],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","Today, with consumers fast becoming digitally advanced, companies realize that old technologies are no longer viable and that companies must evolve continually to keep up with consumer expectations. However, making technology decisions can be difficult, confusing, and stressful, especially since you might have to live with them for years. You also run the risk of being locked into products that cannot keep up with your organization's changing needs or, even worse, products that were never a good fit in the first place. No wonder that when an architecture emerges that promises to reduce that risk, people pay attention.",{"type":25,"tag":26,"props":33,"children":34},{},[35],{"type":30,"value":36},"Reality is, monolithic suites are no longer the safest choice. In their quest to stay agile, nimble, customer-centric, and future-proof, businesses must find more effective ways for transforming digital experiences and are turning to the increasingly popular MACH architecture.",{"type":25,"tag":38,"props":39,"children":41},"h2",{"id":40},"mach-architecture-explained",[42],{"type":30,"value":43},"MACH architecture explained",{"type":25,"tag":26,"props":45,"children":46},{},[47],{"type":30,"value":48},"MACH stands for microservices, API-first, cloud-based, and headless, comprising decoupled, modular, self-contained, and independent components that work together as one, as explained below:",{"type":25,"tag":50,"props":51,"children":52},"ul",{},[53,65,75,85],{"type":25,"tag":54,"props":55,"children":56},"li",{},[57,63],{"type":25,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":30,"value":62},"Microservices",{"type":30,"value":64},": These are individual business capabilities that are independently built, deployed, and managed.",{"type":25,"tag":54,"props":66,"children":67},{},[68,73],{"type":25,"tag":58,"props":69,"children":70},{},[71],{"type":30,"value":72},"API-first",{"type":30,"value":74},": APIs function as the pipeline through which applications interact, resulting in a microservices-based architecture that activates data exchange among the services.",{"type":25,"tag":54,"props":76,"children":77},{},[78,83],{"type":25,"tag":58,"props":79,"children":80},{},[81],{"type":30,"value":82},"Cloud-native",{"type":30,"value":84},": Since cloud computing offers scalability and adaptability, cloud-native applications foster innovation, accelerating the creation and optimization of microservices and, in turn, the process of project initiation through delivery.",{"type":25,"tag":54,"props":86,"children":87},{},[88,93],{"type":25,"tag":58,"props":89,"children":90},{},[91],{"type":30,"value":92},"Headless",{"type":30,"value":94},": This approach of decoupling the front-end user experience from the back-end logic spells complete freedom in building omnichannel digital experiences.",{"type":25,"tag":26,"props":96,"children":97},{},[98],{"type":30,"value":99},"Together, those four components promise to reduce the risk of product lock-in and enable enterprises to adopt technologies that best meet their needs in a timely manner. As a response to the monolithic architectures that have long dominated enterprise applications, MACH addresses the limitations of legacy technologies while staying flexible for businesses to adapt to changes.",{"type":25,"tag":26,"props":101,"children":102},{},[103],{"type":30,"value":104},"Understanding MACH requires coming to grips with its two foundational concepts, integration and composability, as well as the advantages and disadvantages of its monolithic predecessor.",{"type":25,"tag":38,"props":106,"children":108},{"id":107},"mach-as-an-evolution-of-monoliths",[109],{"type":30,"value":110},"MACH as an evolution of monoliths",{"type":25,"tag":26,"props":112,"children":113},{},[114],{"type":30,"value":115},"Though costly, monoliths are convenient because, being from a single vendor, their components are likely to work well together. Additionally, since most monolithic vendors are well-established market players, they offer all the features required for building and maintaining digital experiences and serve as a single contact for businesses to call on in case of issues.",{"type":25,"tag":26,"props":117,"children":118},{},[119],{"type":30,"value":120},"Encompassing its services in one interdependent package, MACH evolves from a monolithic, tightly coupled system. Those services, frequently called a “best-of-need” stack, comprise robust APIs for facilitating data exchange among services along with the best tools for experience creation without incurring expenses on unnecessary features. Another benefit is that businesses need not depend on a single vendor’s roadmap for new channels or technologies.",{"type":25,"tag":26,"props":122,"children":123},{},[124],{"type":30,"value":125},"However, businesses might find it difficult to evaluate the array of MACH vendors and tools and make the right decisions. Also, given MACH’s multivendor setup, teams might need to perform their tasks with several tools instead of one, as in the case of a monolithic system. Another major challenge is that integration of the tools often requires heavy custom coding.",{"type":25,"tag":26,"props":127,"children":128},{},[129],{"type":30,"value":130},"To decide which system, MACH or monolithic, to opt for, businesses must find out if the advantages are real and whether the advantages surpass the disadvantages.",{"type":25,"tag":26,"props":132,"children":133},{},[134],{"type":30,"value":135},"##Suites versus MACH",{"type":25,"tag":26,"props":137,"children":138},{},[139],{"type":30,"value":140},"The difference between a suite and MACH comes down to choice. In the case of a suite, the vendor selects the products for you. With MACH, you pick the products you want from the vendors you prefer.",{"type":25,"tag":26,"props":142,"children":143},{},[144],{"type":30,"value":145},"Back when suites were popular, building a stack was just not practical for most businesses. Nowadays, vendors are building products with the expectation that companies will integrate them with other products. Moreover, delivering those products through a cloud-based infrastructure means that businesses need not support multiple products built with different technologies. That’s the world enabled by MACH.",{"type":25,"tag":26,"props":147,"children":148},{},[149],{"type":30,"value":150},"For businesses that aim at building a technology stack of products that meet their unique requirements, MACH provides the foundational architecture. Therefore, if you buy a CMS, a personalization tool, and an enterprise module built on MACH principles, you can seamlessly and consistently connect them all.",{"type":25,"tag":26,"props":152,"children":153},{},[154],{"type":30,"value":155},"Still, the suite approach continues to predominate, and businesses often adopt it even while designing a modern, composed architecture. That practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures.",{"type":25,"tag":26,"props":157,"children":158},{},[159],{"type":30,"value":160},"##Uniform as the infrastructure of composable systems",{"type":25,"tag":26,"props":162,"children":163},{},[164],{"type":30,"value":165},"Uniform offers a fast track to composability by handling all the difficult and time-consuming integration tasks, personalization settings, etc., so that you can focus on critical undertakings like web design and content creation.",{"type":25,"tag":26,"props":167,"children":168},{},[169],{"type":30,"value":170},"Remarkably, Uniform offers composability right out of the box. You get to select the components that you want in your stack, and we handle all the connections and orchestration. You need not build this complex but valuable integration yourself.",{"type":25,"tag":26,"props":172,"children":173},{},[174],{"type":30,"value":175},"To recap, building composable systems on a MACH architecture is a modern, sustainable approach that resolves the difficult problems organizations have accepted as a natural part of working with enterprise software. With composability, you can build stacks with tools of your choice. The MACH architecture makes all that happen in a sustainable, scalable manner, and Uniform provides the infrastructure for orchestration across your MACH platforms.",{"title":7,"searchDepth":177,"depth":177,"links":178},2,[179,180],{"id":40,"depth":177,"text":43},{"id":107,"depth":177,"text":110},"markdown","content:4.writing:mach-versus-monolithic-suites.md","content","4.writing/mach-versus-monolithic-suites.md","md",[187,190,982,1057,1293,1296,1299],{"title":188,"_path":189},"About","/about",{"title":191,"_path":192,"children":193},"videos","/videos",[194,213,232,278,279,331,434,457,479,807],{"title":195,"_path":196,"children":197},"Alive And Kicking","/videos/alive-and-kicking",[198,201,204,207,210],{"title":199,"_path":200},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":202,"_path":203},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":205,"_path":206},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":208,"_path":209},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":211,"_path":212},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":214,"_path":215,"children":216},"Headless Creator","/videos/headless-creator",[217,220,223,226,229],{"title":218,"_path":219},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":221,"_path":222},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":224,"_path":225},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":227,"_path":228},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":230,"_path":231},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":233,"_path":234,"children":235},"Hygraph","/videos/hygraph",[236,239,242,245,248,251,254,257,260,263,266,269,272,275],{"title":237,"_path":238},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":240,"_path":241},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":243,"_path":244},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":246,"_path":247},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":249,"_path":250},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":252,"_path":253},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":255,"_path":256},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":258,"_path":259},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":261,"_path":262},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":264,"_path":265},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":267,"_path":268},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":270,"_path":271},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":273,"_path":274},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":276,"_path":277},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":191,"_path":192},{"title":280,"_path":281,"children":282},"Live Hygraph","/videos/live-hygraph",[283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328],{"title":284,"_path":285},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":287,"_path":288},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":290,"_path":291},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":293,"_path":294},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":296,"_path":297},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":299,"_path":300},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":302,"_path":303},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":305,"_path":306},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":308,"_path":309},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":311,"_path":312},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":314,"_path":315},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":317,"_path":318},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":320,"_path":321},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":323,"_path":324},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":326,"_path":327},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":329,"_path":330},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":332,"_path":333,"children":334},"Live Uniform","/videos/live-uniform",[335,338,341,344,347,350,353,356,359,362,365,368,371,374,377,380,383,386,389,392,395,398,401,404,407,410,413,416,419,422,425,428,431],{"title":336,"_path":337},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":339,"_path":340},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":342,"_path":343},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":345,"_path":346},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":348,"_path":349},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":351,"_path":352},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":354,"_path":355},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":357,"_path":358},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":360,"_path":361},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":363,"_path":364},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":366,"_path":367},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":369,"_path":370},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":372,"_path":373},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":375,"_path":376},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":378,"_path":379},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":381,"_path":382},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":384,"_path":385},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":387,"_path":388},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":390,"_path":391},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":393,"_path":394},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":396,"_path":397},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":399,"_path":400},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":402,"_path":403},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":405,"_path":406},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":408,"_path":409},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":411,"_path":412},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":414,"_path":415},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":417,"_path":418},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":420,"_path":421},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":423,"_path":424},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":426,"_path":427},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":429,"_path":430},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":432,"_path":433},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":435,"_path":436,"children":437},"Misc Streams","/videos/misc-streams",[438,441,444,447,449,451,454],{"title":439,"_path":440},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":442,"_path":443},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":445,"_path":446},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":429,"_path":448},"/videos/misc-streams/003-jvgiaotcerq",{"title":420,"_path":450},"/videos/misc-streams/004-ekut1koa2n8",{"title":452,"_path":453},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":455,"_path":456},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":458,"_path":459,"children":460},"Mp","/videos/mp",[461,464,467,470,473,476],{"title":462,"_path":463},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":465,"_path":466},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":468,"_path":469},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":471,"_path":472},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":474,"_path":475},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":477,"_path":478},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":480,"_path":481,"children":482},"Tim","/videos/tim",[483,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,535,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,780,783,786,789,792,795,798,801,804],{"title":202,"_path":484},"/videos/tim/000-mvq-_s20ndk",{"title":486,"_path":487},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":489,"_path":490},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":492,"_path":493},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":495,"_path":496},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":498,"_path":499},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":501,"_path":502},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":504,"_path":505},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":507,"_path":508},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":510,"_path":511},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":513,"_path":514},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":516,"_path":517},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":519,"_path":520},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":522,"_path":523},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":525,"_path":526},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":528,"_path":529},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":531,"_path":532},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":205,"_path":534},"/videos/tim/017-m0mrligs6i0",{"title":199,"_path":536},"/videos/tim/018-hhpitreyobi",{"title":538,"_path":539},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":541,"_path":542},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":544,"_path":545},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":547,"_path":548},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":550,"_path":551},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":553,"_path":554},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":556,"_path":557},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":559,"_path":560},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":562,"_path":563},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":565,"_path":566},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":568,"_path":569},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":571,"_path":572},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":574,"_path":575},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":577,"_path":578},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":580,"_path":581},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":583,"_path":584},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":586,"_path":587},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":589,"_path":590},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":592,"_path":593},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":595,"_path":596},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":598,"_path":599},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":601,"_path":602},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":604,"_path":605},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":607,"_path":608},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":610,"_path":611},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":613,"_path":614},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":616,"_path":617},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":619,"_path":620},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":622,"_path":623},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":625,"_path":626},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":628,"_path":629},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":631,"_path":632},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":634,"_path":635},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":637,"_path":638},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":640,"_path":641},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":643,"_path":644},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":646,"_path":647},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":649,"_path":650},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":652,"_path":653},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":655,"_path":656},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":658,"_path":659},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":661,"_path":662},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":664,"_path":665},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":667,"_path":668},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":670,"_path":671},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":673,"_path":674},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":676,"_path":677},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":679,"_path":680},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":682,"_path":683},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":685,"_path":686},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":688,"_path":689},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":691,"_path":692},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":694,"_path":695},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":697,"_path":698},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":700,"_path":701},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":703,"_path":704},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":706,"_path":707},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":709,"_path":710},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":712,"_path":713},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":715,"_path":716},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":718,"_path":719},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":721,"_path":722},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":724,"_path":725},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":727,"_path":728},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":730,"_path":731},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":733,"_path":734},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":736,"_path":737},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":739,"_path":740},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":742,"_path":743},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":745,"_path":746},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":748,"_path":749},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":751,"_path":752},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":754,"_path":755},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":757,"_path":758},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":760,"_path":761},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":763,"_path":764},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":766,"_path":767},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":769,"_path":770},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":772,"_path":773},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":775,"_path":776},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":778,"_path":779},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":781,"_path":782},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":784,"_path":785},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":787,"_path":788},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":790,"_path":791},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":793,"_path":794},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":796,"_path":797},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":799,"_path":800},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":802,"_path":803},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":805,"_path":806},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":808,"_path":809,"children":810},"Uniform","/videos/uniform",[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,952,955,958,961,964,967,970,973,976,979],{"title":812,"_path":813},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":815,"_path":816},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":818,"_path":819},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":821,"_path":822},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":824,"_path":825},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":827,"_path":828},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":830,"_path":831},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":833,"_path":834},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":836,"_path":837},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":839,"_path":840},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":842,"_path":843},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":845,"_path":846},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":848,"_path":849},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":851,"_path":852},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":854,"_path":855},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":857,"_path":858},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":860,"_path":861},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":863,"_path":864},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":866,"_path":867},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":869,"_path":870},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":872,"_path":873},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":875,"_path":876},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":878,"_path":879},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":881,"_path":882},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":884,"_path":885},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":887,"_path":888},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":890,"_path":891},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":893,"_path":894},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":896,"_path":897},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":899,"_path":900},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":902,"_path":903},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":905,"_path":906},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":908,"_path":909},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":911,"_path":912},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":914,"_path":915},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":917,"_path":918},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":920,"_path":921},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":923,"_path":924},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":926,"_path":927},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":929,"_path":930},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":932,"_path":933},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":935,"_path":936},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":938,"_path":939},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":941,"_path":942},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":944,"_path":945},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":947,"_path":948},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":950,"_path":951},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":953,"_path":954},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":956,"_path":957},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":959,"_path":960},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":962,"_path":963},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":965,"_path":966},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":968,"_path":969},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":971,"_path":972},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":974,"_path":975},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":977,"_path":978},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":980,"_path":981},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":983,"_path":984,"children":985},"Writing","/writing",[986,989,992,995,998,1001,1002,1005,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054],{"title":987,"_path":988},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":990,"_path":991},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":993,"_path":994},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":996,"_path":997},"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":999,"_path":1000},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":983,"_path":984},{"title":1003,"_path":1004},"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":8,"_path":4},{"title":1007,"_path":1008},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1010,"_path":1011},"My Fitness Story","/writing/my-fitness-story",{"title":1013,"_path":1014},"New job alert!","/writing/new-job-alert",{"title":1016,"_path":1017},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1019,"_path":1020},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1022,"_path":1023},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1025,"_path":1026},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1028,"_path":1029},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1031,"_path":1032},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1034,"_path":1035},"The MACH monolith","/writing/the-mach-monolith",{"title":1037,"_path":1038},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1040,"_path":1041},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1043,"_path":1044},"This is headless 2.0","/writing/this-is-headless-20",{"title":1046,"_path":1047},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1049,"_path":1050},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1052,"_path":1053},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1055,"_path":1056},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1058,"_path":1059,"children":1060},"Speaking","/speaking",[1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283,1286,1289,1292],{"title":1062,"_path":1063},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1065,"_path":1066},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1068,"_path":1069},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1071,"_path":1072},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1074,"_path":1075},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1077,"_path":1078},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1080,"_path":1081},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1083,"_path":1084},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1086,"_path":1087},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1089,"_path":1090},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1092,"_path":1093},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1095,"_path":1096},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1098,"_path":1099},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1101,"_path":1102},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1104,"_path":1105},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1107,"_path":1108},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1110,"_path":1111},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1113,"_path":1114},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1116,"_path":1117},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1119,"_path":1120},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1122,"_path":1123},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1125,"_path":1126},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1128,"_path":1129},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1131,"_path":1132},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1134,"_path":1135},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1137,"_path":1138},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1140,"_path":1141},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1143,"_path":1144},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1146,"_path":1147},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1149,"_path":1150},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1152,"_path":1153},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1155,"_path":1156},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1158,"_path":1159},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1161,"_path":1162},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1164,"_path":1165},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1167,"_path":1168},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1170,"_path":1171},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1173,"_path":1174},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1176,"_path":1177},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1179,"_path":1180},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1182,"_path":1183},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1185,"_path":1186},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1188,"_path":1189},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1191,"_path":1192},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1194,"_path":1195},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1197,"_path":1198},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1200,"_path":1201},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1203,"_path":1204},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1206,"_path":1207},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1209,"_path":1210},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1212,"_path":1213},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1215,"_path":1216},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1218,"_path":1219},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1221,"_path":1222},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1224,"_path":1225},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1227,"_path":1228},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1230,"_path":1231},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1233,"_path":1234},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1236,"_path":1237},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1239,"_path":1240},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1242,"_path":1243},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1245,"_path":1246},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1248,"_path":1249},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1251,"_path":1252},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1254,"_path":1255},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1257,"_path":1258},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1260,"_path":1261},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1263,"_path":1264},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1266,"_path":1267},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1269,"_path":1270},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1272,"_path":1273},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1275,"_path":1276},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1278,"_path":1279},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1281,"_path":1282},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1284,"_path":1285},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1287,"_path":1288},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1290,"_path":1291},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1058,"_path":1059},{"title":1294,"_path":1295},"live streams","/livestreams",{"title":1297,"_path":1298},"press kit","/presskit",{"title":1300,"_path":1301},"alive and kicking","/alive-and-kicking",1718484379873] \ No newline at end of file diff --git a/writing/mach-versus-monolithic-suites/index.html b/writing/mach-versus-monolithic-suites/index.html deleted file mode 100644 index f13099bd..00000000 --- a/writing/mach-versus-monolithic-suites/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - -MACH versus monolithic suites - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

MACH versus monolithic suites

Mar 13, 2023 at https://uniform.dev/blogs/composable-architecture/mach-versus-monolithic-suites#mach-as-an-evolution-of-monoliths

Today, with consumers fast becoming digitally advanced, companies realize that old technologies are no longer viable and that companies must evolve continually to keep up with consumer expectations. However, making technology decisions can be difficult, confusing, and stressful, especially since you might have to live with them for years. You also run the risk of being locked into products that cannot keep up with your organization's changing needs or, even worse, products that were never a good fit in the first place. No wonder that when an architecture emerges that promises to reduce that risk, people pay attention.

Reality is, monolithic suites are no longer the safest choice. In their quest to stay agile, nimble, customer-centric, and future-proof, businesses must find more effective ways for transforming digital experiences and are turning to the increasingly popular MACH architecture.

MACH architecture explained

MACH stands for microservices, API-first, cloud-based, and headless, comprising decoupled, modular, self-contained, and independent components that work together as one, as explained below:

  • Microservices: These are individual business capabilities that are independently built, deployed, and managed.
  • API-first: APIs function as the pipeline through which applications interact, resulting in a microservices-based architecture that activates data exchange among the services.
  • Cloud-native: Since cloud computing offers scalability and adaptability, cloud-native applications foster innovation, accelerating the creation and optimization of microservices and, in turn, the process of project initiation through delivery.
  • Headless: This approach of decoupling the front-end user experience from the back-end logic spells complete freedom in building omnichannel digital experiences.

Together, those four components promise to reduce the risk of product lock-in and enable enterprises to adopt technologies that best meet their needs in a timely manner. As a response to the monolithic architectures that have long dominated enterprise applications, MACH addresses the limitations of legacy technologies while staying flexible for businesses to adapt to changes.

Understanding MACH requires coming to grips with its two foundational concepts, integration and composability, as well as the advantages and disadvantages of its monolithic predecessor.

MACH as an evolution of monoliths

Though costly, monoliths are convenient because, being from a single vendor, their components are likely to work well together. Additionally, since most monolithic vendors are well-established market players, they offer all the features required for building and maintaining digital experiences and serve as a single contact for businesses to call on in case of issues.

Encompassing its services in one interdependent package, MACH evolves from a monolithic, tightly coupled system. Those services, frequently called a “best-of-need” stack, comprise robust APIs for facilitating data exchange among services along with the best tools for experience creation without incurring expenses on unnecessary features. Another benefit is that businesses need not depend on a single vendor’s roadmap for new channels or technologies.

However, businesses might find it difficult to evaluate the array of MACH vendors and tools and make the right decisions. Also, given MACH’s multivendor setup, teams might need to perform their tasks with several tools instead of one, as in the case of a monolithic system. Another major challenge is that integration of the tools often requires heavy custom coding.

To decide which system, MACH or monolithic, to opt for, businesses must find out if the advantages are real and whether the advantages surpass the disadvantages.

##Suites versus MACH

The difference between a suite and MACH comes down to choice. In the case of a suite, the vendor selects the products for you. With MACH, you pick the products you want from the vendors you prefer.

Back when suites were popular, building a stack was just not practical for most businesses. Nowadays, vendors are building products with the expectation that companies will integrate them with other products. Moreover, delivering those products through a cloud-based infrastructure means that businesses need not support multiple products built with different technologies. That’s the world enabled by MACH.

For businesses that aim at building a technology stack of products that meet their unique requirements, MACH provides the foundational architecture. Therefore, if you buy a CMS, a personalization tool, and an enterprise module built on MACH principles, you can seamlessly and consistently connect them all.

Still, the suite approach continues to predominate, and businesses often adopt it even while designing a modern, composed architecture. That practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures.

##Uniform as the infrastructure of composable systems

Uniform offers a fast track to composability by handling all the difficult and time-consuming integration tasks, personalization settings, etc., so that you can focus on critical undertakings like web design and content creation.

Remarkably, Uniform offers composability right out of the box. You get to select the components that you want in your stack, and we handle all the connections and orchestration. You need not build this complex but valuable integration yourself.

To recap, building composable systems on a MACH architecture is a modern, sustainable approach that resolves the difficult problems organizations have accepted as a natural part of working with enterprise software. With composability, you can build stacks with tools of your choice. The MACH architecture makes all that happen in a sustainable, scalable manner, and Uniform provides the infrastructure for orchestration across your MACH platforms.

- \ No newline at end of file diff --git a/writing/make-the-web-greener-luxury-edition/_payload.json b/writing/make-the-web-greener-luxury-edition/_payload.json deleted file mode 100644 index ec0c2435..00000000 --- a/writing/make-the-web-greener-luxury-edition/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1322},["Reactive",2],{"content-query-p5G5kKmk7T":3,"content-navigation-8C37fagqQL":206},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":18,"body":19,"_type":201,"_id":202,"_source":203,"_file":204,"_extension":205},"/writing/make-the-web-greener-luxury-edition","writing",false,"","Make the Web Greener, Luxury Edition","If the internet were a country, it would be the world’s sixth biggest polluter. The...",1406180,"make-the-web-greener-luxury-edition","2023-03-18T22:30:27Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3e00qrk4jojitb5tu06.jpg","https://www.valtech.com/insights/make-the-web-greener-luxury-edition/",[16,17],"webdev","environment",22300,{"type":20,"children":21,"toc":189},"root",[22,31,37,42,49,54,59,65,70,90,95,101,106,112,117,122,127,132,137,142,148,153,158,163,169,174,179,184],{"type":23,"tag":24,"props":25,"children":27},"element","h2",{"id":26},"if-the-internet-were-a-country-it-would-be-the-worlds-sixth-biggest-polluter",[28],{"type":29,"value":30},"text","If the internet were a country, it would be the world’s sixth biggest polluter.",{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":29,"value":36},"The internet consumes around 416TWh per year in electricity. That number does not say much until you compare it to the 300TWh the United Kingdom consumes. These are staggering numbers, and they will only go up as the internet keeps growing. Whether you realize it or not, carbon emissions are generated all over the place.",{"type":23,"tag":32,"props":38,"children":39},{},[40],{"type":29,"value":41},"The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that is 211 kg CO2 per year or about twice the weight of a professional basketball player. This is more carbon than ten trees can absorb. If you think about how many websites we have on the internet, this comparison paints a pretty scary picture.",{"type":23,"tag":43,"props":44,"children":46},"h3",{"id":45},"the-luxury-dilemma-the-rich-experience-and-fast-page-loads",[47],{"type":29,"value":48},"The Luxury Dilemma: The Rich Experience and Fast Page Loads",{"type":23,"tag":32,"props":50,"children":51},{},[52],{"type":29,"value":53},"Every web page is crafted with art-directed elements that tell the right story. Luxury product pages are rich experiences that make the user linger and enjoy the ride. This approach is great for the potential customer, but there is a dark undertone when we consider the environment. These pages are full of heavy images, videos and animations. The heavier the page, the more carbon is emitted. If pages take longer to load, the emissions go up due to more device usage–and the antenna and screen are used for a longer period too.",{"type":23,"tag":32,"props":55,"children":56},{},[57],{"type":29,"value":58},"There are some conflicting goals within luxury on the web. We want a rich experience, but we also want hyper-fast page loads. We all know that slow pages mean more user drop-off. And to make matters worse, we also need to think about the environment. We need to contain how much carbon is blasted into the atmosphere when someone visits a page.",{"type":23,"tag":43,"props":60,"children":62},{"id":61},"how-to-reduce-carbon-emissions-from-your-website",[63],{"type":29,"value":64},"How to Reduce Carbon Emissions from Your Website",{"type":23,"tag":32,"props":66,"children":67},{},[68],{"type":29,"value":69},"The above describes a complicated mix of problems to solve. We know that carbon emissions are lowest if:",{"type":23,"tag":71,"props":72,"children":73},"ul",{},[74,80,85],{"type":23,"tag":75,"props":76,"children":77},"li",{},[78],{"type":29,"value":79},"A page is fast to find",{"type":23,"tag":75,"props":81,"children":82},{},[83],{"type":29,"value":84},"The page loads fast and with little resources",{"type":23,"tag":75,"props":86,"children":87},{},[88],{"type":29,"value":89},"Users stay on a page for a very short time",{"type":23,"tag":32,"props":91,"children":92},{},[93],{"type":29,"value":94},"These three points are hard to carry out in the current way of working in luxury. That is not because we do not know how to build websites but because the goals are different. We want visitors to explore the brand, linger and become influenced by the product story. They should become lifelong customers. Sadly, this goes against what is best practice for websites with a low carbon footprint.",{"type":23,"tag":43,"props":96,"children":98},{"id":97},"being-sustainable-without-compromising-quality",[99],{"type":29,"value":100},"Being Sustainable Without Compromising Quality",{"type":23,"tag":32,"props":102,"children":103},{},[104],{"type":29,"value":105},"But fear not: There is a solution that can get us much closer to being sustainable. We can even keep the same level of quality we have now. In addition to being greener, this solution makes our websites more accessible to people in upcoming markets. The answer is: optimization of image and video delivery. We solve the problem by reducing excess and only loading what is needed in the context of the user.",{"type":23,"tag":43,"props":107,"children":109},{"id":108},"are-we-there-yet-optimizing-media-asset-delivery",[110],{"type":29,"value":111},"Are We There Yet? Optimizing Media Asset Delivery",{"type":23,"tag":32,"props":113,"children":114},{},[115],{"type":29,"value":116},"Most traditional CMS systems focus on content editing or cataloguing of content and not on serving of content per se. Serving the content is part of the suite of tools in the platform, but the focus tends to be on other aspects. We call this the “best-of-suite” approach where one vendor deals with all aspects of the website.",{"type":23,"tag":32,"props":118,"children":119},{},[120],{"type":29,"value":121},"Nowadays, there are companies that solve specific problems within the eco-system of websites. We call these “best-of-breed” solutions, and they tend to be cloud native SaaS companies. Among these companies, there is a category that only deals with media asset delivery.",{"type":23,"tag":32,"props":123,"children":124},{},[125],{"type":29,"value":126},"Images and videos are particularly hard. If we ask a content editor, filmmaker, or web developer how to optimize assets for the web, they generally do not know. The same goes for the best-of-suite CMS systems. They do not specifically optimize assets for the web—they serve them as is.",{"type":23,"tag":32,"props":128,"children":129},{},[130],{"type":29,"value":131},"This leaves the responsibility to the content editor. We have seen people struggle with photoshop and not know how to optimize an image. Teaching courses and paying for Adobe licenses is commonplace and awfully expensive.",{"type":23,"tag":32,"props":133,"children":134},{},[135],{"type":29,"value":136},"Fortunately, there is a plethora of ways to optimize images and videos for the web—and the SaaS solutions mentioned above take care of the problem for you. They serve assets in the right format for the user’s context (browser, device, resolution). And they reduce the file size with AI to be indistinguishable from the original—doing this by hand as a content editor is impossible.",{"type":23,"tag":32,"props":138,"children":139},{},[140],{"type":29,"value":141},"We have had projects where the page weight dropped by 90 percent without loss of quality. Content editors would only upload the original image and the system did the rest.",{"type":23,"tag":43,"props":143,"children":145},{"id":144},"loading-the-right-assets-in-the-context-of-the-user",[146],{"type":29,"value":147},"Loading the Right Assets in the Context of the User",{"type":23,"tag":32,"props":149,"children":150},{},[151],{"type":29,"value":152},"Next to serving optimized assets, the most gain is made when not serving them at all. As funny as this may sound, it is the most effective way to have a low-carbon website. If a user never scrolls down or never opens the big mega menu, what is the use in loading these assets in the first place? You should only load assets you know the user will see. We call this “lazy loading,” and it is one of the most powerful tools in the bag of tricks of web developers.",{"type":23,"tag":32,"props":154,"children":155},{},[156],{"type":29,"value":157},"Next to lazy loading, it is also important to load assets in the right context. If a user visits your website on a phone, make sure to load an image with the same resolution the phone has. Loading bigger assets unnecessarily degrades the user experience. It also makes the website have a higher carbon footprint due to excessive file size.",{"type":23,"tag":32,"props":159,"children":160},{},[161],{"type":29,"value":162},"The same goes for file types. If you want an animated background image on the hero banner (we all do), do not use a GIF, but rather a video. GIF’s are about five times as big as videos and tend to not work well on mobile devices.",{"type":23,"tag":43,"props":164,"children":166},{"id":165},"looking-ahead-on-website-sustainability",[167],{"type":29,"value":168},"Looking Ahead on Website Sustainability",{"type":23,"tag":32,"props":170,"children":171},{},[172],{"type":29,"value":173},"We cannot always optimize our web pages according to the best practices for low-carbon websites. This is just the nature of luxury. But we can focus on smaller parts of the equation that have a huge influence on how sustainable the website is. All of this can be accomplished without compromising on quality.",{"type":23,"tag":32,"props":175,"children":176},{},[177],{"type":29,"value":178},"Look at the future and choose a best-of-breed solution that handles one of the most complex parts of the web: images and media. By combining optimized assets and lazy loading we make our pages lighter. This means they are more accessible to new customers in emerging markets.",{"type":23,"tag":32,"props":180,"children":181},{},[182],{"type":29,"value":183},"And wouldn’t it be nice if content editors did not need photoshop licenses anymore? The overhead of training and the extra process is not worth it.",{"type":23,"tag":32,"props":185,"children":186},{},[187],{"type":29,"value":188},"Instead, have your media delivered by a specialized solution—Mother Nature will thank you for having a low-carbon website.",{"title":7,"searchDepth":190,"depth":190,"links":191},2,[192],{"id":26,"depth":190,"text":30,"children":193},[194,196,197,198,199,200],{"id":45,"depth":195,"text":48},3,{"id":61,"depth":195,"text":64},{"id":97,"depth":195,"text":100},{"id":108,"depth":195,"text":111},{"id":144,"depth":195,"text":147},{"id":165,"depth":195,"text":168},"markdown","content:4.writing:make-the-web-greener-luxury-edition.md","content","4.writing/make-the-web-greener-luxury-edition.md","md",[207,210,1002,1077,1313,1316,1319],{"title":208,"_path":209},"About","/about",{"title":211,"_path":212,"children":213},"videos","/videos",[214,233,252,298,299,351,454,477,499,827],{"title":215,"_path":216,"children":217},"Alive And Kicking","/videos/alive-and-kicking",[218,221,224,227,230],{"title":219,"_path":220},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":222,"_path":223},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":225,"_path":226},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":228,"_path":229},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":231,"_path":232},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":234,"_path":235,"children":236},"Headless Creator","/videos/headless-creator",[237,240,243,246,249],{"title":238,"_path":239},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":241,"_path":242},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":244,"_path":245},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":247,"_path":248},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":250,"_path":251},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":253,"_path":254,"children":255},"Hygraph","/videos/hygraph",[256,259,262,265,268,271,274,277,280,283,286,289,292,295],{"title":257,"_path":258},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":260,"_path":261},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":263,"_path":264},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":266,"_path":267},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":269,"_path":270},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":272,"_path":273},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":275,"_path":276},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":278,"_path":279},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":281,"_path":282},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":284,"_path":285},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":287,"_path":288},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":290,"_path":291},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":293,"_path":294},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":296,"_path":297},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":211,"_path":212},{"title":300,"_path":301,"children":302},"Live Hygraph","/videos/live-hygraph",[303,306,309,312,315,318,321,324,327,330,333,336,339,342,345,348],{"title":304,"_path":305},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":307,"_path":308},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":310,"_path":311},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":313,"_path":314},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":316,"_path":317},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":319,"_path":320},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":322,"_path":323},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":325,"_path":326},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":328,"_path":329},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":331,"_path":332},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":334,"_path":335},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":337,"_path":338},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":340,"_path":341},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":343,"_path":344},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":346,"_path":347},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":349,"_path":350},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":352,"_path":353,"children":354},"Live Uniform","/videos/live-uniform",[355,358,361,364,367,370,373,376,379,382,385,388,391,394,397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,442,445,448,451],{"title":356,"_path":357},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":359,"_path":360},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":362,"_path":363},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":365,"_path":366},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":368,"_path":369},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":371,"_path":372},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":374,"_path":375},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":377,"_path":378},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":380,"_path":381},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":383,"_path":384},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":386,"_path":387},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":389,"_path":390},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":392,"_path":393},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":395,"_path":396},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":398,"_path":399},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":401,"_path":402},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":404,"_path":405},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":407,"_path":408},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":410,"_path":411},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":413,"_path":414},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":416,"_path":417},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":419,"_path":420},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":422,"_path":423},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":425,"_path":426},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":428,"_path":429},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":431,"_path":432},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":434,"_path":435},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":437,"_path":438},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":440,"_path":441},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":443,"_path":444},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":446,"_path":447},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":449,"_path":450},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":452,"_path":453},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":455,"_path":456,"children":457},"Misc Streams","/videos/misc-streams",[458,461,464,467,469,471,474],{"title":459,"_path":460},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":462,"_path":463},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":465,"_path":466},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":449,"_path":468},"/videos/misc-streams/003-jvgiaotcerq",{"title":440,"_path":470},"/videos/misc-streams/004-ekut1koa2n8",{"title":472,"_path":473},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":475,"_path":476},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":478,"_path":479,"children":480},"Mp","/videos/mp",[481,484,487,490,493,496],{"title":482,"_path":483},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":485,"_path":486},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":488,"_path":489},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":491,"_path":492},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":494,"_path":495},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":497,"_path":498},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":500,"_path":501,"children":502},"Tim","/videos/tim",[503,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,555,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824],{"title":222,"_path":504},"/videos/tim/000-mvq-_s20ndk",{"title":506,"_path":507},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":509,"_path":510},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":512,"_path":513},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":515,"_path":516},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":518,"_path":519},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":521,"_path":522},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":524,"_path":525},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":527,"_path":528},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":530,"_path":531},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":533,"_path":534},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":536,"_path":537},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":539,"_path":540},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":542,"_path":543},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":545,"_path":546},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":548,"_path":549},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":551,"_path":552},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":225,"_path":554},"/videos/tim/017-m0mrligs6i0",{"title":219,"_path":556},"/videos/tim/018-hhpitreyobi",{"title":558,"_path":559},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":561,"_path":562},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":564,"_path":565},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":567,"_path":568},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":570,"_path":571},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":573,"_path":574},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":576,"_path":577},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":579,"_path":580},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":582,"_path":583},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":585,"_path":586},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":588,"_path":589},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":591,"_path":592},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":594,"_path":595},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":597,"_path":598},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":600,"_path":601},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":603,"_path":604},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":606,"_path":607},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":609,"_path":610},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":612,"_path":613},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":615,"_path":616},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":618,"_path":619},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":621,"_path":622},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":624,"_path":625},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":627,"_path":628},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":630,"_path":631},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":633,"_path":634},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":636,"_path":637},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":639,"_path":640},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":642,"_path":643},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":645,"_path":646},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":648,"_path":649},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":651,"_path":652},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":654,"_path":655},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":657,"_path":658},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":660,"_path":661},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":663,"_path":664},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":666,"_path":667},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":669,"_path":670},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":672,"_path":673},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":675,"_path":676},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":678,"_path":679},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":681,"_path":682},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":684,"_path":685},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":687,"_path":688},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":690,"_path":691},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":693,"_path":694},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":696,"_path":697},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":699,"_path":700},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":702,"_path":703},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":705,"_path":706},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":708,"_path":709},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":711,"_path":712},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":714,"_path":715},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":717,"_path":718},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":720,"_path":721},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":723,"_path":724},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":726,"_path":727},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":729,"_path":730},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":732,"_path":733},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":735,"_path":736},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":738,"_path":739},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":741,"_path":742},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":744,"_path":745},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":747,"_path":748},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":750,"_path":751},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":753,"_path":754},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":756,"_path":757},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":759,"_path":760},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":762,"_path":763},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":765,"_path":766},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":768,"_path":769},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":771,"_path":772},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":774,"_path":775},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":777,"_path":778},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":780,"_path":781},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":783,"_path":784},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":786,"_path":787},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":789,"_path":790},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":792,"_path":793},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":795,"_path":796},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":798,"_path":799},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":801,"_path":802},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":804,"_path":805},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":807,"_path":808},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":810,"_path":811},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":813,"_path":814},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":816,"_path":817},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":819,"_path":820},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":822,"_path":823},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":825,"_path":826},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":828,"_path":829,"children":830},"Uniform","/videos/uniform",[831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999],{"title":832,"_path":833},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":835,"_path":836},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":838,"_path":839},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":841,"_path":842},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":844,"_path":845},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":847,"_path":848},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":850,"_path":851},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":853,"_path":854},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":856,"_path":857},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":859,"_path":860},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":862,"_path":863},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":865,"_path":866},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":868,"_path":869},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":871,"_path":872},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":874,"_path":875},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":877,"_path":878},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":880,"_path":881},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":883,"_path":884},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":886,"_path":887},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":889,"_path":890},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":892,"_path":893},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":895,"_path":896},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":898,"_path":899},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":901,"_path":902},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":904,"_path":905},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":907,"_path":908},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":910,"_path":911},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":913,"_path":914},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":916,"_path":917},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":919,"_path":920},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":922,"_path":923},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":925,"_path":926},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":928,"_path":929},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":931,"_path":932},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":934,"_path":935},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":937,"_path":938},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":940,"_path":941},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":943,"_path":944},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":946,"_path":947},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":949,"_path":950},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":952,"_path":953},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":955,"_path":956},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":958,"_path":959},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":961,"_path":962},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":964,"_path":965},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":967,"_path":968},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":970,"_path":971},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":973,"_path":974},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":976,"_path":977},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":979,"_path":980},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":982,"_path":983},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":985,"_path":986},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":988,"_path":989},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":991,"_path":992},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":994,"_path":995},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":997,"_path":998},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1000,"_path":1001},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1003,"_path":1004,"children":1005},"Writing","/writing",[1006,1009,1012,1015,1018,1021,1022,1025,1028,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074],{"title":1007,"_path":1008},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1010,"_path":1011},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1013,"_path":1014},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1016,"_path":1017},"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":1019,"_path":1020},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1003,"_path":1004},{"title":1023,"_path":1024},"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":1026,"_path":1027},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":8,"_path":4},{"title":1030,"_path":1031},"My Fitness Story","/writing/my-fitness-story",{"title":1033,"_path":1034},"New job alert!","/writing/new-job-alert",{"title":1036,"_path":1037},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1039,"_path":1040},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1042,"_path":1043},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1045,"_path":1046},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1048,"_path":1049},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1051,"_path":1052},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1054,"_path":1055},"The MACH monolith","/writing/the-mach-monolith",{"title":1057,"_path":1058},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1060,"_path":1061},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1063,"_path":1064},"This is headless 2.0","/writing/this-is-headless-20",{"title":1066,"_path":1067},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1069,"_path":1070},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1072,"_path":1073},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1075,"_path":1076},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1078,"_path":1079,"children":1080},"Speaking","/speaking",[1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312],{"title":1082,"_path":1083},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1085,"_path":1086},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1088,"_path":1089},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1091,"_path":1092},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1094,"_path":1095},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1097,"_path":1098},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1100,"_path":1101},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1103,"_path":1104},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1106,"_path":1107},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1109,"_path":1110},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1112,"_path":1113},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1115,"_path":1116},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1118,"_path":1119},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1121,"_path":1122},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1124,"_path":1125},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1127,"_path":1128},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1130,"_path":1131},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1133,"_path":1134},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1136,"_path":1137},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1139,"_path":1140},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1142,"_path":1143},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1145,"_path":1146},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1148,"_path":1149},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1151,"_path":1152},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1154,"_path":1155},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1157,"_path":1158},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1160,"_path":1161},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1163,"_path":1164},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1166,"_path":1167},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1169,"_path":1170},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1172,"_path":1173},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1175,"_path":1176},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1178,"_path":1179},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1181,"_path":1182},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1184,"_path":1185},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1187,"_path":1188},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1190,"_path":1191},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1193,"_path":1194},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1196,"_path":1197},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1199,"_path":1200},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1202,"_path":1203},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1205,"_path":1206},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1208,"_path":1209},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1211,"_path":1212},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1214,"_path":1215},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1217,"_path":1218},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1220,"_path":1221},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1223,"_path":1224},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1226,"_path":1227},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1229,"_path":1230},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1232,"_path":1233},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1235,"_path":1236},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1238,"_path":1239},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1241,"_path":1242},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1244,"_path":1245},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1247,"_path":1248},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1250,"_path":1251},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1253,"_path":1254},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1256,"_path":1257},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1259,"_path":1260},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1262,"_path":1263},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1265,"_path":1266},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1268,"_path":1269},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1271,"_path":1272},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1274,"_path":1275},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1277,"_path":1278},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1280,"_path":1281},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1283,"_path":1284},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1286,"_path":1287},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1289,"_path":1290},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1292,"_path":1293},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1295,"_path":1296},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1298,"_path":1299},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1301,"_path":1302},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1304,"_path":1305},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1307,"_path":1308},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1310,"_path":1311},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1078,"_path":1079},{"title":1314,"_path":1315},"live streams","/livestreams",{"title":1317,"_path":1318},"press kit","/presskit",{"title":1320,"_path":1321},"alive and kicking","/alive-and-kicking",1718484379610] \ No newline at end of file diff --git a/writing/make-the-web-greener-luxury-edition/index.html b/writing/make-the-web-greener-luxury-edition/index.html deleted file mode 100644 index b8ba93f7..00000000 --- a/writing/make-the-web-greener-luxury-edition/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - -Make the Web Greener, Luxury Edition - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Make the Web Greener, Luxury Edition

Mar 18, 2023 at https://www.valtech.com/insights/make-the-web-greener-luxury-edition/

If the internet were a country, it would be the world’s sixth biggest polluter.

The internet consumes around 416TWh per year in electricity. That number does not say much until you compare it to the 300TWh the United Kingdom consumes. These are staggering numbers, and they will only go up as the internet keeps growing. Whether you realize it or not, carbon emissions are generated all over the place.

The average website produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that is 211 kg CO2 per year or about twice the weight of a professional basketball player. This is more carbon than ten trees can absorb. If you think about how many websites we have on the internet, this comparison paints a pretty scary picture.

The Luxury Dilemma: The Rich Experience and Fast Page Loads

Every web page is crafted with art-directed elements that tell the right story. Luxury product pages are rich experiences that make the user linger and enjoy the ride. This approach is great for the potential customer, but there is a dark undertone when we consider the environment. These pages are full of heavy images, videos and animations. The heavier the page, the more carbon is emitted. If pages take longer to load, the emissions go up due to more device usage–and the antenna and screen are used for a longer period too.

There are some conflicting goals within luxury on the web. We want a rich experience, but we also want hyper-fast page loads. We all know that slow pages mean more user drop-off. And to make matters worse, we also need to think about the environment. We need to contain how much carbon is blasted into the atmosphere when someone visits a page.

How to Reduce Carbon Emissions from Your Website

The above describes a complicated mix of problems to solve. We know that carbon emissions are lowest if:

  • A page is fast to find
  • The page loads fast and with little resources
  • Users stay on a page for a very short time

These three points are hard to carry out in the current way of working in luxury. That is not because we do not know how to build websites but because the goals are different. We want visitors to explore the brand, linger and become influenced by the product story. They should become lifelong customers. Sadly, this goes against what is best practice for websites with a low carbon footprint.

Being Sustainable Without Compromising Quality

But fear not: There is a solution that can get us much closer to being sustainable. We can even keep the same level of quality we have now. In addition to being greener, this solution makes our websites more accessible to people in upcoming markets. The answer is: optimization of image and video delivery. We solve the problem by reducing excess and only loading what is needed in the context of the user.

Are We There Yet? Optimizing Media Asset Delivery

Most traditional CMS systems focus on content editing or cataloguing of content and not on serving of content per se. Serving the content is part of the suite of tools in the platform, but the focus tends to be on other aspects. We call this the “best-of-suite” approach where one vendor deals with all aspects of the website.

Nowadays, there are companies that solve specific problems within the eco-system of websites. We call these “best-of-breed” solutions, and they tend to be cloud native SaaS companies. Among these companies, there is a category that only deals with media asset delivery.

Images and videos are particularly hard. If we ask a content editor, filmmaker, or web developer how to optimize assets for the web, they generally do not know. The same goes for the best-of-suite CMS systems. They do not specifically optimize assets for the web—they serve them as is.

This leaves the responsibility to the content editor. We have seen people struggle with photoshop and not know how to optimize an image. Teaching courses and paying for Adobe licenses is commonplace and awfully expensive.

Fortunately, there is a plethora of ways to optimize images and videos for the web—and the SaaS solutions mentioned above take care of the problem for you. They serve assets in the right format for the user’s context (browser, device, resolution). And they reduce the file size with AI to be indistinguishable from the original—doing this by hand as a content editor is impossible.

We have had projects where the page weight dropped by 90 percent without loss of quality. Content editors would only upload the original image and the system did the rest.

Loading the Right Assets in the Context of the User

Next to serving optimized assets, the most gain is made when not serving them at all. As funny as this may sound, it is the most effective way to have a low-carbon website. If a user never scrolls down or never opens the big mega menu, what is the use in loading these assets in the first place? You should only load assets you know the user will see. We call this “lazy loading,” and it is one of the most powerful tools in the bag of tricks of web developers.

Next to lazy loading, it is also important to load assets in the right context. If a user visits your website on a phone, make sure to load an image with the same resolution the phone has. Loading bigger assets unnecessarily degrades the user experience. It also makes the website have a higher carbon footprint due to excessive file size.

The same goes for file types. If you want an animated background image on the hero banner (we all do), do not use a GIF, but rather a video. GIF’s are about five times as big as videos and tend to not work well on mobile devices.

Looking Ahead on Website Sustainability

We cannot always optimize our web pages according to the best practices for low-carbon websites. This is just the nature of luxury. But we can focus on smaller parts of the equation that have a huge influence on how sustainable the website is. All of this can be accomplished without compromising on quality.

Look at the future and choose a best-of-breed solution that handles one of the most complex parts of the web: images and media. By combining optimized assets and lazy loading we make our pages lighter. This means they are more accessible to new customers in emerging markets.

And wouldn’t it be nice if content editors did not need photoshop licenses anymore? The overhead of training and the extra process is not worth it.

Instead, have your media delivered by a specialized solution—Mother Nature will thank you for having a low-carbon website.

- \ No newline at end of file diff --git a/writing/my-fitness-story/_payload.json b/writing/my-fitness-story/_payload.json deleted file mode 100644 index 48bd781a..00000000 --- a/writing/my-fitness-story/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1277},["Reactive",2],{"content-query-h4FzmxLE6n":3,"content-navigation-8C37fagqQL":161},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":18,"body":19,"_type":156,"_id":157,"_source":158,"_file":159,"_extension":160},"/writing/my-fitness-story","writing",false,"","My Fitness Story","From fat and sick to slim and happy Aside from a short period in high school I have always...",1406186,"my-fitness-story","2023-03-18T22:39:46Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86xayxbotaqwk8get75h.jpg","https://dev.to/timbenniks/my-fitness-story-1p97",[16,17],"fitness","personal",22299,{"type":20,"children":21,"toc":152},"root",[22,31,37,42,47,52,65,70,86,91,96,101,106,114,119,126,134,139,144],{"type":23,"tag":24,"props":25,"children":27},"element","h2",{"id":26},"from-fat-and-sick-to-slim-and-happy",[28],{"type":29,"value":30},"text","From fat and sick to slim and happy",{"type":23,"tag":32,"props":33,"children":34},"p",{},[35],{"type":29,"value":36},"Aside from a short period in high school I have always been a chubby kid. When I lived at home my mom made sure I didn’t go overboard with food. She stopped me here and there when needed and always made sure we had healthy food on the table.",{"type":23,"tag":32,"props":38,"children":39},{},[40],{"type":29,"value":41},"After highschool I started living on my own and became a lot more active as a musician. I got used to a very burgundian lifestyle and started eating all kinds of junk. The free drinks for musicians also didn’t help.",{"type":23,"tag":32,"props":43,"children":44},{},[45],{"type":29,"value":46},"I have always been interested in muscles and posture but never had the discipline to change myself into something I liked. I quickly turned into a lazy musician. Beer and fast food, either before or after a gig, were the norm. I didn’t know any better and ate highly refined foods containing a shitload of ingredients with long and incomprehensible names. Looking back it’s unbelievable how little I knew about stuff I put in my body.",{"type":23,"tag":32,"props":48,"children":49},{},[50],{"type":29,"value":51},"Being fat was always in the back of my mind and it nagged at me. When I reached 120kg I felt horrible and knew change was needed. I was always sweating, tired and out of breath. I had high blood pressure and was often feeling ill. Diabetes type 2 was creeping up on me.",{"type":23,"tag":32,"props":53,"children":54},{},[55],{"type":23,"tag":56,"props":57,"children":64},"img",{"alt":58,"loading":59,"provider":60,"sizes":61,"src":62,"width":63},"fat","lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z7h5x2kxppg53w4is65y.jpg",1280,[],{"type":23,"tag":32,"props":66,"children":67},{},[68],{"type":29,"value":69},"Even after this turning point I was still completely inadequate at sports and I didn’t have any discipline. I didn’t even know how to properly contract my muscles to lift something. I had no body sense at all.",{"type":23,"tag":32,"props":71,"children":72},{},[73,75,84],{"type":29,"value":74},"I asked my mate ",{"type":23,"tag":76,"props":77,"children":81},"a",{"href":78,"rel":79},"https://www.facebook.com/chrisfinch",[80],"nofollow",[82],{"type":29,"value":83},"Chris",{"type":29,"value":85}," to help me out. He was (is) a complete legend and instantly jumped at the chance to help a friend. We started doing his “half hour of power”, lifted weights and ran as often as possible.",{"type":23,"tag":32,"props":87,"children":88},{},[89],{"type":29,"value":90},"Well, I tried.",{"type":23,"tag":32,"props":92,"children":93},{},[94],{"type":29,"value":95},"I had excuses. Many of them. “But I had a gig last night” or “I’m still too sore from last week”. I was a complete pussy and it must have frustrated Chris. But he was strong and pulled me through.",{"type":23,"tag":32,"props":97,"children":98},{},[99],{"type":29,"value":100},"As I finally saw some results I overcame my disciplinary problems step by step. I changed my diet and the fat started coming of quickly. I even gained some muscle.",{"type":23,"tag":32,"props":102,"children":103},{},[104],{"type":29,"value":105},"I started researching and a whole world of bro-science opened up to me. I did programs like P90X, 5x5, and 4-hour body.",{"type":23,"tag":32,"props":107,"children":108},{},[109],{"type":23,"tag":56,"props":110,"children":113},{"alt":111,"loading":59,"provider":60,"sizes":61,"src":112,"width":63},"weightloss","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0wcd7nly7arzfjs9glt.jpg",[],{"type":23,"tag":32,"props":115,"children":116},{},[117],{"type":29,"value":118},"The thing that helped me most was my Facebook activity. I posted my weight daily. People would respond if it went up or down and it kept me motivated. This was the first time in my life peer pressure actually had a positive influence on my state of mind.",{"type":23,"tag":32,"props":120,"children":121},{},[122],{"type":23,"tag":56,"props":123,"children":125},{"alt":111,"loading":59,"provider":60,"sizes":61,"src":124,"width":63},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8oa7r37rqrhgldhtegpd.jpg",[],{"type":23,"tag":32,"props":127,"children":128},{},[129],{"type":23,"tag":56,"props":130,"children":133},{"alt":131,"loading":59,"provider":60,"sizes":61,"src":132,"width":63},"guitars","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4yyrv0qc0q0r59piv0n.jpg",[],{"type":23,"tag":32,"props":135,"children":136},{},[137],{"type":29,"value":138},"In April 2014 my wife and I moved to Paris. At that point I was vegan for half a year and I was at my lightest weight since I started training. We had to deal with different stress factors when we arrived and I let go of the strict livestyle a little and gained some weight again. The cheese, wine and French baguettes are too awesome not to enjoy. In January 2014 I got up to ~95kg and Paris had officially turned me into a croissant.",{"type":23,"tag":32,"props":140,"children":141},{},[142],{"type":29,"value":143},"But I wasn’t a croissant for long. I started lifting some weights again and slowely started to get back into it. When the marathon passed by our apartment in Rue Saint-Antoine in April 2014 I signed up on the spot. I became a long distance runner over night. New goals were set, and crushed over the proceeding six months.",{"type":23,"tag":32,"props":145,"children":146},{},[147],{"type":23,"tag":56,"props":148,"children":151},{"alt":149,"loading":59,"provider":60,"sizes":61,"src":150,"width":63},"running","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oph2vujeha2kjojtab6i.jpg",[],{"title":7,"searchDepth":153,"depth":153,"links":154},2,[155],{"id":26,"depth":153,"text":30},"markdown","content:4.writing:my-fitness-story.md","content","4.writing/my-fitness-story.md","md",[162,165,957,1032,1268,1271,1274],{"title":163,"_path":164},"About","/about",{"title":166,"_path":167,"children":168},"videos","/videos",[169,188,207,253,254,306,409,432,454,782],{"title":170,"_path":171,"children":172},"Alive And Kicking","/videos/alive-and-kicking",[173,176,179,182,185],{"title":174,"_path":175},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":177,"_path":178},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":180,"_path":181},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":183,"_path":184},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":186,"_path":187},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":189,"_path":190,"children":191},"Headless Creator","/videos/headless-creator",[192,195,198,201,204],{"title":193,"_path":194},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":196,"_path":197},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":199,"_path":200},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":202,"_path":203},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":205,"_path":206},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":208,"_path":209,"children":210},"Hygraph","/videos/hygraph",[211,214,217,220,223,226,229,232,235,238,241,244,247,250],{"title":212,"_path":213},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":215,"_path":216},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":218,"_path":219},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":221,"_path":222},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":224,"_path":225},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":227,"_path":228},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":230,"_path":231},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":233,"_path":234},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":236,"_path":237},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":239,"_path":240},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":242,"_path":243},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":245,"_path":246},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":248,"_path":249},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":251,"_path":252},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":166,"_path":167},{"title":255,"_path":256,"children":257},"Live Hygraph","/videos/live-hygraph",[258,261,264,267,270,273,276,279,282,285,288,291,294,297,300,303],{"title":259,"_path":260},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":262,"_path":263},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":265,"_path":266},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":268,"_path":269},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":271,"_path":272},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":274,"_path":275},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":277,"_path":278},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":280,"_path":281},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":283,"_path":284},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":286,"_path":287},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":289,"_path":290},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":292,"_path":293},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":295,"_path":296},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":298,"_path":299},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":301,"_path":302},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":304,"_path":305},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":307,"_path":308,"children":309},"Live Uniform","/videos/live-uniform",[310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,382,385,388,391,394,397,400,403,406],{"title":311,"_path":312},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":314,"_path":315},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":317,"_path":318},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":320,"_path":321},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":323,"_path":324},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":326,"_path":327},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":329,"_path":330},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":332,"_path":333},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":335,"_path":336},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":338,"_path":339},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":341,"_path":342},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":344,"_path":345},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":347,"_path":348},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":350,"_path":351},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":353,"_path":354},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":356,"_path":357},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":359,"_path":360},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":362,"_path":363},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":365,"_path":366},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":368,"_path":369},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":371,"_path":372},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":374,"_path":375},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":377,"_path":378},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":380,"_path":381},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":383,"_path":384},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":386,"_path":387},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":389,"_path":390},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":392,"_path":393},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":395,"_path":396},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":398,"_path":399},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":401,"_path":402},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":404,"_path":405},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":407,"_path":408},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":410,"_path":411,"children":412},"Misc Streams","/videos/misc-streams",[413,416,419,422,424,426,429],{"title":414,"_path":415},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":417,"_path":418},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":420,"_path":421},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":404,"_path":423},"/videos/misc-streams/003-jvgiaotcerq",{"title":395,"_path":425},"/videos/misc-streams/004-ekut1koa2n8",{"title":427,"_path":428},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":430,"_path":431},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":433,"_path":434,"children":435},"Mp","/videos/mp",[436,439,442,445,448,451],{"title":437,"_path":438},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":440,"_path":441},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":443,"_path":444},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":446,"_path":447},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":449,"_path":450},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":452,"_path":453},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":455,"_path":456,"children":457},"Tim","/videos/tim",[458,460,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508,510,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779],{"title":177,"_path":459},"/videos/tim/000-mvq-_s20ndk",{"title":461,"_path":462},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":464,"_path":465},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":467,"_path":468},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":470,"_path":471},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":473,"_path":474},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":476,"_path":477},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":479,"_path":480},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":482,"_path":483},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":485,"_path":486},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":488,"_path":489},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":491,"_path":492},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":494,"_path":495},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":497,"_path":498},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":500,"_path":501},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":503,"_path":504},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":506,"_path":507},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":180,"_path":509},"/videos/tim/017-m0mrligs6i0",{"title":174,"_path":511},"/videos/tim/018-hhpitreyobi",{"title":513,"_path":514},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":516,"_path":517},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":519,"_path":520},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":522,"_path":523},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":525,"_path":526},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":528,"_path":529},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":531,"_path":532},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":534,"_path":535},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":537,"_path":538},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":540,"_path":541},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":543,"_path":544},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":546,"_path":547},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":549,"_path":550},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":552,"_path":553},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":555,"_path":556},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":558,"_path":559},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":561,"_path":562},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":564,"_path":565},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":567,"_path":568},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":570,"_path":571},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":573,"_path":574},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":576,"_path":577},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":579,"_path":580},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":582,"_path":583},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":585,"_path":586},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":588,"_path":589},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":591,"_path":592},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":594,"_path":595},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":597,"_path":598},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":600,"_path":601},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":603,"_path":604},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":606,"_path":607},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":609,"_path":610},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":612,"_path":613},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":615,"_path":616},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":618,"_path":619},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":621,"_path":622},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":624,"_path":625},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":627,"_path":628},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":630,"_path":631},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":633,"_path":634},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":636,"_path":637},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":639,"_path":640},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":642,"_path":643},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":645,"_path":646},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":648,"_path":649},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":651,"_path":652},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":654,"_path":655},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":657,"_path":658},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":660,"_path":661},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":663,"_path":664},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":666,"_path":667},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":669,"_path":670},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":672,"_path":673},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":675,"_path":676},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":678,"_path":679},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":681,"_path":682},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":684,"_path":685},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":687,"_path":688},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":690,"_path":691},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":693,"_path":694},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":696,"_path":697},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":699,"_path":700},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":702,"_path":703},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":705,"_path":706},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":708,"_path":709},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":711,"_path":712},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":714,"_path":715},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":717,"_path":718},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":720,"_path":721},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":723,"_path":724},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":726,"_path":727},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":729,"_path":730},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":732,"_path":733},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":735,"_path":736},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":738,"_path":739},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":741,"_path":742},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":744,"_path":745},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":747,"_path":748},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":750,"_path":751},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":753,"_path":754},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":756,"_path":757},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":759,"_path":760},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":762,"_path":763},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":765,"_path":766},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":768,"_path":769},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":771,"_path":772},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":774,"_path":775},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":777,"_path":778},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":780,"_path":781},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":783,"_path":784,"children":785},"Uniform","/videos/uniform",[786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954],{"title":787,"_path":788},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":790,"_path":791},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":793,"_path":794},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":796,"_path":797},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":799,"_path":800},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":802,"_path":803},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":805,"_path":806},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":808,"_path":809},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":811,"_path":812},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":814,"_path":815},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":817,"_path":818},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":820,"_path":821},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":823,"_path":824},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":826,"_path":827},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":829,"_path":830},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":832,"_path":833},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":835,"_path":836},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":838,"_path":839},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":841,"_path":842},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":844,"_path":845},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":847,"_path":848},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":850,"_path":851},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":853,"_path":854},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":856,"_path":857},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":859,"_path":860},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":862,"_path":863},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":865,"_path":866},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":868,"_path":869},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":871,"_path":872},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":874,"_path":875},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":877,"_path":878},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":880,"_path":881},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":883,"_path":884},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":886,"_path":887},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":889,"_path":890},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":892,"_path":893},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":895,"_path":896},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":898,"_path":899},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":901,"_path":902},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":904,"_path":905},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":907,"_path":908},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":910,"_path":911},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":913,"_path":914},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":916,"_path":917},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":919,"_path":920},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":922,"_path":923},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":925,"_path":926},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":928,"_path":929},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":931,"_path":932},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":934,"_path":935},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":937,"_path":938},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":940,"_path":941},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":943,"_path":944},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":946,"_path":947},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":949,"_path":950},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":952,"_path":953},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":955,"_path":956},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":958,"_path":959,"children":960},"Writing","/writing",[961,964,967,970,973,976,977,980,983,986,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029],{"title":962,"_path":963},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":965,"_path":966},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":968,"_path":969},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":971,"_path":972},"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":974,"_path":975},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":958,"_path":959},{"title":978,"_path":979},"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":981,"_path":982},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":984,"_path":985},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":8,"_path":4},{"title":988,"_path":989},"New job alert!","/writing/new-job-alert",{"title":991,"_path":992},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":994,"_path":995},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":997,"_path":998},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1000,"_path":1001},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1003,"_path":1004},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1006,"_path":1007},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1009,"_path":1010},"The MACH monolith","/writing/the-mach-monolith",{"title":1012,"_path":1013},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1015,"_path":1016},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1018,"_path":1019},"This is headless 2.0","/writing/this-is-headless-20",{"title":1021,"_path":1022},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1024,"_path":1025},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1027,"_path":1028},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1030,"_path":1031},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1033,"_path":1034,"children":1035},"Speaking","/speaking",[1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267],{"title":1037,"_path":1038},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1040,"_path":1041},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1043,"_path":1044},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1046,"_path":1047},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1049,"_path":1050},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1052,"_path":1053},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1055,"_path":1056},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1058,"_path":1059},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1061,"_path":1062},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1064,"_path":1065},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1067,"_path":1068},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1070,"_path":1071},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1073,"_path":1074},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1076,"_path":1077},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1079,"_path":1080},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1082,"_path":1083},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1085,"_path":1086},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1088,"_path":1089},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1091,"_path":1092},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1094,"_path":1095},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1097,"_path":1098},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1100,"_path":1101},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1103,"_path":1104},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1106,"_path":1107},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1109,"_path":1110},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1112,"_path":1113},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1115,"_path":1116},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1118,"_path":1119},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1121,"_path":1122},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1124,"_path":1125},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1127,"_path":1128},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1130,"_path":1131},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1133,"_path":1134},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1136,"_path":1137},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1139,"_path":1140},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1142,"_path":1143},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1145,"_path":1146},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1148,"_path":1149},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1151,"_path":1152},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1154,"_path":1155},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1157,"_path":1158},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1160,"_path":1161},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1163,"_path":1164},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1166,"_path":1167},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1169,"_path":1170},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1172,"_path":1173},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1175,"_path":1176},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1178,"_path":1179},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1181,"_path":1182},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1184,"_path":1185},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1187,"_path":1188},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1190,"_path":1191},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1193,"_path":1194},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1196,"_path":1197},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1199,"_path":1200},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1202,"_path":1203},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1205,"_path":1206},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1208,"_path":1209},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1211,"_path":1212},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1214,"_path":1215},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1217,"_path":1218},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1220,"_path":1221},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1223,"_path":1224},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1226,"_path":1227},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1229,"_path":1230},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1232,"_path":1233},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1235,"_path":1236},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1238,"_path":1239},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1241,"_path":1242},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1244,"_path":1245},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1247,"_path":1248},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1250,"_path":1251},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1253,"_path":1254},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1256,"_path":1257},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1259,"_path":1260},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1262,"_path":1263},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1265,"_path":1266},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1033,"_path":1034},{"title":1269,"_path":1270},"live streams","/livestreams",{"title":1272,"_path":1273},"press kit","/presskit",{"title":1275,"_path":1276},"alive and kicking","/alive-and-kicking",1718484379606] \ No newline at end of file diff --git a/writing/my-fitness-story/index.html b/writing/my-fitness-story/index.html deleted file mode 100644 index d9adc045..00000000 --- a/writing/my-fitness-story/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - -My Fitness Story - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

My Fitness Story

Mar 18, 2023 at https://dev.to/timbenniks/my-fitness-story-1p97

From fat and sick to slim and happy

Aside from a short period in high school I have always been a chubby kid. When I lived at home my mom made sure I didn’t go overboard with food. She stopped me here and there when needed and always made sure we had healthy food on the table.

After highschool I started living on my own and became a lot more active as a musician. I got used to a very burgundian lifestyle and started eating all kinds of junk. The free drinks for musicians also didn’t help.

I have always been interested in muscles and posture but never had the discipline to change myself into something I liked. I quickly turned into a lazy musician. Beer and fast food, either before or after a gig, were the norm. I didn’t know any better and ate highly refined foods containing a shitload of ingredients with long and incomprehensible names. Looking back it’s unbelievable how little I knew about stuff I put in my body.

Being fat was always in the back of my mind and it nagged at me. When I reached 120kg I felt horrible and knew change was needed. I was always sweating, tired and out of breath. I had high blood pressure and was often feeling ill. Diabetes type 2 was creeping up on me.

fat

Even after this turning point I was still completely inadequate at sports and I didn’t have any discipline. I didn’t even know how to properly contract my muscles to lift something. I had no body sense at all.

I asked my mate Chris to help me out. He was (is) a complete legend and instantly jumped at the chance to help a friend. We started doing his “half hour of power”, lifted weights and ran as often as possible.

Well, I tried.

I had excuses. Many of them. “But I had a gig last night” or “I’m still too sore from last week”. I was a complete pussy and it must have frustrated Chris. But he was strong and pulled me through.

As I finally saw some results I overcame my disciplinary problems step by step. I changed my diet and the fat started coming of quickly. I even gained some muscle.

I started researching and a whole world of bro-science opened up to me. I did programs like P90X, 5x5, and 4-hour body.

weightloss

The thing that helped me most was my Facebook activity. I posted my weight daily. People would respond if it went up or down and it kept me motivated. This was the first time in my life peer pressure actually had a positive influence on my state of mind.

weightloss

guitars

In April 2014 my wife and I moved to Paris. At that point I was vegan for half a year and I was at my lightest weight since I started training. We had to deal with different stress factors when we arrived and I let go of the strict livestyle a little and gained some weight again. The cheese, wine and French baguettes are too awesome not to enjoy. In January 2014 I got up to ~95kg and Paris had officially turned me into a croissant.

But I wasn’t a croissant for long. I started lifting some weights again and slowely started to get back into it. When the marathon passed by our apartment in Rue Saint-Antoine in April 2014 I signed up on the spot. I became a long distance runner over night. New goals were set, and crushed over the proceeding six months.

running

- \ No newline at end of file diff --git a/writing/new-job-alert/_payload.json b/writing/new-job-alert/_payload.json deleted file mode 100644 index b59f1034..00000000 --- a/writing/new-job-alert/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1240},["Reactive",2],{"content-query-XmlTFjPORR":3,"content-navigation-8C37fagqQL":126},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":19,"body":20,"_type":121,"_id":122,"_source":123,"_file":124,"_extension":125},"/writing/new-job-alert","writing",false,"","New job alert!","After an exciting journey at Uniform, it's time for a new adventure. At Uniform, we thrived during...",1569148,"new-job-alert","2023-08-16T13:42:10Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadfg5ciysfamka395zir.png","https://dev.to/timbenniks/new-job-alert-443n",[16,17,18],"career","webdev","devrel",22300,{"type":21,"children":22,"toc":118},"root",[23,42,47,61,66,98,103,108,113],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28,31,40],{"type":29,"value":30},"text","After an exciting journey at ",{"type":24,"tag":32,"props":33,"children":37},"a",{"href":34,"rel":35},"https://uniform.dev",[36],"nofollow",[38],{"type":29,"value":39},"Uniform",{"type":29,"value":41},", it's time for a new adventure.",{"type":24,"tag":25,"props":43,"children":44},{},[45],{"type":29,"value":46},"At Uniform, we thrived during the pandemic, hiring the best talent remotely and finding success in a new product category. I not only learnt a lot but also created value towards company perception and trust along the way.",{"type":24,"tag":25,"props":48,"children":49},{},[50,52,59],{"type":29,"value":51},"Inspired by the startup life, I wanted a new challenge at a company further along their journey. ",{"type":24,"tag":32,"props":53,"children":56},{"href":54,"rel":55},"https://hygraph.com",[36],[57],{"type":29,"value":58},"Hygraph",{"type":29,"value":60}," caught my attention with its product-led growth, open source SDKs, solid product-market fit, and strong fit for developer relations.",{"type":24,"tag":25,"props":62,"children":63},{},[64],{"type":29,"value":65},"I'm excited to join Hygraph as the Developer Relations Lead for Outreach and Awareness. With 15 years of agency experience, deep knowledge of the developer space, and connections within the MACH alliance, I'm confident in bringing my skills to this product-led growth company.",{"type":24,"tag":25,"props":67,"children":68},{},[69,71,78,80,87,89,96],{"type":29,"value":70},"Working alongside experienced professionals like ",{"type":24,"tag":32,"props":72,"children":75},{"href":73,"rel":74},"https://www.linkedin.com/in/bryanlrobinson/",[36],[76],{"type":29,"value":77},"Bryan Robinson",{"type":29,"value":79}," (Orbit, Algolia, Sanity) and ",{"type":24,"tag":32,"props":81,"children":84},{"href":82,"rel":83},"https://www.linkedin.com/in/lowisren/",[36],[85],{"type":29,"value":86},"Lo Etheridge",{"type":29,"value":88}," (Sanity, and many other dev gigs), I'll be part of Hygraph's developer relations team within the larger marketing organization led by ",{"type":24,"tag":32,"props":90,"children":93},{"href":91,"rel":92},"https://www.linkedin.com/in/omergokcetumer/",[36],[94],{"type":29,"value":95},"Omer Gokce Tumer",{"type":29,"value":97},".",{"type":24,"tag":25,"props":99,"children":100},{},[101],{"type":29,"value":102},"Hygraph is at the forefront of the composability and content federation space. They provide a solution to the challenges faced by scaled headless architectures, bringing stability and flexibility. Companies like Netlify, Conscia, and Octoo have embraced Hygraph's approach to content federation, validating the category.",{"type":24,"tag":25,"props":104,"children":105},{},[106],{"type":29,"value":107},"If you're seeking content federation at scale, Hygraph has a remarkable head start and addresses the current code-first problems in the MACH architecture space.",{"type":24,"tag":25,"props":109,"children":110},{},[111],{"type":29,"value":112},"I'm eager to get started and can't wait for what lies ahead. See you soon!",{"type":24,"tag":25,"props":114,"children":115},{},[116],{"type":29,"value":117},"Cheers,\nTim",{"title":7,"searchDepth":119,"depth":119,"links":120},2,[],"markdown","content:4.writing:new-job-alert.md","content","4.writing/new-job-alert.md","md",[127,130,920,995,1231,1234,1237],{"title":128,"_path":129},"About","/about",{"title":131,"_path":132,"children":133},"videos","/videos",[134,153,172,217,218,270,373,396,418,746],{"title":135,"_path":136,"children":137},"Alive And Kicking","/videos/alive-and-kicking",[138,141,144,147,150],{"title":139,"_path":140},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":142,"_path":143},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":145,"_path":146},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":148,"_path":149},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":151,"_path":152},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":154,"_path":155,"children":156},"Headless Creator","/videos/headless-creator",[157,160,163,166,169],{"title":158,"_path":159},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":161,"_path":162},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":164,"_path":165},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":167,"_path":168},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":170,"_path":171},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":58,"_path":173,"children":174},"/videos/hygraph",[175,178,181,184,187,190,193,196,199,202,205,208,211,214],{"title":176,"_path":177},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":179,"_path":180},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":182,"_path":183},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":185,"_path":186},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":188,"_path":189},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":191,"_path":192},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":194,"_path":195},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":197,"_path":198},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":200,"_path":201},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":203,"_path":204},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":206,"_path":207},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":209,"_path":210},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":212,"_path":213},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":215,"_path":216},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":131,"_path":132},{"title":219,"_path":220,"children":221},"Live Hygraph","/videos/live-hygraph",[222,225,228,231,234,237,240,243,246,249,252,255,258,261,264,267],{"title":223,"_path":224},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":226,"_path":227},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":229,"_path":230},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":232,"_path":233},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":235,"_path":236},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":238,"_path":239},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":241,"_path":242},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":244,"_path":245},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":247,"_path":248},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":250,"_path":251},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":253,"_path":254},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":256,"_path":257},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":259,"_path":260},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":262,"_path":263},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":265,"_path":266},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":268,"_path":269},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":271,"_path":272,"children":273},"Live Uniform","/videos/live-uniform",[274,277,280,283,286,289,292,295,298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370],{"title":275,"_path":276},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":278,"_path":279},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":281,"_path":282},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":284,"_path":285},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":287,"_path":288},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":290,"_path":291},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":293,"_path":294},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":296,"_path":297},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":299,"_path":300},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":302,"_path":303},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":305,"_path":306},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":308,"_path":309},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":311,"_path":312},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":314,"_path":315},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":317,"_path":318},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":320,"_path":321},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":323,"_path":324},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":326,"_path":327},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":329,"_path":330},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":332,"_path":333},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":335,"_path":336},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":338,"_path":339},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":341,"_path":342},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":344,"_path":345},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":347,"_path":348},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":350,"_path":351},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":353,"_path":354},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":356,"_path":357},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":359,"_path":360},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":362,"_path":363},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":365,"_path":366},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":368,"_path":369},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":371,"_path":372},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":374,"_path":375,"children":376},"Misc Streams","/videos/misc-streams",[377,380,383,386,388,390,393],{"title":378,"_path":379},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":381,"_path":382},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":384,"_path":385},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":368,"_path":387},"/videos/misc-streams/003-jvgiaotcerq",{"title":359,"_path":389},"/videos/misc-streams/004-ekut1koa2n8",{"title":391,"_path":392},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":394,"_path":395},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":397,"_path":398,"children":399},"Mp","/videos/mp",[400,403,406,409,412,415],{"title":401,"_path":402},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":404,"_path":405},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":407,"_path":408},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":410,"_path":411},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":413,"_path":414},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":416,"_path":417},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":419,"_path":420,"children":421},"Tim","/videos/tim",[422,424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,474,476,479,482,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743],{"title":142,"_path":423},"/videos/tim/000-mvq-_s20ndk",{"title":425,"_path":426},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":428,"_path":429},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":431,"_path":432},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":434,"_path":435},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":437,"_path":438},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":440,"_path":441},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":443,"_path":444},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":446,"_path":447},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":449,"_path":450},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":452,"_path":453},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":455,"_path":456},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":458,"_path":459},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":461,"_path":462},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":464,"_path":465},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":467,"_path":468},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":470,"_path":471},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":145,"_path":473},"/videos/tim/017-m0mrligs6i0",{"title":139,"_path":475},"/videos/tim/018-hhpitreyobi",{"title":477,"_path":478},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":480,"_path":481},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":483,"_path":484},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":486,"_path":487},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":489,"_path":490},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":492,"_path":493},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":495,"_path":496},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":498,"_path":499},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":501,"_path":502},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":504,"_path":505},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":507,"_path":508},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":510,"_path":511},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":513,"_path":514},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":516,"_path":517},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":519,"_path":520},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":522,"_path":523},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":525,"_path":526},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":528,"_path":529},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":531,"_path":532},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":534,"_path":535},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":537,"_path":538},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":540,"_path":541},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":543,"_path":544},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":546,"_path":547},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":549,"_path":550},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":552,"_path":553},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":555,"_path":556},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":558,"_path":559},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":561,"_path":562},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":564,"_path":565},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":567,"_path":568},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":570,"_path":571},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":573,"_path":574},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":576,"_path":577},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":579,"_path":580},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":582,"_path":583},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":585,"_path":586},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":588,"_path":589},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":591,"_path":592},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":594,"_path":595},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":597,"_path":598},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":600,"_path":601},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":603,"_path":604},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":606,"_path":607},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":609,"_path":610},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":612,"_path":613},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":615,"_path":616},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":618,"_path":619},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":621,"_path":622},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":624,"_path":625},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":627,"_path":628},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":630,"_path":631},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":633,"_path":634},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":636,"_path":637},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":639,"_path":640},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":642,"_path":643},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":645,"_path":646},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":648,"_path":649},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":651,"_path":652},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":654,"_path":655},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":657,"_path":658},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":660,"_path":661},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":663,"_path":664},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":666,"_path":667},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":669,"_path":670},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":672,"_path":673},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":675,"_path":676},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":678,"_path":679},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":681,"_path":682},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":684,"_path":685},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":687,"_path":688},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":690,"_path":691},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":693,"_path":694},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":696,"_path":697},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":699,"_path":700},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":702,"_path":703},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":705,"_path":706},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":708,"_path":709},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":711,"_path":712},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":714,"_path":715},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":717,"_path":718},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":720,"_path":721},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":723,"_path":724},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":726,"_path":727},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":729,"_path":730},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":732,"_path":733},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":735,"_path":736},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":738,"_path":739},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":741,"_path":742},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":744,"_path":745},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":39,"_path":747,"children":748},"/videos/uniform",[749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917],{"title":750,"_path":751},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":753,"_path":754},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":756,"_path":757},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":759,"_path":760},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":762,"_path":763},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":765,"_path":766},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":768,"_path":769},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":771,"_path":772},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":774,"_path":775},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":777,"_path":778},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":780,"_path":781},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":783,"_path":784},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":786,"_path":787},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":789,"_path":790},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":792,"_path":793},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":795,"_path":796},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":798,"_path":799},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":801,"_path":802},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":804,"_path":805},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":807,"_path":808},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":810,"_path":811},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":813,"_path":814},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":816,"_path":817},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":819,"_path":820},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":822,"_path":823},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":825,"_path":826},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":828,"_path":829},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":831,"_path":832},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":834,"_path":835},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":837,"_path":838},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":840,"_path":841},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":843,"_path":844},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":846,"_path":847},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":849,"_path":850},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":852,"_path":853},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":855,"_path":856},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":858,"_path":859},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":861,"_path":862},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":864,"_path":865},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":867,"_path":868},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":870,"_path":871},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":873,"_path":874},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":876,"_path":877},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":879,"_path":880},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":882,"_path":883},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":885,"_path":886},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":888,"_path":889},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":891,"_path":892},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":894,"_path":895},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":897,"_path":898},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":900,"_path":901},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":903,"_path":904},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":906,"_path":907},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":909,"_path":910},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":912,"_path":913},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":915,"_path":916},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":918,"_path":919},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":921,"_path":922,"children":923},"Writing","/writing",[924,927,930,933,936,939,940,943,946,949,952,953,956,959,962,965,968,971,974,977,980,983,986,989,992],{"title":925,"_path":926},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":928,"_path":929},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":931,"_path":932},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":934,"_path":935},"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":937,"_path":938},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":921,"_path":922},{"title":941,"_path":942},"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":944,"_path":945},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":947,"_path":948},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":950,"_path":951},"My Fitness Story","/writing/my-fitness-story",{"title":8,"_path":4},{"title":954,"_path":955},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":957,"_path":958},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":960,"_path":961},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":963,"_path":964},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":966,"_path":967},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":969,"_path":970},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":972,"_path":973},"The MACH monolith","/writing/the-mach-monolith",{"title":975,"_path":976},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":978,"_path":979},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":981,"_path":982},"This is headless 2.0","/writing/this-is-headless-20",{"title":984,"_path":985},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":987,"_path":988},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":990,"_path":991},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":993,"_path":994},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":996,"_path":997,"children":998},"Speaking","/speaking",[999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1227,1230],{"title":1000,"_path":1001},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1003,"_path":1004},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1006,"_path":1007},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1009,"_path":1010},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1012,"_path":1013},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1015,"_path":1016},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1018,"_path":1019},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1021,"_path":1022},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1024,"_path":1025},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1027,"_path":1028},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1030,"_path":1031},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1033,"_path":1034},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1036,"_path":1037},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1039,"_path":1040},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1042,"_path":1043},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1045,"_path":1046},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1048,"_path":1049},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1051,"_path":1052},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1054,"_path":1055},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1057,"_path":1058},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1060,"_path":1061},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1063,"_path":1064},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1066,"_path":1067},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1069,"_path":1070},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1072,"_path":1073},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1075,"_path":1076},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1078,"_path":1079},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1081,"_path":1082},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1084,"_path":1085},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1087,"_path":1088},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1090,"_path":1091},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1093,"_path":1094},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1096,"_path":1097},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1099,"_path":1100},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1102,"_path":1103},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1105,"_path":1106},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1108,"_path":1109},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1111,"_path":1112},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1114,"_path":1115},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1117,"_path":1118},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1120,"_path":1121},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1123,"_path":1124},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1126,"_path":1127},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1129,"_path":1130},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1132,"_path":1133},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1135,"_path":1136},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1138,"_path":1139},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1141,"_path":1142},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1144,"_path":1145},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1147,"_path":1148},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1150,"_path":1151},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1153,"_path":1154},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1156,"_path":1157},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1159,"_path":1160},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1162,"_path":1163},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1165,"_path":1166},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1168,"_path":1169},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1171,"_path":1172},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1174,"_path":1175},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1177,"_path":1178},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1180,"_path":1181},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1183,"_path":1184},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1186,"_path":1187},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1189,"_path":1190},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1192,"_path":1193},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1195,"_path":1196},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1198,"_path":1199},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1201,"_path":1202},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1204,"_path":1205},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1207,"_path":1208},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1210,"_path":1211},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1213,"_path":1214},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1216,"_path":1217},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1219,"_path":1220},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1222,"_path":1223},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1225,"_path":1226},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1228,"_path":1229},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":996,"_path":997},{"title":1232,"_path":1233},"live streams","/livestreams",{"title":1235,"_path":1236},"press kit","/presskit",{"title":1238,"_path":1239},"alive and kicking","/alive-and-kicking",1718484379207] \ No newline at end of file diff --git a/writing/new-job-alert/index.html b/writing/new-job-alert/index.html deleted file mode 100644 index 31e5beb4..00000000 --- a/writing/new-job-alert/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - -New job alert! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

New job alert!

Aug 16, 2023 at https://dev.to/timbenniks/new-job-alert-443n

After an exciting journey at Uniform, it's time for a new adventure.

At Uniform, we thrived during the pandemic, hiring the best talent remotely and finding success in a new product category. I not only learnt a lot but also created value towards company perception and trust along the way.

Inspired by the startup life, I wanted a new challenge at a company further along their journey. Hygraph caught my attention with its product-led growth, open source SDKs, solid product-market fit, and strong fit for developer relations.

I'm excited to join Hygraph as the Developer Relations Lead for Outreach and Awareness. With 15 years of agency experience, deep knowledge of the developer space, and connections within the MACH alliance, I'm confident in bringing my skills to this product-led growth company.

Working alongside experienced professionals like Bryan Robinson (Orbit, Algolia, Sanity) and Lo Etheridge (Sanity, and many other dev gigs), I'll be part of Hygraph's developer relations team within the larger marketing organization led by Omer Gokce Tumer.

Hygraph is at the forefront of the composability and content federation space. They provide a solution to the challenges faced by scaled headless architectures, bringing stability and flexibility. Companies like Netlify, Conscia, and Octoo have embraced Hygraph's approach to content federation, validating the category.

If you're seeking content federation at scale, Hygraph has a remarkable head start and addresses the current code-first problems in the MACH architecture space.

I'm eager to get started and can't wait for what lies ahead. See you soon!

Cheers, -Tim

- \ No newline at end of file diff --git a/writing/the-2015-paris-maratho/_payload.json b/writing/the-2015-paris-maratho/_payload.json deleted file mode 100644 index 4d16d898..00000000 --- a/writing/the-2015-paris-maratho/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1482},["Reactive",2],{"content-query-cQdrbqU00L":3,"content-navigation-8C37fagqQL":366},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":18,"body":19,"_type":361,"_id":362,"_source":363,"_file":364,"_extension":365},"/writing/the-2015-paris-maratho","writing",false,"","The 2015 Paris marathon","Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue...",1406188,"the-2015-paris-maratho","2023-03-18T22:45:48Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furlbqaankzj82uhwrfq7.jpg","https://dev.to/timbenniks/the-2015-paris-marathon-i0l",[16,17],"personal","fitness",22299,{"type":20,"children":21,"toc":349},"root",[22,30,43,48,53,58,63,70,75,82,87,92,98,103,110,115,120,125,131,136,141,148,153,159,164,169,176,182,187,194,210,224,229,234,240,245,250,255,269,275,280,285,290,295,300,308,314],{"type":23,"tag":24,"props":25,"children":26},"element","p",{},[27],{"type":28,"value":29},"text","Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue Saint-Antoine. Seeing all these people swooshing by impressed me so much that I signed-up for the 2015 marathon on the spot. The goal was set, the easy part was over.",{"type":23,"tag":24,"props":31,"children":32},{},[33],{"type":23,"tag":34,"props":35,"children":42},"img",{"alt":36,"loading":37,"provider":38,"sizes":39,"src":40,"width":41},"Tim Running","lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gu3psk58kwz3gfppsmc8.jpg",1280,[],{"type":23,"tag":24,"props":44,"children":45},{},[46],{"type":28,"value":47},"I gave myself five months to conquer the beast. 42.195 kilometres. After running on and off for a couple of years it was time to get serious. As I work for AKQA I naturally chose to train with the Nike+ app and all the related products.",{"type":23,"tag":24,"props":49,"children":50},{},[51],{"type":28,"value":52},"Nike’s marathon training program was brutal. Even at the rookie level it made me run five times a week from the get-go. After living the good life for eight months in Paris both my endurance and cardio vascular strength were shit. It’s safe to say I was happy that the distances were short for the first couple of weeks.",{"type":23,"tag":24,"props":54,"children":55},{},[56],{"type":28,"value":57},"I didn’t have any specific goals in mind, just general stuff like: “I want to get a bit lighter so the running gets easier” or “I’d love to set a new half marathon personal best at one point”. I trusted the rigorous training schedule would get me there eventually.",{"type":23,"tag":24,"props":59,"children":60},{},[61],{"type":28,"value":62},"It didn’t. The training was so intense that I had skip workouts and I had to start experimenting with food to figure out how I could get my legs ready for the next run. My body could just not cope with the sheer amount of kilometres I had to run each week.",{"type":23,"tag":64,"props":65,"children":67},"h3",{"id":66},"january",[68],{"type":28,"value":69},"January",{"type":23,"tag":24,"props":71,"children":72},{},[73],{"type":28,"value":74},"After two months of pain I had finally found a balance. Turns out that eating super low fat and high carb was the best for my recovery. I was basically eating according to the 80/10/10 principle. 80% carbs, 10% fats, 10% protein. I’m not preaching this way of eating, it was just great for me.",{"type":23,"tag":24,"props":76,"children":77},{},[78],{"type":23,"tag":34,"props":79,"children":81},{"alt":69,"loading":37,"provider":38,"sizes":39,"src":80,"width":41},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9z60d58hzj247adpsmsn.jpg",[],{"type":23,"tag":24,"props":83,"children":84},{},[85],{"type":28,"value":86},"To achieve eating this macro ratio I had to cut out all animal products. If I ate too much fat on a rest day, like when you go out to dinner and you don’t want to be the asshole who can’t eat anything, I would have heavy legs the next day.",{"type":23,"tag":24,"props":88,"children":89},{},[90],{"type":28,"value":91},"I started eating copious amounts of fruit, rice, pasta, quinoa and veggies. My brain started functioning ten times better and I didn’t even think about coffee anymore. January was awesome. I ran pain free and the long distances started to become enjoyable. Good times. I ran 147km that month. This might not seem a lot to seasoned runners but I came from ~50km a month. I started a new chapter in my running career.",{"type":23,"tag":64,"props":93,"children":95},{"id":94},"february",[96],{"type":28,"value":97},"February",{"type":23,"tag":24,"props":99,"children":100},{},[101],{"type":28,"value":102},"We went on a ski trip in the beginning of February. I was an amazing holiday with loads of skiing, good food and laughs. I did some workouts in the gym and a proper mountain walk. I really hoped I hadn’t lost my running gains.",{"type":23,"tag":24,"props":104,"children":105},{},[106],{"type":23,"tag":34,"props":107,"children":109},{"alt":97,"loading":37,"provider":38,"sizes":39,"src":108,"width":41},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etfg0xoxax0zbyzrmcig.jpg",[],{"type":23,"tag":24,"props":111,"children":112},{},[113],{"type":28,"value":114},"The first Monday back I had a nasty cough but decided to at least try my fast 8km run I had planned for that day. Bad decision. Over the course of the week I developed a bronchitis and both the doctor and my wife (the boss and a bad ass physiotherapist) forbade me to run the following two weeks.",{"type":23,"tag":24,"props":116,"children":117},{},[118],{"type":28,"value":119},"I slept a lot and kept on eating well and as soon as the illness lifted I started running short distances again. I cursed my way through the first week. Even though the running hurt, my pace was still fast.",{"type":23,"tag":24,"props":121,"children":122},{},[123],{"type":28,"value":124},"In February I ran the awesome amount of 37.98km over five runs. The last of the five was the most painful 15km run of my life. We’d strolled around “Le Salon d’Agriculture” for three hours before. We tasted wines and tried cheeses. I had forgotten to drink any water. Rookie mistake. Lactic acid legs for days!",{"type":23,"tag":64,"props":126,"children":128},{"id":127},"march",[129],{"type":28,"value":130},"March",{"type":23,"tag":24,"props":132,"children":133},{},[134],{"type":28,"value":135},"Back to awesome. I ran 181km in 4 weeks. An absolute record month in my book. I had an amazing run in Amsterdam on which my whole family followed me by bike. I also ran personal bests on the 5km, 10km, 15km and 21km. I decided to drop the Nike+ program as I had missed too much the month before. This was a smart move. The Nike+ program would have burnt me out.",{"type":23,"tag":24,"props":137,"children":138},{},[139],{"type":28,"value":140},"I had been in training for 4 months by now and I had been sick the month before. The exhaustion was setting in a bit. I didn’t particularly feel it in my legs, but I started having problems staying focused on evening runs. One time I had to jump aside while a policeman was arresting someone. I flipped my ankle and had to walk home for an hour.",{"type":23,"tag":24,"props":142,"children":143},{},[144],{"type":23,"tag":34,"props":145,"children":147},{"alt":130,"loading":37,"provider":38,"sizes":39,"src":146,"width":41},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1r8u4pxda4nalwwa4x0o.jpg",[],{"type":23,"tag":24,"props":149,"children":150},{},[151],{"type":28,"value":152},"I felt stupid for being distracted. Even though I had super light shoes without much cushioning I stopped being in touch with the ground I was running on. Sounds like I’m a hippy aye? It’s a runners thing.",{"type":23,"tag":64,"props":154,"children":156},{"id":155},"april",[157],{"type":28,"value":158},"April",{"type":23,"tag":24,"props":160,"children":161},{},[162],{"type":28,"value":163},"Only two weeks left. I did a 27km run in a very busy, rainy and hilly Paris. After that I was so exhausted that I decided to start my tapering period a week early. I thought I’d hurt my feet too much and suddenly got very nervous. My marathon veteran colleagues told me this is normal and I should just chill out.",{"type":23,"tag":24,"props":165,"children":166},{},[167],{"type":28,"value":168},"I only ran a handful of runs up until the big day. The thing I liked most about the tapering period was the carbo-loading. My food intake doubled in the week before the big race. #CTFU. I felt amazing and started dropping weight. I should have eaten much more the past four months.",{"type":23,"tag":24,"props":170,"children":171},{},[172],{"type":23,"tag":34,"props":173,"children":175},{"alt":158,"loading":37,"provider":38,"sizes":39,"src":174,"width":41},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4p4xky34q3vxlhfcgfg6.jpg",[],{"type":23,"tag":64,"props":177,"children":179},{"id":178},"d-day",[180],{"type":28,"value":181},"D-DAY",{"type":23,"tag":24,"props":183,"children":184},{},[185],{"type":28,"value":186},"I was so nervous I hardly even looked at the enormous amount of runners around me. I was standing on the Champs-Elysees with 50.000 other athletes. This was going to be the most epic challenge of my life.",{"type":23,"tag":24,"props":188,"children":189},{},[190],{"type":23,"tag":34,"props":191,"children":193},{"alt":181,"loading":37,"provider":38,"sizes":39,"src":192,"width":41},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qsgkyqt7mudojkqok6z.jpg",[],{"type":23,"tag":24,"props":195,"children":196},{},[197,199,208],{"type":28,"value":198},"The first bit felt like heaven. Especially because my mate ",{"type":23,"tag":200,"props":201,"children":205},"a",{"href":202,"rel":203},"https://www.facebook.com/chrisfinch",[204],"nofollow",[206],{"type":28,"value":207},"Chris",{"type":28,"value":209}," had just given me an amazing pep-talk over the phone. The Champs Elysees was mine and mine alone. Turns out I clocked the first kilometre at a 6:12 pace. Slow as fuck but a nice start to a long day. After that I slowly picked up the pace to a nice average between 5:25 and 5:35.",{"type":23,"tag":24,"props":211,"children":212},{},[213,215,222],{"type":28,"value":214},"Around the 7km point my awesome friend ",{"type":23,"tag":200,"props":216,"children":219},{"href":217,"rel":218},"https://www.instagram.com/henrike.theda.klug/",[204],[220],{"type":28,"value":221},"Henrike",{"type":28,"value":223}," spotted me from the sidelines and joined me for about 1.5km. We picked up the pace and race had properly started.",{"type":23,"tag":24,"props":225,"children":226},{},[227],{"type":28,"value":228},"It was super warm so I drank water every chance I got. My training had been during winter time so I was used to running with a maximum temperature of 10 degrees celcius. Even though it was warm I ran a great half marathon (for me at least, 01:52:34).",{"type":23,"tag":24,"props":230,"children":231},{},[232],{"type":28,"value":233},"The heat had silently sneaked up on me and at kilometre 22 the wall hit me like a hammer.",{"type":23,"tag":64,"props":235,"children":237},{"id":236},"the-wall",[238],{"type":28,"value":239},"The Wall",{"type":23,"tag":24,"props":241,"children":242},{},[243],{"type":28,"value":244},"The wall is really the biatch people say she is. I could not even put one foot in front of the other anymore. It took me half an hour to stumble to the next food station. It took 35 minutes to run 3km. I had some water, a sugar cube, a GU gel and a slice of mandarin. Obviously this was way too much so I felt sick for the next 5km. My brain was telling me to stop but I just couldn’t let go.",{"type":23,"tag":24,"props":246,"children":247},{},[248],{"type":28,"value":249},"In the following kilometres it didn’t get any better. I managed to find a happy medium in between running and walking. My nike+ app was all over the place and wasn’t accurate at all anymore. At one point I just turned it off and upped my Spotify volume. The next song was by Motörhead and I felt my heart skip a beat. The race was back on.For 2km.After that I went back to my previous state.",{"type":23,"tag":24,"props":251,"children":252},{},[253],{"type":28,"value":254},"During the five months I trained my wife had always been there for me. She gave me tips and picked me back up when I had hit a low point. When I saw her at kilometre 30 I couldn’t be happier. I gave her a quick kiss and a smile and I was on my way again.",{"type":23,"tag":24,"props":256,"children":257},{},[258,260,267],{"type":28,"value":259},"Just before hitting the Bois de Boulogne I became captain slow. I was having a real rough patch when I heard people shout my name. These people were ",{"type":23,"tag":200,"props":261,"children":264},{"href":262,"rel":263},"https://www.facebook.com/photo.php?fbid=10153775712979392&set=a.10151354689589392&type=1&theater",[204],[265],{"type":28,"value":266},"Marie and her son Adrian.",{"type":28,"value":268}," It’s great to have the support of your friends. It made me start running again. As it turns out, my wife had been sending loads of photo’s to my family back in Amsterdam. They had been following my every move.",{"type":23,"tag":64,"props":270,"children":272},{"id":271},"bois-de-boulogne",[273],{"type":28,"value":274},"Bois de Boulogne",{"type":23,"tag":24,"props":276,"children":277},{},[278],{"type":28,"value":279},"Bois de Boulogne was truly intense. They call it “the march of the death” and rightfully so. It starts at kilometre 35, there are hardly any supporters and it’s mostly uphill.",{"type":23,"tag":24,"props":281,"children":282},{},[283],{"type":28,"value":284},"I did the “pain shuffle” for the last 7km. The pain shuffle means that you can’t really bent your legs anymore but you still run. In my case, stumbling without falling. I ran from km sign to km sign without even hearing my music.",{"type":23,"tag":24,"props":286,"children":287},{},[288],{"type":28,"value":289},"When I saw the 40km sign I decided to not walk anymore and I did whatever it took to make that happen. At kilometre 41 I noticed that a lot of the faster runners were coming back to show us their medals and cheer us on. There was an amazing feeling of companionship in the pack of runners.",{"type":23,"tag":24,"props":291,"children":292},{},[293],{"type":28,"value":294},"At kilometre 42 I saw the finish AND my wife at the same time. It was finally over. I didn’t even bother to sprint.",{"type":23,"tag":24,"props":296,"children":297},{},[298],{"type":28,"value":299},"It took me four hours and forty six minutes. A total pain train. While riding home on the metro I felt a little shit because I walked so much. Should I have gone deeper? But while writing this piece, pride is taking over. I actually did this. My first marathon in the heat in under five hours. #putain.",{"type":23,"tag":24,"props":301,"children":302},{},[303],{"type":23,"tag":34,"props":304,"children":307},{"alt":305,"loading":37,"provider":38,"sizes":39,"src":306,"width":41},"finisher","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdxzyzf1wztrl220nwa4.jpg",[],{"type":23,"tag":64,"props":309,"children":311},{"id":310},"some-numbers",[312],{"type":28,"value":313},"Some Numbers",{"type":23,"tag":315,"props":316,"children":317},"ul",{},[318,324,329,334,339,344],{"type":23,"tag":319,"props":320,"children":321},"li",{},[322],{"type":28,"value":323},"I ran 615.14km over 67 runs with an average pace of 05:42",{"type":23,"tag":319,"props":325,"children":326},{},[327],{"type":28,"value":328},"My average distance was 9.18km per run",{"type":23,"tag":319,"props":330,"children":331},{},[332],{"type":28,"value":333},"I went from 95 to 86.7 kilos (and lost all gains)",{"type":23,"tag":319,"props":335,"children":336},{},[337],{"type":28,"value":338},"I slept 7h 50m a night on average",{"type":23,"tag":319,"props":340,"children":341},{},[342],{"type":28,"value":343},"I ate 1840kcal a day on average (probably not enough)",{"type":23,"tag":319,"props":345,"children":346},{},[347],{"type":28,"value":348},"I took 12609 steps a day on average",{"title":7,"searchDepth":350,"depth":350,"links":351},2,[352,354,355,356,357,358,359,360],{"id":66,"depth":353,"text":69},3,{"id":94,"depth":353,"text":97},{"id":127,"depth":353,"text":130},{"id":155,"depth":353,"text":158},{"id":178,"depth":353,"text":181},{"id":236,"depth":353,"text":239},{"id":271,"depth":353,"text":274},{"id":310,"depth":353,"text":313},"markdown","content:4.writing:the-2015-paris-maratho.md","content","4.writing/the-2015-paris-maratho.md","md",[367,370,1162,1237,1473,1476,1479],{"title":368,"_path":369},"About","/about",{"title":371,"_path":372,"children":373},"videos","/videos",[374,393,412,458,459,511,614,637,659,987],{"title":375,"_path":376,"children":377},"Alive And Kicking","/videos/alive-and-kicking",[378,381,384,387,390],{"title":379,"_path":380},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":382,"_path":383},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":385,"_path":386},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":388,"_path":389},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":391,"_path":392},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":394,"_path":395,"children":396},"Headless Creator","/videos/headless-creator",[397,400,403,406,409],{"title":398,"_path":399},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":401,"_path":402},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":404,"_path":405},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":407,"_path":408},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":410,"_path":411},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":413,"_path":414,"children":415},"Hygraph","/videos/hygraph",[416,419,422,425,428,431,434,437,440,443,446,449,452,455],{"title":417,"_path":418},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":420,"_path":421},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":423,"_path":424},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":426,"_path":427},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":429,"_path":430},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":432,"_path":433},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":435,"_path":436},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":438,"_path":439},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":441,"_path":442},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":444,"_path":445},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":447,"_path":448},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":450,"_path":451},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":453,"_path":454},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":456,"_path":457},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":371,"_path":372},{"title":460,"_path":461,"children":462},"Live Hygraph","/videos/live-hygraph",[463,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508],{"title":464,"_path":465},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":467,"_path":468},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":470,"_path":471},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":473,"_path":474},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":476,"_path":477},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":479,"_path":480},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":482,"_path":483},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":485,"_path":486},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":488,"_path":489},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":491,"_path":492},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":494,"_path":495},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":497,"_path":498},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":500,"_path":501},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":503,"_path":504},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":506,"_path":507},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":509,"_path":510},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":512,"_path":513,"children":514},"Live Uniform","/videos/live-uniform",[515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611],{"title":516,"_path":517},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":519,"_path":520},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":522,"_path":523},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":525,"_path":526},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":528,"_path":529},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":531,"_path":532},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":534,"_path":535},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":537,"_path":538},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":540,"_path":541},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":543,"_path":544},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":546,"_path":547},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":549,"_path":550},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":552,"_path":553},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":555,"_path":556},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":558,"_path":559},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":561,"_path":562},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":564,"_path":565},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":567,"_path":568},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":570,"_path":571},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":573,"_path":574},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":576,"_path":577},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":579,"_path":580},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":582,"_path":583},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":585,"_path":586},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":588,"_path":589},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":591,"_path":592},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":594,"_path":595},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":597,"_path":598},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":600,"_path":601},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":603,"_path":604},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":606,"_path":607},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":609,"_path":610},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":612,"_path":613},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":615,"_path":616,"children":617},"Misc Streams","/videos/misc-streams",[618,621,624,627,629,631,634],{"title":619,"_path":620},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":622,"_path":623},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":625,"_path":626},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":609,"_path":628},"/videos/misc-streams/003-jvgiaotcerq",{"title":600,"_path":630},"/videos/misc-streams/004-ekut1koa2n8",{"title":632,"_path":633},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":635,"_path":636},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":638,"_path":639,"children":640},"Mp","/videos/mp",[641,644,647,650,653,656],{"title":642,"_path":643},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":645,"_path":646},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":648,"_path":649},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":651,"_path":652},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":654,"_path":655},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":657,"_path":658},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":660,"_path":661,"children":662},"Tim","/videos/tim",[663,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,715,717,720,723,726,729,732,735,738,741,744,747,750,753,756,759,762,765,768,771,774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984],{"title":382,"_path":664},"/videos/tim/000-mvq-_s20ndk",{"title":666,"_path":667},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":669,"_path":670},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":672,"_path":673},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":675,"_path":676},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":678,"_path":679},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":681,"_path":682},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":684,"_path":685},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":687,"_path":688},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":690,"_path":691},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":693,"_path":694},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":696,"_path":697},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":699,"_path":700},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":702,"_path":703},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":705,"_path":706},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":708,"_path":709},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":711,"_path":712},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":385,"_path":714},"/videos/tim/017-m0mrligs6i0",{"title":379,"_path":716},"/videos/tim/018-hhpitreyobi",{"title":718,"_path":719},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":721,"_path":722},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":724,"_path":725},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":727,"_path":728},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":730,"_path":731},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":733,"_path":734},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":736,"_path":737},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":739,"_path":740},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":742,"_path":743},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":745,"_path":746},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":748,"_path":749},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":751,"_path":752},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":754,"_path":755},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":757,"_path":758},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":760,"_path":761},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":763,"_path":764},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":766,"_path":767},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":769,"_path":770},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":772,"_path":773},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":775,"_path":776},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":778,"_path":779},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":781,"_path":782},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":784,"_path":785},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":787,"_path":788},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":790,"_path":791},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":793,"_path":794},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":796,"_path":797},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":799,"_path":800},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":802,"_path":803},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":805,"_path":806},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":808,"_path":809},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":811,"_path":812},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":814,"_path":815},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":817,"_path":818},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":820,"_path":821},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":823,"_path":824},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":826,"_path":827},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":829,"_path":830},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":832,"_path":833},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":835,"_path":836},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":838,"_path":839},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":841,"_path":842},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":844,"_path":845},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":847,"_path":848},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":850,"_path":851},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":853,"_path":854},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":856,"_path":857},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":859,"_path":860},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":862,"_path":863},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":865,"_path":866},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":868,"_path":869},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":871,"_path":872},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":874,"_path":875},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":877,"_path":878},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":880,"_path":881},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":883,"_path":884},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":886,"_path":887},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":889,"_path":890},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":892,"_path":893},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":895,"_path":896},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":898,"_path":899},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":901,"_path":902},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":904,"_path":905},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":907,"_path":908},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":910,"_path":911},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":913,"_path":914},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":916,"_path":917},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":919,"_path":920},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":922,"_path":923},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":925,"_path":926},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":928,"_path":929},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":931,"_path":932},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":934,"_path":935},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":937,"_path":938},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":940,"_path":941},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":943,"_path":944},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":946,"_path":947},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":949,"_path":950},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":952,"_path":953},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":955,"_path":956},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":958,"_path":959},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":961,"_path":962},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":964,"_path":965},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":967,"_path":968},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":970,"_path":971},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":973,"_path":974},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":976,"_path":977},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":979,"_path":980},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":982,"_path":983},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":985,"_path":986},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":988,"_path":989,"children":990},"Uniform","/videos/uniform",[991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159],{"title":992,"_path":993},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":995,"_path":996},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":998,"_path":999},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":1001,"_path":1002},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":1004,"_path":1005},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":1007,"_path":1008},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":1010,"_path":1011},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1013,"_path":1014},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1016,"_path":1017},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1019,"_path":1020},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1022,"_path":1023},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1025,"_path":1026},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1028,"_path":1029},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1031,"_path":1032},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1034,"_path":1035},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1037,"_path":1038},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1040,"_path":1041},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1043,"_path":1044},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1046,"_path":1047},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1049,"_path":1050},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1052,"_path":1053},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1055,"_path":1056},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1058,"_path":1059},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1061,"_path":1062},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1064,"_path":1065},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1067,"_path":1068},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1070,"_path":1071},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1073,"_path":1074},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1076,"_path":1077},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1079,"_path":1080},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1082,"_path":1083},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1085,"_path":1086},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1088,"_path":1089},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1091,"_path":1092},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1094,"_path":1095},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1097,"_path":1098},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1100,"_path":1101},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1103,"_path":1104},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1106,"_path":1107},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1109,"_path":1110},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1112,"_path":1113},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1115,"_path":1116},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1118,"_path":1119},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1121,"_path":1122},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1124,"_path":1125},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1127,"_path":1128},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1130,"_path":1131},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1133,"_path":1134},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1136,"_path":1137},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1139,"_path":1140},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1142,"_path":1143},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1145,"_path":1146},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1148,"_path":1149},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1151,"_path":1152},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1154,"_path":1155},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1157,"_path":1158},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1160,"_path":1161},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1163,"_path":1164,"children":1165},"Writing","/writing",[1166,1169,1172,1175,1178,1181,1182,1185,1188,1191,1194,1197,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234],{"title":1167,"_path":1168},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1170,"_path":1171},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1173,"_path":1174},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1176,"_path":1177},"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":1179,"_path":1180},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1163,"_path":1164},{"title":1183,"_path":1184},"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":1186,"_path":1187},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1189,"_path":1190},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1192,"_path":1193},"My Fitness Story","/writing/my-fitness-story",{"title":1195,"_path":1196},"New job alert!","/writing/new-job-alert",{"title":8,"_path":4},{"title":1199,"_path":1200},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1202,"_path":1203},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1205,"_path":1206},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1208,"_path":1209},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1211,"_path":1212},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1214,"_path":1215},"The MACH monolith","/writing/the-mach-monolith",{"title":1217,"_path":1218},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1220,"_path":1221},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1223,"_path":1224},"This is headless 2.0","/writing/this-is-headless-20",{"title":1226,"_path":1227},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1229,"_path":1230},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1232,"_path":1233},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1235,"_path":1236},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1238,"_path":1239,"children":1240},"Speaking","/speaking",[1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283,1286,1289,1292,1295,1298,1301,1304,1307,1310,1313,1316,1319,1322,1325,1328,1331,1334,1337,1340,1343,1346,1349,1352,1355,1358,1361,1364,1367,1370,1373,1376,1379,1382,1385,1388,1391,1394,1397,1400,1403,1406,1409,1412,1415,1418,1421,1424,1427,1430,1433,1436,1439,1442,1445,1448,1451,1454,1457,1460,1463,1466,1469,1472],{"title":1242,"_path":1243},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1245,"_path":1246},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1248,"_path":1249},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1251,"_path":1252},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1254,"_path":1255},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1257,"_path":1258},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1260,"_path":1261},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1263,"_path":1264},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1266,"_path":1267},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1269,"_path":1270},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1272,"_path":1273},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1275,"_path":1276},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1278,"_path":1279},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1281,"_path":1282},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1284,"_path":1285},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1287,"_path":1288},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1290,"_path":1291},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1293,"_path":1294},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1296,"_path":1297},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1299,"_path":1300},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1302,"_path":1303},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1305,"_path":1306},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1308,"_path":1309},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1311,"_path":1312},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1314,"_path":1315},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1317,"_path":1318},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1320,"_path":1321},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1323,"_path":1324},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1326,"_path":1327},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1329,"_path":1330},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1332,"_path":1333},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1335,"_path":1336},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1338,"_path":1339},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1341,"_path":1342},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1344,"_path":1345},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1347,"_path":1348},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1350,"_path":1351},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1353,"_path":1354},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1356,"_path":1357},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1359,"_path":1360},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1362,"_path":1363},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1365,"_path":1366},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1368,"_path":1369},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1371,"_path":1372},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1374,"_path":1375},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1377,"_path":1378},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1380,"_path":1381},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1383,"_path":1384},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1386,"_path":1387},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1389,"_path":1390},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1392,"_path":1393},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1395,"_path":1396},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1398,"_path":1399},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1401,"_path":1402},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1404,"_path":1405},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1407,"_path":1408},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1410,"_path":1411},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1413,"_path":1414},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1416,"_path":1417},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1419,"_path":1420},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1422,"_path":1423},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1425,"_path":1426},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1428,"_path":1429},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1431,"_path":1432},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1434,"_path":1435},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1437,"_path":1438},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1440,"_path":1441},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1443,"_path":1444},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1446,"_path":1447},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1449,"_path":1450},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1452,"_path":1453},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1455,"_path":1456},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1458,"_path":1459},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1461,"_path":1462},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1464,"_path":1465},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1467,"_path":1468},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1470,"_path":1471},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1238,"_path":1239},{"title":1474,"_path":1475},"live streams","/livestreams",{"title":1477,"_path":1478},"press kit","/presskit",{"title":1480,"_path":1481},"alive and kicking","/alive-and-kicking",1718484379601] \ No newline at end of file diff --git a/writing/the-2015-paris-maratho/index.html b/writing/the-2015-paris-maratho/index.html deleted file mode 100644 index 9997060c..00000000 --- a/writing/the-2015-paris-maratho/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - -The 2015 Paris marathon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The 2015 Paris marathon

Mar 18, 2023 at https://dev.to/timbenniks/the-2015-paris-marathon-i0l

Exactly one year ago, when we had just moved to Paris, the marathon passed by our apartment in Rue Saint-Antoine. Seeing all these people swooshing by impressed me so much that I signed-up for the 2015 marathon on the spot. The goal was set, the easy part was over.

Tim Running

I gave myself five months to conquer the beast. 42.195 kilometres. After running on and off for a couple of years it was time to get serious. As I work for AKQA I naturally chose to train with the Nike+ app and all the related products.

Nike’s marathon training program was brutal. Even at the rookie level it made me run five times a week from the get-go. After living the good life for eight months in Paris both my endurance and cardio vascular strength were shit. It’s safe to say I was happy that the distances were short for the first couple of weeks.

I didn’t have any specific goals in mind, just general stuff like: “I want to get a bit lighter so the running gets easier” or “I’d love to set a new half marathon personal best at one point”. I trusted the rigorous training schedule would get me there eventually.

It didn’t. The training was so intense that I had skip workouts and I had to start experimenting with food to figure out how I could get my legs ready for the next run. My body could just not cope with the sheer amount of kilometres I had to run each week.

January

After two months of pain I had finally found a balance. Turns out that eating super low fat and high carb was the best for my recovery. I was basically eating according to the 80/10/10 principle. 80% carbs, 10% fats, 10% protein. I’m not preaching this way of eating, it was just great for me.

January

To achieve eating this macro ratio I had to cut out all animal products. If I ate too much fat on a rest day, like when you go out to dinner and you don’t want to be the asshole who can’t eat anything, I would have heavy legs the next day.

I started eating copious amounts of fruit, rice, pasta, quinoa and veggies. My brain started functioning ten times better and I didn’t even think about coffee anymore. January was awesome. I ran pain free and the long distances started to become enjoyable. Good times. I ran 147km that month. This might not seem a lot to seasoned runners but I came from ~50km a month. I started a new chapter in my running career.

February

We went on a ski trip in the beginning of February. I was an amazing holiday with loads of skiing, good food and laughs. I did some workouts in the gym and a proper mountain walk. I really hoped I hadn’t lost my running gains.

February

The first Monday back I had a nasty cough but decided to at least try my fast 8km run I had planned for that day. Bad decision. Over the course of the week I developed a bronchitis and both the doctor and my wife (the boss and a bad ass physiotherapist) forbade me to run the following two weeks.

I slept a lot and kept on eating well and as soon as the illness lifted I started running short distances again. I cursed my way through the first week. Even though the running hurt, my pace was still fast.

In February I ran the awesome amount of 37.98km over five runs. The last of the five was the most painful 15km run of my life. We’d strolled around “Le Salon d’Agriculture” for three hours before. We tasted wines and tried cheeses. I had forgotten to drink any water. Rookie mistake. Lactic acid legs for days!

March

Back to awesome. I ran 181km in 4 weeks. An absolute record month in my book. I had an amazing run in Amsterdam on which my whole family followed me by bike. I also ran personal bests on the 5km, 10km, 15km and 21km. I decided to drop the Nike+ program as I had missed too much the month before. This was a smart move. The Nike+ program would have burnt me out.

I had been in training for 4 months by now and I had been sick the month before. The exhaustion was setting in a bit. I didn’t particularly feel it in my legs, but I started having problems staying focused on evening runs. One time I had to jump aside while a policeman was arresting someone. I flipped my ankle and had to walk home for an hour.

March

I felt stupid for being distracted. Even though I had super light shoes without much cushioning I stopped being in touch with the ground I was running on. Sounds like I’m a hippy aye? It’s a runners thing.

April

Only two weeks left. I did a 27km run in a very busy, rainy and hilly Paris. After that I was so exhausted that I decided to start my tapering period a week early. I thought I’d hurt my feet too much and suddenly got very nervous. My marathon veteran colleagues told me this is normal and I should just chill out.

I only ran a handful of runs up until the big day. The thing I liked most about the tapering period was the carbo-loading. My food intake doubled in the week before the big race. #CTFU. I felt amazing and started dropping weight. I should have eaten much more the past four months.

April

D-DAY

I was so nervous I hardly even looked at the enormous amount of runners around me. I was standing on the Champs-Elysees with 50.000 other athletes. This was going to be the most epic challenge of my life.

D-DAY

The first bit felt like heaven. Especially because my mate Chris had just given me an amazing pep-talk over the phone. The Champs Elysees was mine and mine alone. Turns out I clocked the first kilometre at a 6:12 pace. Slow as fuck but a nice start to a long day. After that I slowly picked up the pace to a nice average between 5:25 and 5:35.

Around the 7km point my awesome friend Henrike spotted me from the sidelines and joined me for about 1.5km. We picked up the pace and race had properly started.

It was super warm so I drank water every chance I got. My training had been during winter time so I was used to running with a maximum temperature of 10 degrees celcius. Even though it was warm I ran a great half marathon (for me at least, 01:52:34).

The heat had silently sneaked up on me and at kilometre 22 the wall hit me like a hammer.

The Wall

The wall is really the biatch people say she is. I could not even put one foot in front of the other anymore. It took me half an hour to stumble to the next food station. It took 35 minutes to run 3km. I had some water, a sugar cube, a GU gel and a slice of mandarin. Obviously this was way too much so I felt sick for the next 5km. My brain was telling me to stop but I just couldn’t let go.

In the following kilometres it didn’t get any better. I managed to find a happy medium in between running and walking. My nike+ app was all over the place and wasn’t accurate at all anymore. At one point I just turned it off and upped my Spotify volume. The next song was by Motörhead and I felt my heart skip a beat. The race was back on.For 2km.After that I went back to my previous state.

During the five months I trained my wife had always been there for me. She gave me tips and picked me back up when I had hit a low point. When I saw her at kilometre 30 I couldn’t be happier. I gave her a quick kiss and a smile and I was on my way again.

Just before hitting the Bois de Boulogne I became captain slow. I was having a real rough patch when I heard people shout my name. These people were Marie and her son Adrian. It’s great to have the support of your friends. It made me start running again. As it turns out, my wife had been sending loads of photo’s to my family back in Amsterdam. They had been following my every move.

Bois de Boulogne

Bois de Boulogne was truly intense. They call it “the march of the death” and rightfully so. It starts at kilometre 35, there are hardly any supporters and it’s mostly uphill.

I did the “pain shuffle” for the last 7km. The pain shuffle means that you can’t really bent your legs anymore but you still run. In my case, stumbling without falling. I ran from km sign to km sign without even hearing my music.

When I saw the 40km sign I decided to not walk anymore and I did whatever it took to make that happen. At kilometre 41 I noticed that a lot of the faster runners were coming back to show us their medals and cheer us on. There was an amazing feeling of companionship in the pack of runners.

At kilometre 42 I saw the finish AND my wife at the same time. It was finally over. I didn’t even bother to sprint.

It took me four hours and forty six minutes. A total pain train. While riding home on the metro I felt a little shit because I walked so much. Should I have gone deeper? But while writing this piece, pride is taking over. I actually did this. My first marathon in the heat in under five hours. #putain.

finisher

Some Numbers

  • I ran 615.14km over 67 runs with an average pace of 05:42
  • My average distance was 9.18km per run
  • I went from 95 to 86.7 kilos (and lost all gains)
  • I slept 7h 50m a night on average
  • I ate 1840kcal a day on average (probably not enough)
  • I took 12609 steps a day on average
- \ No newline at end of file diff --git a/writing/the-content-graph-is-the-future/_payload.json b/writing/the-content-graph-is-the-future/_payload.json index 54bb6c63..520a8a20 100644 --- a/writing/the-content-graph-is-the-future/_payload.json +++ b/writing/the-content-graph-is-the-future/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1376},["Reactive",2],{"content-query-kTBzJVOOpl":3,"content-navigation-8C37fagqQL":260},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":16,"body":17,"_type":255,"_id":256,"_source":257,"_file":258,"_extension":259},"/writing/the-content-graph-is-the-future","writing",false,"","The content Graph is the future","Content management is as essential as it is complex, especially at scale. As brands grow, they often...",1683758,"the-content-graph-is-the-future","2023-12-05T10:40:00Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ilcbgm74yygk14s4g7.png","https://hygraph.com/blog/the-content-graph-is-the-future",[],22300,{"type":18,"children":19,"toc":244},"root",[20,28,35,40,45,50,70,76,81,95,101,106,111,116,121,126,134,140,145,170,176,181,187,192,197,203,208,213,218,223,228,233,239],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25],{"type":26,"value":27},"text","Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph.",{"type":21,"tag":29,"props":30,"children":32},"h2",{"id":31},"the-emergence-of-new-buzzwords-best-of-breed-and-composable",[33],{"type":26,"value":34},"The emergence of new buzzwords: best-of-breed and composable",{"type":21,"tag":22,"props":36,"children":37},{},[38],{"type":26,"value":39},"Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability.",{"type":21,"tag":22,"props":41,"children":42},{},[43],{"type":26,"value":44},"A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs.",{"type":21,"tag":22,"props":46,"children":47},{},[48],{"type":26,"value":49},"Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements.",{"type":21,"tag":51,"props":52,"children":53},"blockquote",{},[54],{"type":21,"tag":22,"props":55,"children":56},{},[57,59,68],{"type":26,"value":58},"If you want to learn more details about industry buzzwords, check out this ",{"type":21,"tag":60,"props":61,"children":65},"a",{"href":62,"rel":63},"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords",[64],"nofollow",[66],{"type":26,"value":67},"blog post",{"type":26,"value":69},".",{"type":21,"tag":29,"props":71,"children":73},{"id":72},"its-not-all-sunshine-and-rainbows",[74],{"type":26,"value":75},"It’s not all sunshine and rainbows",{"type":21,"tag":22,"props":77,"children":78},{},[79],{"type":26,"value":80},"Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous.",{"type":21,"tag":22,"props":82,"children":83},{},[84],{"type":21,"tag":85,"props":86,"children":94},"img",{"alt":87,"height":88,"loading":89,"provider":90,"sizes":91,"src":92,"width":93},"Composable challenges",720,"lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgy63rwzc7dm5mnmk9wl.png",1280,[],{"type":21,"tag":29,"props":96,"children":98},{"id":97},"introducing-the-content-graph",[99],{"type":26,"value":100},"Introducing the content graph",{"type":21,"tag":22,"props":102,"children":103},{},[104],{"type":26,"value":105},"The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub.",{"type":21,"tag":22,"props":107,"children":108},{},[109],{"type":26,"value":110},"The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources.",{"type":21,"tag":22,"props":112,"children":113},{},[114],{"type":26,"value":115},"In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything.",{"type":21,"tag":22,"props":117,"children":118},{},[119],{"type":26,"value":120},"An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible.",{"type":21,"tag":22,"props":122,"children":123},{},[124],{"type":26,"value":125},"To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities.",{"type":21,"tag":22,"props":127,"children":128},{},[129],{"type":21,"tag":85,"props":130,"children":133},{"alt":131,"height":88,"loading":89,"provider":90,"sizes":91,"src":132,"width":93},"The Contwnt Graph","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qngsih12lys9s6yww0j.png",[],{"type":21,"tag":29,"props":135,"children":137},{"id":136},"the-benefits",[138],{"type":26,"value":139},"The benefits",{"type":21,"tag":22,"props":141,"children":142},{},[143],{"type":26,"value":144},"Use these one-liners when you talk about this subject to your boss.",{"type":21,"tag":146,"props":147,"children":148},"ul",{},[149,155,160,165],{"type":21,"tag":150,"props":151,"children":152},"li",{},[153],{"type":26,"value":154},"The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas.",{"type":21,"tag":150,"props":156,"children":157},{},[158],{"type":26,"value":159},"With the content graph, you query only what you need from any source and in the same unified way.",{"type":21,"tag":150,"props":161,"children":162},{},[163],{"type":26,"value":164},"The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all.",{"type":21,"tag":150,"props":166,"children":167},{},[168],{"type":26,"value":169},"The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple.",{"type":21,"tag":29,"props":171,"children":173},{"id":172},"challenges-and-considerations",[174],{"type":26,"value":175},"Challenges and considerations",{"type":21,"tag":22,"props":177,"children":178},{},[179],{"type":26,"value":180},"This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph.",{"type":21,"tag":29,"props":182,"children":184},{"id":183},"the-tech-behind-the-content-graph",[185],{"type":26,"value":186},"The tech behind the content graph",{"type":21,"tag":22,"props":188,"children":189},{},[190],{"type":26,"value":191},"You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL.",{"type":21,"tag":22,"props":193,"children":194},{},[195],{"type":26,"value":196},"An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it.",{"type":21,"tag":29,"props":198,"children":200},{"id":199},"a-real-life-use-case-for-the-content-graph",[201],{"type":26,"value":202},"A real-life use case for the content graph",{"type":21,"tag":22,"props":204,"children":205},{},[206],{"type":26,"value":207},"An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands.",{"type":21,"tag":22,"props":209,"children":210},{},[211],{"type":26,"value":212},"Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching.",{"type":21,"tag":22,"props":214,"children":215},{},[216],{"type":26,"value":217},"Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use.",{"type":21,"tag":22,"props":219,"children":220},{},[221],{"type":26,"value":222},"Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine.",{"type":21,"tag":22,"props":224,"children":225},{},[226],{"type":26,"value":227},"The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change.",{"type":21,"tag":22,"props":229,"children":230},{},[231],{"type":26,"value":232},"One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly.",{"type":21,"tag":29,"props":234,"children":236},{"id":235},"conclusion",[237],{"type":26,"value":238},"Conclusion",{"type":21,"tag":22,"props":240,"children":241},{},[242],{"type":26,"value":243},"The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures.",{"title":7,"searchDepth":245,"depth":245,"links":246},2,[247,248,249,250,251,252,253,254],{"id":31,"depth":245,"text":34},{"id":72,"depth":245,"text":75},{"id":97,"depth":245,"text":100},{"id":136,"depth":245,"text":139},{"id":172,"depth":245,"text":175},{"id":183,"depth":245,"text":186},{"id":199,"depth":245,"text":202},{"id":235,"depth":245,"text":238},"markdown","content:4.writing:the-content-graph-is-the-future.md","content","4.writing/the-content-graph-is-the-future.md","md",[261,264,1056,1131,1367,1370,1373],{"title":262,"_path":263},"About","/about",{"title":265,"_path":266,"children":267},"videos","/videos",[268,287,306,352,353,405,508,531,553,881],{"title":269,"_path":270,"children":271},"Alive And Kicking","/videos/alive-and-kicking",[272,275,278,281,284],{"title":273,"_path":274},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":276,"_path":277},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":279,"_path":280},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":282,"_path":283},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":285,"_path":286},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":288,"_path":289,"children":290},"Headless Creator","/videos/headless-creator",[291,294,297,300,303],{"title":292,"_path":293},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":295,"_path":296},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":298,"_path":299},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":301,"_path":302},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":304,"_path":305},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":307,"_path":308,"children":309},"Hygraph","/videos/hygraph",[310,313,316,319,322,325,328,331,334,337,340,343,346,349],{"title":311,"_path":312},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":314,"_path":315},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":317,"_path":318},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":320,"_path":321},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":323,"_path":324},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":326,"_path":327},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":329,"_path":330},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":332,"_path":333},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":335,"_path":336},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":338,"_path":339},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":341,"_path":342},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":344,"_path":345},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":347,"_path":348},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":350,"_path":351},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":265,"_path":266},{"title":354,"_path":355,"children":356},"Live Hygraph","/videos/live-hygraph",[357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402],{"title":358,"_path":359},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":361,"_path":362},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":364,"_path":365},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":367,"_path":368},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":370,"_path":371},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":373,"_path":374},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":376,"_path":377},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":379,"_path":380},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":382,"_path":383},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":385,"_path":386},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":388,"_path":389},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":391,"_path":392},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":394,"_path":395},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":397,"_path":398},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":400,"_path":401},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":403,"_path":404},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":406,"_path":407,"children":408},"Live Uniform","/videos/live-uniform",[409,412,415,418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505],{"title":410,"_path":411},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":413,"_path":414},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":416,"_path":417},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":419,"_path":420},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":422,"_path":423},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":425,"_path":426},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":428,"_path":429},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":431,"_path":432},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":434,"_path":435},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":437,"_path":438},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":440,"_path":441},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":443,"_path":444},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":446,"_path":447},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":449,"_path":450},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":452,"_path":453},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":455,"_path":456},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":458,"_path":459},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":461,"_path":462},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":464,"_path":465},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":467,"_path":468},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":470,"_path":471},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":473,"_path":474},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":476,"_path":477},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":479,"_path":480},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":482,"_path":483},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":485,"_path":486},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":488,"_path":489},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":491,"_path":492},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":494,"_path":495},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":497,"_path":498},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":500,"_path":501},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":503,"_path":504},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":506,"_path":507},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":509,"_path":510,"children":511},"Misc Streams","/videos/misc-streams",[512,515,518,521,523,525,528],{"title":513,"_path":514},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":516,"_path":517},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":519,"_path":520},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":503,"_path":522},"/videos/misc-streams/003-jvgiaotcerq",{"title":494,"_path":524},"/videos/misc-streams/004-ekut1koa2n8",{"title":526,"_path":527},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":529,"_path":530},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":532,"_path":533,"children":534},"Mp","/videos/mp",[535,538,541,544,547,550],{"title":536,"_path":537},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":539,"_path":540},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":542,"_path":543},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":545,"_path":546},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":548,"_path":549},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":551,"_path":552},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":554,"_path":555,"children":556},"Tim","/videos/tim",[557,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,609,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878],{"title":276,"_path":558},"/videos/tim/000-mvq-_s20ndk",{"title":560,"_path":561},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":563,"_path":564},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":566,"_path":567},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":569,"_path":570},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":572,"_path":573},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":575,"_path":576},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":578,"_path":579},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":581,"_path":582},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":584,"_path":585},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":587,"_path":588},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":590,"_path":591},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":593,"_path":594},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":596,"_path":597},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":599,"_path":600},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":602,"_path":603},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":605,"_path":606},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":279,"_path":608},"/videos/tim/017-m0mrligs6i0",{"title":273,"_path":610},"/videos/tim/018-hhpitreyobi",{"title":612,"_path":613},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":615,"_path":616},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":618,"_path":619},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":621,"_path":622},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":624,"_path":625},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":627,"_path":628},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":630,"_path":631},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":633,"_path":634},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":636,"_path":637},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":639,"_path":640},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":642,"_path":643},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":645,"_path":646},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":648,"_path":649},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":651,"_path":652},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":654,"_path":655},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":657,"_path":658},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":660,"_path":661},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":663,"_path":664},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":666,"_path":667},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":669,"_path":670},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":672,"_path":673},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":675,"_path":676},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":678,"_path":679},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":681,"_path":682},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":684,"_path":685},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":687,"_path":688},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":690,"_path":691},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":693,"_path":694},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":696,"_path":697},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":699,"_path":700},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":702,"_path":703},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":705,"_path":706},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":708,"_path":709},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":711,"_path":712},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":714,"_path":715},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":717,"_path":718},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":720,"_path":721},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":723,"_path":724},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":726,"_path":727},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":729,"_path":730},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":732,"_path":733},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":735,"_path":736},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":738,"_path":739},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":741,"_path":742},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":744,"_path":745},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":747,"_path":748},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":750,"_path":751},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":753,"_path":754},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":756,"_path":757},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":759,"_path":760},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":762,"_path":763},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":765,"_path":766},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":768,"_path":769},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":771,"_path":772},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":774,"_path":775},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":777,"_path":778},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":780,"_path":781},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":783,"_path":784},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":786,"_path":787},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":789,"_path":790},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":792,"_path":793},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":795,"_path":796},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":798,"_path":799},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":801,"_path":802},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":804,"_path":805},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":807,"_path":808},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":810,"_path":811},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":813,"_path":814},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":816,"_path":817},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":819,"_path":820},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":822,"_path":823},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":825,"_path":826},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":828,"_path":829},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":831,"_path":832},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":834,"_path":835},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":837,"_path":838},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":840,"_path":841},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":843,"_path":844},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":846,"_path":847},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":849,"_path":850},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":852,"_path":853},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":855,"_path":856},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":858,"_path":859},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":861,"_path":862},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":864,"_path":865},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":867,"_path":868},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":870,"_path":871},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":873,"_path":874},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":876,"_path":877},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":879,"_path":880},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":882,"_path":883,"children":884},"Uniform","/videos/uniform",[885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053],{"title":886,"_path":887},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":889,"_path":890},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":892,"_path":893},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":895,"_path":896},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":898,"_path":899},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":901,"_path":902},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":904,"_path":905},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":907,"_path":908},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":910,"_path":911},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":913,"_path":914},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":916,"_path":917},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":919,"_path":920},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":922,"_path":923},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":925,"_path":926},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":928,"_path":929},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":931,"_path":932},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":934,"_path":935},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":937,"_path":938},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":940,"_path":941},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":943,"_path":944},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":946,"_path":947},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":949,"_path":950},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":952,"_path":953},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":955,"_path":956},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":958,"_path":959},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":961,"_path":962},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":964,"_path":965},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":967,"_path":968},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":970,"_path":971},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":973,"_path":974},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":976,"_path":977},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":979,"_path":980},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":982,"_path":983},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":985,"_path":986},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":988,"_path":989},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":991,"_path":992},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":994,"_path":995},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":997,"_path":998},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1000,"_path":1001},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1003,"_path":1004},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1006,"_path":1007},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1009,"_path":1010},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1012,"_path":1013},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1015,"_path":1016},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1018,"_path":1019},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1021,"_path":1022},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1024,"_path":1025},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1027,"_path":1028},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1030,"_path":1031},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1033,"_path":1034},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1036,"_path":1037},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1039,"_path":1040},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1042,"_path":1043},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1045,"_path":1046},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1048,"_path":1049},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1051,"_path":1052},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1054,"_path":1055},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1057,"_path":1058,"children":1059},"Writing","/writing",[1060,1063,1066,1069,1072,1075,1076,1079,1082,1085,1088,1091,1094,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128],{"title":1061,"_path":1062},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1064,"_path":1065},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1067,"_path":1068},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1070,"_path":1071},"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":1073,"_path":1074},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1057,"_path":1058},{"title":1077,"_path":1078},"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":1080,"_path":1081},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1083,"_path":1084},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1086,"_path":1087},"My Fitness Story","/writing/my-fitness-story",{"title":1089,"_path":1090},"New job alert!","/writing/new-job-alert",{"title":1092,"_path":1093},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":8,"_path":4},{"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 lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1108,"_path":1109},"The MACH monolith","/writing/the-mach-monolith",{"title":1111,"_path":1112},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1114,"_path":1115},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1117,"_path":1118},"This is headless 2.0","/writing/this-is-headless-20",{"title":1120,"_path":1121},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1123,"_path":1124},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1126,"_path":1127},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1129,"_path":1130},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1132,"_path":1133,"children":1134},"Speaking","/speaking",[1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366],{"title":1136,"_path":1137},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1139,"_path":1140},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1142,"_path":1143},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1145,"_path":1146},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1148,"_path":1149},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1151,"_path":1152},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1154,"_path":1155},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1157,"_path":1158},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1160,"_path":1161},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1163,"_path":1164},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1166,"_path":1167},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1169,"_path":1170},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1172,"_path":1173},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1175,"_path":1176},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1178,"_path":1179},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1181,"_path":1182},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1184,"_path":1185},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1187,"_path":1188},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1190,"_path":1191},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1193,"_path":1194},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1196,"_path":1197},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1199,"_path":1200},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1202,"_path":1203},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1205,"_path":1206},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1208,"_path":1209},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1211,"_path":1212},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1214,"_path":1215},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1217,"_path":1218},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1220,"_path":1221},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1223,"_path":1224},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1226,"_path":1227},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1229,"_path":1230},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1232,"_path":1233},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1235,"_path":1236},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1238,"_path":1239},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1241,"_path":1242},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1244,"_path":1245},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1247,"_path":1248},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1250,"_path":1251},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1253,"_path":1254},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1256,"_path":1257},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1259,"_path":1260},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1262,"_path":1263},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1265,"_path":1266},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1268,"_path":1269},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1271,"_path":1272},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1274,"_path":1275},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1277,"_path":1278},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1280,"_path":1281},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1283,"_path":1284},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1286,"_path":1287},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1289,"_path":1290},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1292,"_path":1293},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1295,"_path":1296},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1298,"_path":1299},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1301,"_path":1302},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1304,"_path":1305},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1307,"_path":1308},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1310,"_path":1311},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1313,"_path":1314},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1316,"_path":1317},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1319,"_path":1320},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1322,"_path":1323},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1325,"_path":1326},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1328,"_path":1329},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1331,"_path":1332},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1334,"_path":1335},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1337,"_path":1338},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1340,"_path":1341},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1343,"_path":1344},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1346,"_path":1347},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1349,"_path":1350},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1352,"_path":1353},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1355,"_path":1356},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1358,"_path":1359},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1361,"_path":1362},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1364,"_path":1365},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1132,"_path":1133},{"title":1368,"_path":1369},"live streams","/livestreams",{"title":1371,"_path":1372},"press kit","/presskit",{"title":1374,"_path":1375},"alive and kicking","/alive-and-kicking",1718484379177] \ No newline at end of file +[{"data":1,"prerenderedAt":1376},["Reactive",2],{"content-query-kTBzJVOOpl":3,"content-navigation-8C37fagqQL":260},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":16,"body":17,"_type":255,"_id":256,"_source":257,"_file":258,"_extension":259},"/writing/the-content-graph-is-the-future","writing",false,"","The content Graph is the future","Content management is as essential as it is complex, especially at scale. As brands grow, they often...",1683758,"the-content-graph-is-the-future","2023-12-05T10:40:00Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ilcbgm74yygk14s4g7.png","https://hygraph.com/blog/the-content-graph-is-the-future",[],22300,{"type":18,"children":19,"toc":244},"root",[20,28,35,40,45,50,70,76,81,95,101,106,111,116,121,126,134,140,145,170,176,181,187,192,197,203,208,213,218,223,228,233,239],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25],{"type":26,"value":27},"text","Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph.",{"type":21,"tag":29,"props":30,"children":32},"h2",{"id":31},"the-emergence-of-new-buzzwords-best-of-breed-and-composable",[33],{"type":26,"value":34},"The emergence of new buzzwords: best-of-breed and composable",{"type":21,"tag":22,"props":36,"children":37},{},[38],{"type":26,"value":39},"Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability.",{"type":21,"tag":22,"props":41,"children":42},{},[43],{"type":26,"value":44},"A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs.",{"type":21,"tag":22,"props":46,"children":47},{},[48],{"type":26,"value":49},"Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements.",{"type":21,"tag":51,"props":52,"children":53},"blockquote",{},[54],{"type":21,"tag":22,"props":55,"children":56},{},[57,59,68],{"type":26,"value":58},"If you want to learn more details about industry buzzwords, check out this ",{"type":21,"tag":60,"props":61,"children":65},"a",{"href":62,"rel":63},"https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords",[64],"nofollow",[66],{"type":26,"value":67},"blog post",{"type":26,"value":69},".",{"type":21,"tag":29,"props":71,"children":73},{"id":72},"its-not-all-sunshine-and-rainbows",[74],{"type":26,"value":75},"It’s not all sunshine and rainbows",{"type":21,"tag":22,"props":77,"children":78},{},[79],{"type":26,"value":80},"Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous.",{"type":21,"tag":22,"props":82,"children":83},{},[84],{"type":21,"tag":85,"props":86,"children":94},"img",{"alt":87,"height":88,"loading":89,"provider":90,"sizes":91,"src":92,"width":93},"Composable challenges",720,"lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgy63rwzc7dm5mnmk9wl.png",1280,[],{"type":21,"tag":29,"props":96,"children":98},{"id":97},"introducing-the-content-graph",[99],{"type":26,"value":100},"Introducing the content graph",{"type":21,"tag":22,"props":102,"children":103},{},[104],{"type":26,"value":105},"The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub.",{"type":21,"tag":22,"props":107,"children":108},{},[109],{"type":26,"value":110},"The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources.",{"type":21,"tag":22,"props":112,"children":113},{},[114],{"type":26,"value":115},"In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything.",{"type":21,"tag":22,"props":117,"children":118},{},[119],{"type":26,"value":120},"An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible.",{"type":21,"tag":22,"props":122,"children":123},{},[124],{"type":26,"value":125},"To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities.",{"type":21,"tag":22,"props":127,"children":128},{},[129],{"type":21,"tag":85,"props":130,"children":133},{"alt":131,"height":88,"loading":89,"provider":90,"sizes":91,"src":132,"width":93},"The Contwnt Graph","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qngsih12lys9s6yww0j.png",[],{"type":21,"tag":29,"props":135,"children":137},{"id":136},"the-benefits",[138],{"type":26,"value":139},"The benefits",{"type":21,"tag":22,"props":141,"children":142},{},[143],{"type":26,"value":144},"Use these one-liners when you talk about this subject to your boss.",{"type":21,"tag":146,"props":147,"children":148},"ul",{},[149,155,160,165],{"type":21,"tag":150,"props":151,"children":152},"li",{},[153],{"type":26,"value":154},"The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas.",{"type":21,"tag":150,"props":156,"children":157},{},[158],{"type":26,"value":159},"With the content graph, you query only what you need from any source and in the same unified way.",{"type":21,"tag":150,"props":161,"children":162},{},[163],{"type":26,"value":164},"The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all.",{"type":21,"tag":150,"props":166,"children":167},{},[168],{"type":26,"value":169},"The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple.",{"type":21,"tag":29,"props":171,"children":173},{"id":172},"challenges-and-considerations",[174],{"type":26,"value":175},"Challenges and considerations",{"type":21,"tag":22,"props":177,"children":178},{},[179],{"type":26,"value":180},"This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph.",{"type":21,"tag":29,"props":182,"children":184},{"id":183},"the-tech-behind-the-content-graph",[185],{"type":26,"value":186},"The tech behind the content graph",{"type":21,"tag":22,"props":188,"children":189},{},[190],{"type":26,"value":191},"You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL.",{"type":21,"tag":22,"props":193,"children":194},{},[195],{"type":26,"value":196},"An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it.",{"type":21,"tag":29,"props":198,"children":200},{"id":199},"a-real-life-use-case-for-the-content-graph",[201],{"type":26,"value":202},"A real-life use case for the content graph",{"type":21,"tag":22,"props":204,"children":205},{},[206],{"type":26,"value":207},"An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands.",{"type":21,"tag":22,"props":209,"children":210},{},[211],{"type":26,"value":212},"Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching.",{"type":21,"tag":22,"props":214,"children":215},{},[216],{"type":26,"value":217},"Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use.",{"type":21,"tag":22,"props":219,"children":220},{},[221],{"type":26,"value":222},"Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine.",{"type":21,"tag":22,"props":224,"children":225},{},[226],{"type":26,"value":227},"The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change.",{"type":21,"tag":22,"props":229,"children":230},{},[231],{"type":26,"value":232},"One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly.",{"type":21,"tag":29,"props":234,"children":236},{"id":235},"conclusion",[237],{"type":26,"value":238},"Conclusion",{"type":21,"tag":22,"props":240,"children":241},{},[242],{"type":26,"value":243},"The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures.",{"title":7,"searchDepth":245,"depth":245,"links":246},2,[247,248,249,250,251,252,253,254],{"id":31,"depth":245,"text":34},{"id":72,"depth":245,"text":75},{"id":97,"depth":245,"text":100},{"id":136,"depth":245,"text":139},{"id":172,"depth":245,"text":175},{"id":183,"depth":245,"text":186},{"id":199,"depth":245,"text":202},{"id":235,"depth":245,"text":238},"markdown","content:4.writing:the-content-graph-is-the-future.md","content","4.writing/the-content-graph-is-the-future.md","md",[261,264,1056,1131,1367,1370,1373],{"title":262,"_path":263},"About Tim","/about",{"title":265,"_path":266,"children":267},"Videos","/videos",[268,287,306,352,353,405,508,531,553,881],{"title":269,"_path":270,"children":271},"Alive And Kicking","/videos/alive-and-kicking",[272,275,278,281,284],{"title":273,"_path":274},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":276,"_path":277},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":279,"_path":280},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":282,"_path":283},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":285,"_path":286},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":288,"_path":289,"children":290},"Headless Creator","/videos/headless-creator",[291,294,297,300,303],{"title":292,"_path":293},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":295,"_path":296},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":298,"_path":299},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":301,"_path":302},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":304,"_path":305},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":307,"_path":308,"children":309},"Hygraph","/videos/hygraph",[310,313,316,319,322,325,328,331,334,337,340,343,346,349],{"title":311,"_path":312},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":314,"_path":315},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":317,"_path":318},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":320,"_path":321},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":323,"_path":324},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":326,"_path":327},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":329,"_path":330},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":332,"_path":333},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":335,"_path":336},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":338,"_path":339},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":341,"_path":342},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":344,"_path":345},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":347,"_path":348},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":350,"_path":351},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":265,"_path":266},{"title":354,"_path":355,"children":356},"Live Hygraph","/videos/live-hygraph",[357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402],{"title":358,"_path":359},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":361,"_path":362},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":364,"_path":365},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":367,"_path":368},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":370,"_path":371},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":373,"_path":374},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":376,"_path":377},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":379,"_path":380},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":382,"_path":383},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":385,"_path":386},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":388,"_path":389},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":391,"_path":392},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":394,"_path":395},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":397,"_path":398},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":400,"_path":401},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":403,"_path":404},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":406,"_path":407,"children":408},"Live Uniform","/videos/live-uniform",[409,412,415,418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505],{"title":410,"_path":411},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":413,"_path":414},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":416,"_path":417},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":419,"_path":420},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":422,"_path":423},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":425,"_path":426},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":428,"_path":429},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":431,"_path":432},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":434,"_path":435},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":437,"_path":438},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":440,"_path":441},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":443,"_path":444},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":446,"_path":447},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":449,"_path":450},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":452,"_path":453},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":455,"_path":456},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":458,"_path":459},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":461,"_path":462},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":464,"_path":465},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":467,"_path":468},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":470,"_path":471},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":473,"_path":474},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":476,"_path":477},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":479,"_path":480},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":482,"_path":483},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":485,"_path":486},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":488,"_path":489},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":491,"_path":492},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":494,"_path":495},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":497,"_path":498},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":500,"_path":501},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":503,"_path":504},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":506,"_path":507},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":509,"_path":510,"children":511},"Misc Streams","/videos/misc-streams",[512,515,518,521,523,525,528],{"title":513,"_path":514},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":516,"_path":517},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":519,"_path":520},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":503,"_path":522},"/videos/misc-streams/003-jvgiaotcerq",{"title":494,"_path":524},"/videos/misc-streams/004-ekut1koa2n8",{"title":526,"_path":527},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":529,"_path":530},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":532,"_path":533,"children":534},"Mp","/videos/mp",[535,538,541,544,547,550],{"title":536,"_path":537},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":539,"_path":540},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":542,"_path":543},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":545,"_path":546},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":548,"_path":549},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":551,"_path":552},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":554,"_path":555,"children":556},"Tim","/videos/tim",[557,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,609,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878],{"title":276,"_path":558},"/videos/tim/000-mvq-_s20ndk",{"title":560,"_path":561},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":563,"_path":564},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":566,"_path":567},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":569,"_path":570},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":572,"_path":573},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":575,"_path":576},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":578,"_path":579},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":581,"_path":582},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":584,"_path":585},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":587,"_path":588},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":590,"_path":591},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":593,"_path":594},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":596,"_path":597},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":599,"_path":600},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":602,"_path":603},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":605,"_path":606},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":279,"_path":608},"/videos/tim/017-m0mrligs6i0",{"title":273,"_path":610},"/videos/tim/018-hhpitreyobi",{"title":612,"_path":613},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":615,"_path":616},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":618,"_path":619},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":621,"_path":622},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":624,"_path":625},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":627,"_path":628},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":630,"_path":631},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":633,"_path":634},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":636,"_path":637},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":639,"_path":640},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":642,"_path":643},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":645,"_path":646},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":648,"_path":649},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":651,"_path":652},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":654,"_path":655},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":657,"_path":658},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":660,"_path":661},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":663,"_path":664},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":666,"_path":667},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":669,"_path":670},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":672,"_path":673},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":675,"_path":676},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":678,"_path":679},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":681,"_path":682},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":684,"_path":685},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":687,"_path":688},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":690,"_path":691},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":693,"_path":694},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":696,"_path":697},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":699,"_path":700},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":702,"_path":703},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":705,"_path":706},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":708,"_path":709},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":711,"_path":712},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":714,"_path":715},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":717,"_path":718},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":720,"_path":721},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":723,"_path":724},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":726,"_path":727},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":729,"_path":730},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":732,"_path":733},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":735,"_path":736},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":738,"_path":739},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":741,"_path":742},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":744,"_path":745},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":747,"_path":748},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":750,"_path":751},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":753,"_path":754},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":756,"_path":757},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":759,"_path":760},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":762,"_path":763},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":765,"_path":766},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":768,"_path":769},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":771,"_path":772},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":774,"_path":775},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":777,"_path":778},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":780,"_path":781},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":783,"_path":784},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":786,"_path":787},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":789,"_path":790},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":792,"_path":793},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":795,"_path":796},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":798,"_path":799},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":801,"_path":802},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":804,"_path":805},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":807,"_path":808},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":810,"_path":811},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":813,"_path":814},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":816,"_path":817},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":819,"_path":820},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":822,"_path":823},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":825,"_path":826},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":828,"_path":829},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":831,"_path":832},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":834,"_path":835},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":837,"_path":838},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":840,"_path":841},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":843,"_path":844},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":846,"_path":847},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":849,"_path":850},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":852,"_path":853},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":855,"_path":856},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":858,"_path":859},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":861,"_path":862},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":864,"_path":865},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":867,"_path":868},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":870,"_path":871},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":873,"_path":874},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":876,"_path":877},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":879,"_path":880},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":882,"_path":883,"children":884},"Uniform","/videos/uniform",[885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053],{"title":886,"_path":887},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":889,"_path":890},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":892,"_path":893},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":895,"_path":896},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":898,"_path":899},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":901,"_path":902},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":904,"_path":905},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":907,"_path":908},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":910,"_path":911},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":913,"_path":914},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":916,"_path":917},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":919,"_path":920},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":922,"_path":923},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":925,"_path":926},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":928,"_path":929},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":931,"_path":932},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":934,"_path":935},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":937,"_path":938},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":940,"_path":941},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":943,"_path":944},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":946,"_path":947},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":949,"_path":950},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":952,"_path":953},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":955,"_path":956},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":958,"_path":959},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":961,"_path":962},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":964,"_path":965},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":967,"_path":968},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":970,"_path":971},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":973,"_path":974},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":976,"_path":977},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":979,"_path":980},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":982,"_path":983},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":985,"_path":986},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":988,"_path":989},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":991,"_path":992},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":994,"_path":995},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":997,"_path":998},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1000,"_path":1001},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1003,"_path":1004},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1006,"_path":1007},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1009,"_path":1010},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1012,"_path":1013},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1015,"_path":1016},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1018,"_path":1019},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1021,"_path":1022},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1024,"_path":1025},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1027,"_path":1028},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1030,"_path":1031},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1033,"_path":1034},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1036,"_path":1037},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1039,"_path":1040},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1042,"_path":1043},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1045,"_path":1046},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1048,"_path":1049},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1051,"_path":1052},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1054,"_path":1055},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1057,"_path":1058,"children":1059},"Writing","/writing",[1060,1063,1066,1069,1072,1075,1076,1079,1082,1085,1088,1091,1094,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128],{"title":1061,"_path":1062},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1064,"_path":1065},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1067,"_path":1068},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1070,"_path":1071},"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":1073,"_path":1074},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1057,"_path":1058},{"title":1077,"_path":1078},"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":1080,"_path":1081},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1083,"_path":1084},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1086,"_path":1087},"My Fitness Story","/writing/my-fitness-story",{"title":1089,"_path":1090},"New job alert!","/writing/new-job-alert",{"title":1092,"_path":1093},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":8,"_path":4},{"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 lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1108,"_path":1109},"The MACH monolith","/writing/the-mach-monolith",{"title":1111,"_path":1112},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1114,"_path":1115},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1117,"_path":1118},"This is headless 2.0","/writing/this-is-headless-20",{"title":1120,"_path":1121},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1123,"_path":1124},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1126,"_path":1127},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1129,"_path":1130},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1132,"_path":1133,"children":1134},"Speaking","/speaking",[1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366],{"title":1136,"_path":1137},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1139,"_path":1140},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1142,"_path":1143},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1145,"_path":1146},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1148,"_path":1149},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1151,"_path":1152},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1154,"_path":1155},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1157,"_path":1158},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1160,"_path":1161},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1163,"_path":1164},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1166,"_path":1167},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1169,"_path":1170},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1172,"_path":1173},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1175,"_path":1176},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1178,"_path":1179},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1181,"_path":1182},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1184,"_path":1185},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1187,"_path":1188},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1190,"_path":1191},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1193,"_path":1194},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1196,"_path":1197},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1199,"_path":1200},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1202,"_path":1203},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1205,"_path":1206},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1208,"_path":1209},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1211,"_path":1212},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1214,"_path":1215},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1217,"_path":1218},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1220,"_path":1221},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1223,"_path":1224},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1226,"_path":1227},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1229,"_path":1230},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1232,"_path":1233},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1235,"_path":1236},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1238,"_path":1239},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1241,"_path":1242},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1244,"_path":1245},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1247,"_path":1248},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1250,"_path":1251},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1253,"_path":1254},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1256,"_path":1257},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1259,"_path":1260},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1262,"_path":1263},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1265,"_path":1266},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1268,"_path":1269},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1271,"_path":1272},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1274,"_path":1275},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1277,"_path":1278},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1280,"_path":1281},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1283,"_path":1284},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1286,"_path":1287},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1289,"_path":1290},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1292,"_path":1293},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1295,"_path":1296},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1298,"_path":1299},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1301,"_path":1302},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1304,"_path":1305},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1307,"_path":1308},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1310,"_path":1311},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1313,"_path":1314},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1316,"_path":1317},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1319,"_path":1320},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1322,"_path":1323},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1325,"_path":1326},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1328,"_path":1329},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1331,"_path":1332},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1334,"_path":1335},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1337,"_path":1338},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1340,"_path":1341},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1343,"_path":1344},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1346,"_path":1347},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1349,"_path":1350},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1352,"_path":1353},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1355,"_path":1356},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1358,"_path":1359},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1361,"_path":1362},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1364,"_path":1365},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1132,"_path":1133},{"title":1368,"_path":1369},"live streams","/livestreams",{"title":1371,"_path":1372},"Press kit","/presskit",{"title":1374,"_path":1375},"Alive and kicking","/alive-and-kicking",1718484821487] \ No newline at end of file diff --git a/writing/the-content-graph-is-the-future/index.html b/writing/the-content-graph-is-the-future/index.html index d278e2c2..2aa9f38e 100644 --- a/writing/the-content-graph-is-the-future/index.html +++ b/writing/the-content-graph-is-the-future/index.html @@ -7,7 +7,7 @@ - + - - - - - + + + + + - - - + + + - - + + - - - - - - - - - + + + + + + + + + - - - - -

The content Graph is the future

Dec 05, 2023 at https://hygraph.com/blog/the-content-graph-is-the-future

Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph.

The emergence of new buzzwords: best-of-breed and composable

Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability.

A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs.

Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements.

If you want to learn more details about industry buzzwords, check out this blog post.

It’s not all sunshine and rainbows

Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous.

Composable challenges

Introducing the content graph

The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub.

The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources.

In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything.

An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible.

To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities.

The Contwnt Graph

The benefits

Use these one-liners when you talk about this subject to your boss.

  • The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas.
  • With the content graph, you query only what you need from any source and in the same unified way.
  • The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all.
  • The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple.

Challenges and considerations

This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph.

The tech behind the content graph

You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL.

An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it.

A real-life use case for the content graph

An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands.

Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching.

Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use.

Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine.

The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change.

One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly.

Conclusion

The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures.

- \ No newline at end of file + + + + +

The content Graph is the future

Dec 05, 2023 at https://hygraph.com/blog/the-content-graph-is-the-future

Content management is as essential as it is complex, especially at scale. As brands grow, they often use a mix of different services to manage their domain content, such as PIM, DAM, Search, and legacy CMS. Unfortunately, this approach challenges developers who must connect all the data to make it presentable on websites or apps, resulting in technical debt. In this article, I will introduce an elegant solution to this problem in this article: the content graph.

The emergence of new buzzwords: best-of-breed and composable

Organizations worldwide are increasingly adopting a composable architecture that incorporates best-of-breed tools. Simply put, they use a combination of tools with a small scope that do exactly what they need. This approach enables developers to select and integrate smaller tools for each specific function, providing enhanced flexibility and scalability.

A best-of-breed product is a specialized service that is considered the best in its specific category. These products are chosen for their unique strengths and seamless integration with other tools or systems in a composable architecture. This allows organizations to create a customized and optimized solution that meets their specific needs.

Unlike monolithic DXPs (off-the-shelf products), which can be inflexible and restrict customization, composable architectures enable organizations to adapt to their specific requirements and take advantage of the latest technological advancements.

If you want to learn more details about industry buzzwords, check out this blog post.

It’s not all sunshine and rainbows

Composable architectures offer a lot of freedom but also introduce a significant amount of complexity. While it may feel liberating for developers to choose how they connect to services, when dealing with large-scale applications, combining data from different structures and using unfamiliar SDKs can quickly become disastrous.

Composable challenges

Introducing the content graph

The content graph is a framework that is represented in the form of a graph, and enables developers to query multiple sources of information through a single unified hub.

The graph approach federates content, centralizes content strategy, and standardizes querying processes. This simplifies API interactions, ensures consistency, and eliminates siloed information, maximizing efficiency and scalability. It achieves all these tasks while avoiding data duplication and maintaining the autonomy of the sources.

In human words, this means that all content coming from best-of-breed sources is fed into an aggregation layer (the graph), which can be redistributed in a way that is easy to query. This layer standardizes the language used to query content and allows you to ask for only specific bits rather than receiving everything.

An essential part of this approach is that the content graph doesn’t store or duplicate any data; it merely creates a schema and allows developers to query the data via the graph’s endpoint. This allows the best-of-breed sources that connect to it to be fully autonomous and flexible.

To ensure everything performs well while asking the graph for data (imagine having a slow legacy system as a content source), the content graph stores query results on the CDN edge and offers specific TTL and webhook functionalities.

The Contwnt Graph

The benefits

Use these one-liners when you talk about this subject to your boss.

  • The content graph offers improved content discoverability and accessibility due to strongly typed GraphQL schemas.
  • With the content graph, you query only what you need from any source and in the same unified way.
  • The content graph offers efficient content updates and real-time synchronization due to TTL or webhook cache purging when sources update. No data duplication is happening at all.
  • The content graph facilitates seamless integration with various digital platforms and channels without creating technical debt on the implementation side. In human words, it keeps the front-end implementation simple.

Challenges and considerations

This article wouldn’t be complete without mentioning some of the challenges. Some implementation hurdles might be due to legacy API formats or highly complex data cleansing needs. Legacy APIs tend to be less strict and might change over time. If you need to clean up that data or add a lot of defensive code, you need to find a tool to do that first before pushing the content into the graph. This means your data governance and tooling must mature before using a content graph.

The tech behind the content graph

You might have guessed it: the content graph uses GraphQL as its query language. Using GraphQL enhances the experience for developers as it uses strongly typed data structures, allowing codebases to do introspection and learn instantly what type of data can be queried and in what format. The content graph framework absorbs any data structure and makes it into a GraphQL schema via a language called SDL.

An interesting use case is that of Hygraph, which is a GraphQL headless CMS first but with a content graph implementation on the side. This allows content editors to use external content federated into the graph in native CMS schemas without understanding where that data came from. Developers only need to query Hygraph to get all information from the CMS and whatever source was plugged into it.

A real-life use case for the content graph

An example of using a content graph is that of composable commerce. Imagine operating a large shop selling telecom-related products. As these types of products are complex to manage, companies use a PIM system to enrich product information and manage connections between bundles and brands.

Of course, end users have to be able to search, filter, and order the products when researching what they want to buy. For this, you will likely need another tool to index all products to prepare them for searching.

Each product has a media-rich and elaborate story that generally resides on the product page or a campaign page around a product range. To be able to make this happen, you need a CMS to compose the content and, most likely, a DAM system to store all the original formats of the media you might use.

Lastly, end users must be able to make an account, buy, add to their wishlist, and favorite the products. For that, you need a commerce engine.

The beauty is that all these systems output data that can be ingested by the content graph, allowing developers to query only the graph while using GraphQL. The specialists your brand hires can operate the external tools as usual. Want to add a wishlist or switch our PIM systems? Add it to the graph; the front-end implementation code must not change.

One more consideration: if you have a legacy system in place, it can be federated into the content graph while staying autonomous and operating normally. Developers on the implementation end do not need to query the system but ask the graph for its content instead. This gives you the ability to phase it out slowly.

Conclusion

The content graph might sound like a concept out of a sci-fi movie, but it’s already here and ready to use. In fact, I think this might be the technical solution for most composable architectures.

+ \ No newline at end of file diff --git a/writing/the-future-of-headless-cms-content-federation-with-graphql/_payload.json b/writing/the-future-of-headless-cms-content-federation-with-graphql/_payload.json deleted file mode 100644 index 9a0b98b4..00000000 --- a/writing/the-future-of-headless-cms-content-federation-with-graphql/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1265},["Reactive",2],{"content-query-g5ccETwBcM":3,"content-navigation-8C37fagqQL":149},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":144,"_id":145,"_source":146,"_file":147,"_extension":148},"/writing/the-future-of-headless-cms-content-federation-with-graphql","writing",false,"","The future of headless CMS: Content Federation with GraphQL","Federation is a popular topic of conversation these days, and for good reason. With the ever-growing...",1614623,"the-future-of-headless-cms-content-federation-with-graphql","2023-09-28T14:39:16Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pk8b2ihfddxqlt3w4tu.jpg","https://hygraph.com/blog/content-federation-with-graphql",[16,17,18,19],"headless","cms","graphql","federation",22300,{"type":22,"children":23,"toc":139},"root",[24,32,48,53,58,63,68,88,93,106,113,118,123,128,134],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","Federation is a popular topic of conversation these days, and for good reason. With the ever-growing amount of fragmentation in tooling, it offers a way to decouple data and systems, giving organizations more flexibility and agility.",{"type":25,"tag":26,"props":33,"children":34},{},[35,37,46],{"type":30,"value":36},"Despite the promise of headless architecture, data, and systems easily become tightly coupled. Whether through custom middleware or frontend stitching, one system can have ripple effects on all others. This can make it difficult to manage and update content and causes technical debt. In the past, I called this the",{"type":25,"tag":38,"props":39,"children":43},"a",{"href":40,"rel":41},"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/",[42],"nofollow",[44],{"type":30,"value":45}," MACH Monolith",{"type":30,"value":47},".",{"type":25,"tag":26,"props":49,"children":50},{},[51],{"type":30,"value":52},"A federated architecture, on the other hand, truly decouples data and systems. Federation is a technique of using autonomous systems to work with the data and logic they’re best suited for. What differentiates that from the MACH Monolith is how the data comes back together. Federation takes these autonomous services and crafts a unified, standardized, and powerful API for use in any application.",{"type":25,"tag":26,"props":54,"children":55},{},[56],{"type":30,"value":57},"While there are many patterns for accomplishing federation, one architecture is Content Federation. Content federation is the process of bringing together content from multiple sources into a single, unified view that can be accessed both at the API layer, as well as at the editor level.",{"type":25,"tag":26,"props":59,"children":60},{},[61],{"type":30,"value":62},"In a federated architecture, the content federation layer brings together content from the different systems. This layer acts as a single point of access for data, making it easy for users to get the content they need, regardless of where it is stored.",{"type":25,"tag":26,"props":64,"children":65},{},[66],{"type":30,"value":67},"A few benefits of a federated architecture include:",{"type":25,"tag":69,"props":70,"children":71},"ul",{},[72,78,83],{"type":25,"tag":73,"props":74,"children":75},"li",{},[76],{"type":30,"value":77},"Increased flexibility and agility: Each system is responsible for its data and logic, which gives them more autonomy and flexibility. This makes it easier to manage and update systems and makes it easier to add new systems to the architecture.",{"type":25,"tag":73,"props":79,"children":80},{},[81],{"type":30,"value":82},"Improved security: A federated architecture can reduce the attack surface. When data and systems are tightly coupled, a vulnerability in one system can compromise other systems. A federated architecture reduces the risk of this happening by decoupling data and systems.",{"type":25,"tag":73,"props":84,"children":85},{},[86],{"type":30,"value":87},"Reduced complexity: A federated architecture can simplify how data is managed. In a traditional architecture, data is often stored in multiple systems, making it difficult to keep track of. A federated architecture brings together data from different systems into a single, unified view, which makes it easier to manage, inspect, and use data. The implementation layer has one standardized, unified way to ask for the content.",{"type":25,"tag":26,"props":89,"children":90},{},[91],{"type":30,"value":92},"Overall, a federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security.",{"type":25,"tag":26,"props":94,"children":95},{},[96],{"type":25,"tag":97,"props":98,"children":105},"img",{"alt":99,"loading":100,"provider":101,"sizes":102,"src":103,"width":104},"Federated Content Platform","lazy","cloudinary","sm:100vw","https://media.graphassets.com/4wC9B4MBSaZDeQvB26QA",1280,[],{"type":25,"tag":107,"props":108,"children":110},"h2",{"id":109},"the-importance-of-autonomy-in-a-federated-architecture",[111],{"type":30,"value":112},"The importance of autonomy in a federated architecture",{"type":25,"tag":26,"props":114,"children":115},{},[116],{"type":30,"value":117},"While most federation articles focus on the benefits of unification, system autonomy is really the key benefit. This autonomy means that systems can be developed and managed independently without worrying about the other systems in the architecture. This can be a major advantage, as it allows organizations to be more agile and responsive to change while still maintaining standards.",{"type":25,"tag":26,"props":119,"children":120},{},[121],{"type":30,"value":122},"This enforced autonomy increases the reach of standardization. In an e-commerce application, product information — pricing, description, categorization — should be standardized wherever it’s used. Without Content Federation, the product data would be re-entered in the systems that don’t house it. When an editor of the blog goes to create a post about a product, they introduce the human potential for error. If they merely select a product from the e-commerce system, they can rely on the owners of that data to keep their data standardized.",{"type":25,"tag":26,"props":124,"children":125},{},[126],{"type":30,"value":127},"When the standards for a particular piece of data changes, the data is changed in the home system, and each other system is ready to receive that change. No additional work necessary.",{"type":25,"tag":107,"props":129,"children":131},{"id":130},"conclusion",[132],{"type":30,"value":133},"Conclusion",{"type":25,"tag":26,"props":135,"children":136},{},[137],{"type":30,"value":138},"A federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security. Federation brings autonomy to the data layer while also giving rise to a unification layer Content Federation brings a deeper sense of standardization through systemic change instead of human change. Without autonomy, we have complexity; without unification and standardization, we have glue code. We need both in the modern stack.",{"title":7,"searchDepth":140,"depth":140,"links":141},2,[142,143],{"id":109,"depth":140,"text":112},{"id":130,"depth":140,"text":133},"markdown","content:4.writing:the-future-of-headless-cms-content-federation-with-graphql.md","content","4.writing/the-future-of-headless-cms-content-federation-with-graphql.md","md",[150,153,945,1020,1256,1259,1262],{"title":151,"_path":152},"About","/about",{"title":154,"_path":155,"children":156},"videos","/videos",[157,176,195,241,242,294,397,420,442,770],{"title":158,"_path":159,"children":160},"Alive And Kicking","/videos/alive-and-kicking",[161,164,167,170,173],{"title":162,"_path":163},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":165,"_path":166},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":168,"_path":169},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":171,"_path":172},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":174,"_path":175},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":177,"_path":178,"children":179},"Headless Creator","/videos/headless-creator",[180,183,186,189,192],{"title":181,"_path":182},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":184,"_path":185},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":187,"_path":188},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":190,"_path":191},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":193,"_path":194},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":196,"_path":197,"children":198},"Hygraph","/videos/hygraph",[199,202,205,208,211,214,217,220,223,226,229,232,235,238],{"title":200,"_path":201},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":203,"_path":204},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":206,"_path":207},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":209,"_path":210},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":212,"_path":213},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":215,"_path":216},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":218,"_path":219},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":221,"_path":222},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":224,"_path":225},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":227,"_path":228},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":230,"_path":231},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":233,"_path":234},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":236,"_path":237},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":239,"_path":240},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":154,"_path":155},{"title":243,"_path":244,"children":245},"Live Hygraph","/videos/live-hygraph",[246,249,252,255,258,261,264,267,270,273,276,279,282,285,288,291],{"title":247,"_path":248},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":250,"_path":251},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":253,"_path":254},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":256,"_path":257},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":259,"_path":260},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":262,"_path":263},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":265,"_path":266},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":268,"_path":269},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":271,"_path":272},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":274,"_path":275},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":277,"_path":278},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":280,"_path":281},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":283,"_path":284},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":286,"_path":287},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":289,"_path":290},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":292,"_path":293},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":295,"_path":296,"children":297},"Live Uniform","/videos/live-uniform",[298,301,304,307,310,313,316,319,322,325,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,382,385,388,391,394],{"title":299,"_path":300},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":302,"_path":303},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":305,"_path":306},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":308,"_path":309},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":311,"_path":312},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":314,"_path":315},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":317,"_path":318},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":320,"_path":321},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":323,"_path":324},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":326,"_path":327},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":329,"_path":330},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":332,"_path":333},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":335,"_path":336},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":338,"_path":339},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":341,"_path":342},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":344,"_path":345},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":347,"_path":348},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":350,"_path":351},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":353,"_path":354},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":356,"_path":357},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":359,"_path":360},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":362,"_path":363},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":365,"_path":366},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":368,"_path":369},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":371,"_path":372},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":374,"_path":375},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":377,"_path":378},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":380,"_path":381},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":383,"_path":384},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":386,"_path":387},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":389,"_path":390},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":392,"_path":393},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":395,"_path":396},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":398,"_path":399,"children":400},"Misc Streams","/videos/misc-streams",[401,404,407,410,412,414,417],{"title":402,"_path":403},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":405,"_path":406},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":408,"_path":409},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":392,"_path":411},"/videos/misc-streams/003-jvgiaotcerq",{"title":383,"_path":413},"/videos/misc-streams/004-ekut1koa2n8",{"title":415,"_path":416},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":418,"_path":419},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":421,"_path":422,"children":423},"Mp","/videos/mp",[424,427,430,433,436,439],{"title":425,"_path":426},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":428,"_path":429},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":431,"_path":432},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":434,"_path":435},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":437,"_path":438},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":440,"_path":441},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":443,"_path":444,"children":445},"Tim","/videos/tim",[446,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496,498,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767],{"title":165,"_path":447},"/videos/tim/000-mvq-_s20ndk",{"title":449,"_path":450},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":452,"_path":453},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":455,"_path":456},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":458,"_path":459},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":461,"_path":462},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":464,"_path":465},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":467,"_path":468},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":470,"_path":471},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":473,"_path":474},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":476,"_path":477},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":479,"_path":480},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":482,"_path":483},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":485,"_path":486},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":488,"_path":489},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":491,"_path":492},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":494,"_path":495},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":168,"_path":497},"/videos/tim/017-m0mrligs6i0",{"title":162,"_path":499},"/videos/tim/018-hhpitreyobi",{"title":501,"_path":502},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":504,"_path":505},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":507,"_path":508},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":510,"_path":511},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":513,"_path":514},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":516,"_path":517},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":519,"_path":520},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":522,"_path":523},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":525,"_path":526},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":528,"_path":529},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":531,"_path":532},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":534,"_path":535},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":537,"_path":538},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":540,"_path":541},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":543,"_path":544},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":546,"_path":547},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":549,"_path":550},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":552,"_path":553},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":555,"_path":556},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":558,"_path":559},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":561,"_path":562},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":564,"_path":565},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":567,"_path":568},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":570,"_path":571},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":573,"_path":574},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":576,"_path":577},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":579,"_path":580},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":582,"_path":583},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":585,"_path":586},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":588,"_path":589},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":591,"_path":592},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":594,"_path":595},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":597,"_path":598},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":600,"_path":601},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":603,"_path":604},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":606,"_path":607},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":609,"_path":610},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":612,"_path":613},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":615,"_path":616},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":618,"_path":619},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":621,"_path":622},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":624,"_path":625},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":627,"_path":628},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":630,"_path":631},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":633,"_path":634},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":636,"_path":637},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":639,"_path":640},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":642,"_path":643},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":645,"_path":646},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":648,"_path":649},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":651,"_path":652},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":654,"_path":655},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":657,"_path":658},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":660,"_path":661},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":663,"_path":664},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":666,"_path":667},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":669,"_path":670},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":672,"_path":673},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":675,"_path":676},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":678,"_path":679},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":681,"_path":682},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":684,"_path":685},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":687,"_path":688},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":690,"_path":691},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":693,"_path":694},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":696,"_path":697},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":699,"_path":700},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":702,"_path":703},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":705,"_path":706},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":708,"_path":709},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":711,"_path":712},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":714,"_path":715},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":717,"_path":718},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":720,"_path":721},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":723,"_path":724},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":726,"_path":727},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":729,"_path":730},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":732,"_path":733},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":735,"_path":736},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":738,"_path":739},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":741,"_path":742},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":744,"_path":745},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":747,"_path":748},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":750,"_path":751},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":753,"_path":754},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":756,"_path":757},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":759,"_path":760},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":762,"_path":763},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":765,"_path":766},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":768,"_path":769},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":771,"_path":772,"children":773},"Uniform","/videos/uniform",[774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942],{"title":775,"_path":776},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":778,"_path":779},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":781,"_path":782},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":784,"_path":785},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":787,"_path":788},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":790,"_path":791},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":793,"_path":794},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":796,"_path":797},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":799,"_path":800},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":802,"_path":803},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":805,"_path":806},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":808,"_path":809},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":811,"_path":812},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":814,"_path":815},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":817,"_path":818},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":820,"_path":821},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":823,"_path":824},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":826,"_path":827},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":829,"_path":830},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":832,"_path":833},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":835,"_path":836},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":838,"_path":839},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":841,"_path":842},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":844,"_path":845},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":847,"_path":848},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":850,"_path":851},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":853,"_path":854},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":856,"_path":857},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":859,"_path":860},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":862,"_path":863},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":865,"_path":866},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":868,"_path":869},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":871,"_path":872},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":874,"_path":875},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":877,"_path":878},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":880,"_path":881},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":883,"_path":884},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":886,"_path":887},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":889,"_path":890},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":892,"_path":893},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":895,"_path":896},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":898,"_path":899},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":901,"_path":902},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":904,"_path":905},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":907,"_path":908},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":910,"_path":911},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":913,"_path":914},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":916,"_path":917},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":919,"_path":920},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":922,"_path":923},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":925,"_path":926},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":928,"_path":929},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":931,"_path":932},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":934,"_path":935},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":937,"_path":938},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":940,"_path":941},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":943,"_path":944},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":946,"_path":947,"children":948},"Writing","/writing",[949,952,955,958,961,964,965,968,971,974,977,980,983,986,987,990,993,996,999,1002,1005,1008,1011,1014,1017],{"title":950,"_path":951},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":953,"_path":954},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":956,"_path":957},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":959,"_path":960},"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":962,"_path":963},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":946,"_path":947},{"title":966,"_path":967},"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":969,"_path":970},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":972,"_path":973},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":975,"_path":976},"My Fitness Story","/writing/my-fitness-story",{"title":978,"_path":979},"New job alert!","/writing/new-job-alert",{"title":981,"_path":982},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":984,"_path":985},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":8,"_path":4},{"title":988,"_path":989},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":991,"_path":992},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":994,"_path":995},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":997,"_path":998},"The MACH monolith","/writing/the-mach-monolith",{"title":1000,"_path":1001},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1003,"_path":1004},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1006,"_path":1007},"This is headless 2.0","/writing/this-is-headless-20",{"title":1009,"_path":1010},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1012,"_path":1013},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1015,"_path":1016},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1018,"_path":1019},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1021,"_path":1022,"children":1023},"Speaking","/speaking",[1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255],{"title":1025,"_path":1026},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1028,"_path":1029},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1031,"_path":1032},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1034,"_path":1035},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1037,"_path":1038},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1040,"_path":1041},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1043,"_path":1044},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1046,"_path":1047},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1049,"_path":1050},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1052,"_path":1053},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1055,"_path":1056},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1058,"_path":1059},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1061,"_path":1062},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1064,"_path":1065},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1067,"_path":1068},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1070,"_path":1071},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1073,"_path":1074},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1076,"_path":1077},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1079,"_path":1080},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1082,"_path":1083},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1085,"_path":1086},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1088,"_path":1089},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1091,"_path":1092},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1094,"_path":1095},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1097,"_path":1098},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1100,"_path":1101},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1103,"_path":1104},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1106,"_path":1107},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1109,"_path":1110},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1112,"_path":1113},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1115,"_path":1116},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1118,"_path":1119},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1121,"_path":1122},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1124,"_path":1125},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1127,"_path":1128},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1130,"_path":1131},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1133,"_path":1134},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1136,"_path":1137},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1139,"_path":1140},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1142,"_path":1143},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1145,"_path":1146},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1148,"_path":1149},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1151,"_path":1152},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1154,"_path":1155},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1157,"_path":1158},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1160,"_path":1161},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1163,"_path":1164},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1166,"_path":1167},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1169,"_path":1170},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1172,"_path":1173},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1175,"_path":1176},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1178,"_path":1179},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1181,"_path":1182},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1184,"_path":1185},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1187,"_path":1188},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1190,"_path":1191},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1193,"_path":1194},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1196,"_path":1197},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1199,"_path":1200},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1202,"_path":1203},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1205,"_path":1206},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1208,"_path":1209},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1211,"_path":1212},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1214,"_path":1215},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1217,"_path":1218},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1220,"_path":1221},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1223,"_path":1224},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1226,"_path":1227},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1229,"_path":1230},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1232,"_path":1233},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1235,"_path":1236},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1238,"_path":1239},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1241,"_path":1242},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1244,"_path":1245},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1247,"_path":1248},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1250,"_path":1251},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1253,"_path":1254},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1021,"_path":1022},{"title":1257,"_path":1258},"live streams","/livestreams",{"title":1260,"_path":1261},"press kit","/presskit",{"title":1263,"_path":1264},"alive and kicking","/alive-and-kicking",1718484379186] \ No newline at end of file diff --git a/writing/the-future-of-headless-cms-content-federation-with-graphql/index.html b/writing/the-future-of-headless-cms-content-federation-with-graphql/index.html deleted file mode 100644 index b8634420..00000000 --- a/writing/the-future-of-headless-cms-content-federation-with-graphql/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - -The future of headless CMS: Content Federation with GraphQL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The future of headless CMS: Content Federation with GraphQL

Sep 28, 2023 at https://hygraph.com/blog/content-federation-with-graphql

Federation is a popular topic of conversation these days, and for good reason. With the ever-growing amount of fragmentation in tooling, it offers a way to decouple data and systems, giving organizations more flexibility and agility.

Despite the promise of headless architecture, data, and systems easily become tightly coupled. Whether through custom middleware or frontend stitching, one system can have ripple effects on all others. This can make it difficult to manage and update content and causes technical debt. In the past, I called this the MACH Monolith.

A federated architecture, on the other hand, truly decouples data and systems. Federation is a technique of using autonomous systems to work with the data and logic they’re best suited for. What differentiates that from the MACH Monolith is how the data comes back together. Federation takes these autonomous services and crafts a unified, standardized, and powerful API for use in any application.

While there are many patterns for accomplishing federation, one architecture is Content Federation. Content federation is the process of bringing together content from multiple sources into a single, unified view that can be accessed both at the API layer, as well as at the editor level.

In a federated architecture, the content federation layer brings together content from the different systems. This layer acts as a single point of access for data, making it easy for users to get the content they need, regardless of where it is stored.

A few benefits of a federated architecture include:

  • Increased flexibility and agility: Each system is responsible for its data and logic, which gives them more autonomy and flexibility. This makes it easier to manage and update systems and makes it easier to add new systems to the architecture.
  • Improved security: A federated architecture can reduce the attack surface. When data and systems are tightly coupled, a vulnerability in one system can compromise other systems. A federated architecture reduces the risk of this happening by decoupling data and systems.
  • Reduced complexity: A federated architecture can simplify how data is managed. In a traditional architecture, data is often stored in multiple systems, making it difficult to keep track of. A federated architecture brings together data from different systems into a single, unified view, which makes it easier to manage, inspect, and use data. The implementation layer has one standardized, unified way to ask for the content.

Overall, a federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security.

Federated Content Platform

The importance of autonomy in a federated architecture

While most federation articles focus on the benefits of unification, system autonomy is really the key benefit. This autonomy means that systems can be developed and managed independently without worrying about the other systems in the architecture. This can be a major advantage, as it allows organizations to be more agile and responsive to change while still maintaining standards.

This enforced autonomy increases the reach of standardization. In an e-commerce application, product information — pricing, description, categorization — should be standardized wherever it’s used. Without Content Federation, the product data would be re-entered in the systems that don’t house it. When an editor of the blog goes to create a post about a product, they introduce the human potential for error. If they merely select a product from the e-commerce system, they can rely on the owners of that data to keep their data standardized.

When the standards for a particular piece of data changes, the data is changed in the home system, and each other system is ready to receive that change. No additional work necessary.

Conclusion

A federated architecture is a powerful way to decouple data and systems, giving organizations more flexibility, agility, and security. Federation brings autonomy to the data layer while also giving rise to a unification layer Content Federation brings a deeper sense of standardization through systemic change instead of human change. Without autonomy, we have complexity; without unification and standardization, we have glue code. We need both in the modern stack.

- \ No newline at end of file diff --git a/writing/the-future-of-jamstack-is-composable/_payload.json b/writing/the-future-of-jamstack-is-composable/_payload.json deleted file mode 100644 index 497be1f0..00000000 --- a/writing/the-future-of-jamstack-is-composable/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1489},["Reactive",2],{"content-query-F1SxXH0vVN":3,"content-navigation-8C37fagqQL":373},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":368,"_id":369,"_source":370,"_file":371,"_extension":372},"/writing/the-future-of-jamstack-is-composable","writing",false,"","The future of jamstack is composable","This post is either for developers who want an “at-scale” overview of modern architecture or for...",998786,"the-future-of-jamstack-is-composable","2022-02-23T13:04:08Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso0lvl9w5rea6i7sfp6u.jpeg","https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g",[16,17,18,19],"jamstack","architecture","composable","orchestration",22300,{"type":22,"children":23,"toc":357},"root",[24,36,41,48,53,68,73,79,84,97,102,110,115,120,125,133,139,144,173,184,189,196,201,209,214,258,263,271,277,282,287,310,315,328,333,341,347,352],{"type":25,"tag":26,"props":27,"children":28},"element","blockquote",{},[29],{"type":25,"tag":30,"props":31,"children":32},"p",{},[33],{"type":34,"value":35},"text","This post is either for developers who want an “at-scale” overview of modern architecture or for technical decision-makers looking at a great way to build a digital pipeline in this new composable world.",{"type":25,"tag":30,"props":37,"children":38},{},[39],{"type":34,"value":40},"In modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire.",{"type":25,"tag":42,"props":43,"children":45},"h2",{"id":44},"in-this-article",[46],{"type":34,"value":47},"In this article",{"type":25,"tag":30,"props":49,"children":50},{},[51],{"type":34,"value":52},"You will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech.",{"type":25,"tag":54,"props":55,"children":56},"ol",{},[57,63],{"type":25,"tag":58,"props":59,"children":60},"li",{},[61],{"type":34,"value":62},"Use the Jamstack with your favourite framework and host on your favourite CDN.",{"type":25,"tag":58,"props":64,"children":65},{},[66],{"type":34,"value":67},"Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers.",{"type":25,"tag":30,"props":69,"children":70},{},[71],{"type":34,"value":72},"Combining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future.",{"type":25,"tag":42,"props":74,"children":76},{"id":75},"the-jamstack-why-it-sits-front-and-centre-in-modern-architectures",[77],{"type":34,"value":78},"The Jamstack: why it sits front and centre in modern architectures",{"type":25,"tag":30,"props":80,"children":81},{},[82],{"type":34,"value":83},"Sites built with the Jamstack approach are a combination of static files generated by the CI/CD pipeline of your choice. Most dynamic stuff happens in the generation step, where the codebase reaches out to APIs and services to render all pages statically.",{"type":25,"tag":30,"props":85,"children":86},{},[87],{"type":25,"tag":88,"props":89,"children":96},"img",{"alt":90,"loading":91,"provider":92,"sizes":93,"src":94,"width":95},"Jamstack: build time vs runtime","lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpp5kpu4k3wxs91wne0b.png",1280,[],{"type":25,"tag":30,"props":98,"children":99},{},[100],{"type":34,"value":101},"The performance gains alone justify this approach. There is no runtime page generation, and the app doesn’t have to connect to an origin server to figure out what content to serve. If you want to scale up for Black Friday, just put the static files in more places on the CDN edge, and all is well. Next to the performance gains, you also have a much more secure system. If your architecture has an origin server with all the knowledge of the system, that is a weak point for security.",{"type":25,"tag":30,"props":103,"children":104},{},[105],{"type":25,"tag":88,"props":106,"children":109},{"alt":107,"loading":91,"provider":92,"sizes":93,"src":108,"width":95},"Traditional web vs Jamstack","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp86io6058n938u4dw70.png",[],{"type":25,"tag":30,"props":111,"children":112},{},[113],{"type":34,"value":114},"You can add dynamic data as well. CDN providers have built the ability to run code on the edge, implementing serverless functions and edge workers.",{"type":25,"tag":30,"props":116,"children":117},{},[118],{"type":34,"value":119},"A serverless function is a service that lets you run code without provisioning or managing servers. Serverless functions tend to be simple and do not have a state. They require an input, and they will give an output. After use, they will not stay up unless you request them to do that. The benefit is that the cost is low and that these functions are not running if not needed - consuming less energy. You can use them when compiling your Jamstack site, but they also work well at runtime.",{"type":25,"tag":30,"props":121,"children":122},{},[123],{"type":34,"value":124},"Edge workers (as Cloudflare calls them) are pieces of code that live on the CDN edge close to the user and execute when a user visits a URL. This is ideal for reading cookie values and changing the stream of HTML that the CDN renders for that page. With this approach, you can dynamically manipulate what the user sees in their context while still serving a static page initially created by your Jamstack site. This approach is excellent for rendering personalised content based on user actions without the need for JavaScript hydration or an origin server.",{"type":25,"tag":30,"props":126,"children":127},{},[128],{"type":25,"tag":88,"props":129,"children":132},{"alt":130,"loading":91,"provider":92,"sizes":93,"src":131,"width":95},"Add dynamic parts to the Jamstack with serverless and edge compute","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfn819631e7mvnau8mwl.png",[],{"type":25,"tag":42,"props":134,"children":136},{"id":135},"the-orchestration-how-to-cable-manage-your-architecture",[137],{"type":34,"value":138},"The orchestration: how to cable manage your architecture",{"type":25,"tag":30,"props":140,"children":141},{},[142],{"type":34,"value":143},"How you connect things up before the site is rendered is vital for the platform you are building. There are many technical and organisational problems to address when you scale a composed architecture to big organisations.",{"type":25,"tag":145,"props":146,"children":147},"ul",{},[148,153,158,163,168],{"type":25,"tag":58,"props":149,"children":150},{},[151],{"type":34,"value":152},"Choices, choices, choices: CMS, Commerce, CDN, Marketing clouds, DAM, Personalization, A/B testing, CRM, etc.",{"type":25,"tag":58,"props":154,"children":155},{},[156],{"type":34,"value":157},"Integration is complex, and orchestration is hard to build.",{"type":25,"tag":58,"props":159,"children":160},{},[161],{"type":34,"value":162},"Often there is a lack of intuitive tools for non-devs to build and manage experiences.",{"type":25,"tag":58,"props":164,"children":165},{},[166],{"type":34,"value":167},"Early implementation decisions can limit the ability to change and evolve.",{"type":25,"tag":58,"props":169,"children":170},{},[171],{"type":34,"value":172},"Wrong choices can create developer bottlenecks and hinder time to market and agility.",{"type":25,"tag":30,"props":174,"children":175},{},[176,178],{"type":34,"value":177},"The bigger the organisation, the more critical this statement becomes: ",{"type":25,"tag":179,"props":180,"children":181},"em",{},[182],{"type":34,"value":183},"To achieve true value, you need to orchestrate technology, people, and processes.",{"type":25,"tag":30,"props":185,"children":186},{},[187],{"type":34,"value":188},"The digital pipeline can be stalled at many places. You’ll need a platform to help you orchestrate the whole architecture into a usable system for all stakeholders. A cohesive system has the ability for multiple systems to work together as one - for each system to have an awareness of what the other systems are doing. This same story goes for the practitioners in the system. From developers to content editors and from marketers to data analysts. All these people play a vital role in your online success.",{"type":25,"tag":190,"props":191,"children":193},"h3",{"id":192},"the-platform-we-need",[194],{"type":34,"value":195},"The platform we need",{"type":25,"tag":30,"props":197,"children":198},{},[199],{"type":34,"value":200},"The platform we need has to be “opinionless” and technology agnostic. Its primary goal is to cater to all stakeholders and prevent re-platforming.",{"type":25,"tag":26,"props":202,"children":203},{},[204],{"type":25,"tag":30,"props":205,"children":206},{},[207],{"type":34,"value":208},"Services integrators or agencies often use the “re-platform” model. Out with the old monolith and in with the new monolith. This way, they can sell their business transformation story and do a big bang release. The drawback here is that re-platforming takes a long time and is costly. It is also the complete opposite of an agile approach to a project. Agencies tend to be \"platform partners\" and sell in a platform first solution rather than a specific value solution to a brand. This is logical as they can hire specialists that retain their value project after project. However, modern architectures demand making choices for the business's needs, not what the agency or software vendors want to sell in. Square pegs and round holes could work for a while until it’s too hard to manage, and then you re-platform. Again…",{"type":25,"tag":30,"props":210,"children":211},{},[212],{"type":34,"value":213},"The orchestration platform should support end-to-end delivery of digital products:",{"type":25,"tag":145,"props":215,"children":216},{},[217,228,238,248],{"type":25,"tag":58,"props":218,"children":219},{},[220,226],{"type":25,"tag":221,"props":222,"children":223},"strong",{},[224],{"type":34,"value":225},"Development",{"type":34,"value":227},": developers build components that incorporate content from multiple sources without building custom integrations.",{"type":25,"tag":58,"props":229,"children":230},{},[231,236],{"type":25,"tag":221,"props":232,"children":233},{},[234],{"type":34,"value":235},"Authoring",{"type":34,"value":237},": practitioners build personalised digital experiences using no-code tools, including instant preview without involving developers.",{"type":25,"tag":58,"props":239,"children":240},{},[241,246],{"type":25,"tag":221,"props":242,"children":243},{},[244],{"type":34,"value":245},"Deployment",{"type":34,"value":247},": developer and practitioner activities automatically trigger deployments to your CDN of choice to ensure digital experiences are always current.",{"type":25,"tag":58,"props":249,"children":250},{},[251,256],{"type":25,"tag":221,"props":252,"children":253},{},[254],{"type":34,"value":255},"Delivery",{"type":34,"value":257},": Personalization and experimentation is delivered from the edge for the fastest possible performance.",{"type":25,"tag":30,"props":259,"children":260},{},[261],{"type":34,"value":262},"The key is the “power of choice” for the tech stack, hosting / CDN, data fetching and what integrations are used. The point is that you as a technical stakeholder can choose when to add, remove or scale something without being held back by the system. There is no vendor lock-in, roadmap constraints, and re-platforming (swap an integration, migrate the data, and change some data mapping code).",{"type":25,"tag":30,"props":264,"children":265},{},[266],{"type":25,"tag":88,"props":267,"children":270},{"alt":268,"loading":91,"provider":92,"sizes":93,"src":269,"width":95},"What a composable orchestration platform looks like","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zvs9u5inctpg4f7iiu9h.png",[],{"type":25,"tag":190,"props":272,"children":274},{"id":273},"data-fetching-approaches",[275],{"type":34,"value":276},"Data fetching approaches",{"type":25,"tag":30,"props":278,"children":279},{},[280],{"type":34,"value":281},"Flexibility in how data is fetched from different sources is vital for the longevity of an orchestration platform. The platform SDK should not apply any opinion on how data is fetched. It offers an SDK that helps developers fetch it the way they want.",{"type":25,"tag":30,"props":283,"children":284},{},[285],{"type":34,"value":286},"It’s essential that page compositions only point to data sources and that the platform itself does not store anything except for the identification of the component it references. The benefits are:",{"type":25,"tag":54,"props":288,"children":289},{},[290,295,300,305],{"type":25,"tag":58,"props":291,"children":292},{},[293],{"type":34,"value":294},"the platform doesn’t store potentially sensitive data;",{"type":25,"tag":58,"props":296,"children":297},{},[298],{"type":34,"value":299},"the platform doesn’t duplicate content;",{"type":25,"tag":58,"props":301,"children":302},{},[303],{"type":34,"value":304},"the platform doesn’t have to know when data changes in the external source;",{"type":25,"tag":58,"props":306,"children":307},{},[308],{"type":34,"value":309},"The platform does not have to serve the data and ingest the SLA provided by the source data it delivers.",{"type":25,"tag":30,"props":311,"children":312},{},[313],{"type":34,"value":314},"It’s up to the developer to use the platform SDK to retrieve the compositional data and use platform provided helper tools to query the different API endpoints. The beauty of this approach is that the SDK and how the data is fetched can live anywhere. From the local codebase to an external middleware layer or a serverless function. There are some benefits to positioning the data fetching outside of your codebase:",{"type":25,"tag":54,"props":316,"children":317},{},[318,323],{"type":25,"tag":58,"props":319,"children":320},{},[321],{"type":34,"value":322},"You can hire separate developers who only focus on the API and the data mapping to the desired format. This separates concerns between disciplines, and back-end developers now have a place where they can feel at home.",{"type":25,"tag":58,"props":324,"children":325},{},[326],{"type":34,"value":327},"The front-end application doesn’t need to know what external sources are queried. It queries one endpoint that returns the desired format for the front-end components to render.",{"type":25,"tag":30,"props":329,"children":330},{},[331],{"type":34,"value":332},"A standalone front-end without knowledge of what external APIs feed it is highly flexible, future-proof, and hard to hack. Imagine a design system full of components with excellent documentation of what properties they need and a simple SDK to query data and map it directly to these properties. If you have to switch CMS or commerce engine, it’s a matter of remapping the data to the component properties and you are done.",{"type":25,"tag":30,"props":334,"children":335},{},[336],{"type":25,"tag":88,"props":337,"children":340},{"alt":338,"loading":91,"provider":92,"sizes":93,"src":339,"width":95},"Data fetching in a composable orchestration platform","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u75kbivciz0ayqg3t7fd.png",[],{"type":25,"tag":42,"props":342,"children":344},{"id":343},"concluding",[345],{"type":34,"value":346},"Concluding",{"type":25,"tag":30,"props":348,"children":349},{},[350],{"type":34,"value":351},"To successfully manage your digital pipeline, we need orchestration that adds structure to the stack, making it easier to align API first sources toward the same business goal and empowering all of the various teams contributing to the end product - developers, content authors and marketers. To keep the digital pipeline productive as new technologies emerge, you need orchestration that gives freedom of choice in every aspect of the architecture both today and tomorrow.",{"type":25,"tag":30,"props":353,"children":354},{},[355],{"type":34,"value":356},"Imagine if marketers and developers could be friends again and work together to create the best experience for their website visitors?",{"title":7,"searchDepth":358,"depth":358,"links":359},2,[360,361,362,367],{"id":44,"depth":358,"text":47},{"id":75,"depth":358,"text":78},{"id":135,"depth":358,"text":138,"children":363},[364,366],{"id":192,"depth":365,"text":195},3,{"id":273,"depth":365,"text":276},{"id":343,"depth":358,"text":346},"markdown","content:4.writing:the-future-of-jamstack-is-composable.md","content","4.writing/the-future-of-jamstack-is-composable.md","md",[374,377,1169,1244,1480,1483,1486],{"title":375,"_path":376},"About","/about",{"title":378,"_path":379,"children":380},"videos","/videos",[381,400,419,465,466,518,621,644,666,994],{"title":382,"_path":383,"children":384},"Alive And Kicking","/videos/alive-and-kicking",[385,388,391,394,397],{"title":386,"_path":387},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":389,"_path":390},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":392,"_path":393},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":395,"_path":396},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":398,"_path":399},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":401,"_path":402,"children":403},"Headless Creator","/videos/headless-creator",[404,407,410,413,416],{"title":405,"_path":406},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":408,"_path":409},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":411,"_path":412},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":414,"_path":415},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":417,"_path":418},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":420,"_path":421,"children":422},"Hygraph","/videos/hygraph",[423,426,429,432,435,438,441,444,447,450,453,456,459,462],{"title":424,"_path":425},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":427,"_path":428},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":430,"_path":431},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":433,"_path":434},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":436,"_path":437},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":439,"_path":440},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":442,"_path":443},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":445,"_path":446},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":448,"_path":449},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":451,"_path":452},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":454,"_path":455},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":457,"_path":458},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":460,"_path":461},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":463,"_path":464},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":378,"_path":379},{"title":467,"_path":468,"children":469},"Live Hygraph","/videos/live-hygraph",[470,473,476,479,482,485,488,491,494,497,500,503,506,509,512,515],{"title":471,"_path":472},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":474,"_path":475},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":477,"_path":478},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":480,"_path":481},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":483,"_path":484},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":486,"_path":487},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":489,"_path":490},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":492,"_path":493},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":495,"_path":496},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":498,"_path":499},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":501,"_path":502},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":504,"_path":505},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":507,"_path":508},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":510,"_path":511},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":513,"_path":514},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":516,"_path":517},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":519,"_path":520,"children":521},"Live Uniform","/videos/live-uniform",[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],{"title":523,"_path":524},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":526,"_path":527},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":529,"_path":530},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":532,"_path":533},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":535,"_path":536},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":538,"_path":539},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":541,"_path":542},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":544,"_path":545},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":547,"_path":548},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":550,"_path":551},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":553,"_path":554},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":556,"_path":557},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":559,"_path":560},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":562,"_path":563},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":565,"_path":566},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":568,"_path":569},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":571,"_path":572},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":574,"_path":575},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":577,"_path":578},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":580,"_path":581},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":583,"_path":584},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":586,"_path":587},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":589,"_path":590},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":592,"_path":593},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":595,"_path":596},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":598,"_path":599},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":601,"_path":602},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":604,"_path":605},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":607,"_path":608},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":610,"_path":611},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":613,"_path":614},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":616,"_path":617},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":619,"_path":620},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":622,"_path":623,"children":624},"Misc Streams","/videos/misc-streams",[625,628,631,634,636,638,641],{"title":626,"_path":627},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":629,"_path":630},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":632,"_path":633},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":616,"_path":635},"/videos/misc-streams/003-jvgiaotcerq",{"title":607,"_path":637},"/videos/misc-streams/004-ekut1koa2n8",{"title":639,"_path":640},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":642,"_path":643},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":645,"_path":646,"children":647},"Mp","/videos/mp",[648,651,654,657,660,663],{"title":649,"_path":650},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":652,"_path":653},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":655,"_path":656},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":658,"_path":659},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":661,"_path":662},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":664,"_path":665},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":667,"_path":668,"children":669},"Tim","/videos/tim",[670,672,675,678,681,684,687,690,693,696,699,702,705,708,711,714,717,720,722,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,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,952,955,958,961,964,967,970,973,976,979,982,985,988,991],{"title":389,"_path":671},"/videos/tim/000-mvq-_s20ndk",{"title":673,"_path":674},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":676,"_path":677},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":679,"_path":680},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":682,"_path":683},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":685,"_path":686},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":688,"_path":689},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":691,"_path":692},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":694,"_path":695},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":697,"_path":698},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":700,"_path":701},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":703,"_path":704},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":706,"_path":707},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":709,"_path":710},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":712,"_path":713},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":715,"_path":716},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":718,"_path":719},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":392,"_path":721},"/videos/tim/017-m0mrligs6i0",{"title":386,"_path":723},"/videos/tim/018-hhpitreyobi",{"title":725,"_path":726},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":728,"_path":729},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":731,"_path":732},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":734,"_path":735},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":737,"_path":738},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":740,"_path":741},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":743,"_path":744},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":746,"_path":747},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":749,"_path":750},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":752,"_path":753},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":755,"_path":756},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":758,"_path":759},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":761,"_path":762},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":764,"_path":765},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":767,"_path":768},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":770,"_path":771},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":773,"_path":774},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":776,"_path":777},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":779,"_path":780},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":782,"_path":783},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":785,"_path":786},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":788,"_path":789},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":791,"_path":792},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":794,"_path":795},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":797,"_path":798},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":800,"_path":801},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":803,"_path":804},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":806,"_path":807},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":809,"_path":810},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":812,"_path":813},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":815,"_path":816},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":818,"_path":819},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":821,"_path":822},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":824,"_path":825},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":827,"_path":828},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":830,"_path":831},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":833,"_path":834},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":836,"_path":837},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":839,"_path":840},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":842,"_path":843},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":845,"_path":846},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":848,"_path":849},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":851,"_path":852},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":854,"_path":855},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":857,"_path":858},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":860,"_path":861},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":863,"_path":864},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":866,"_path":867},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":869,"_path":870},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":872,"_path":873},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":875,"_path":876},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":878,"_path":879},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":881,"_path":882},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":884,"_path":885},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":887,"_path":888},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":890,"_path":891},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":893,"_path":894},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":896,"_path":897},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":899,"_path":900},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":902,"_path":903},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":905,"_path":906},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":908,"_path":909},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":911,"_path":912},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":914,"_path":915},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":917,"_path":918},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":920,"_path":921},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":923,"_path":924},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":926,"_path":927},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":929,"_path":930},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":932,"_path":933},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":935,"_path":936},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":938,"_path":939},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":941,"_path":942},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":944,"_path":945},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":947,"_path":948},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":950,"_path":951},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":953,"_path":954},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":956,"_path":957},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":959,"_path":960},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":962,"_path":963},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":965,"_path":966},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":968,"_path":969},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":971,"_path":972},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":974,"_path":975},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":977,"_path":978},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":980,"_path":981},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":983,"_path":984},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":986,"_path":987},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":989,"_path":990},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":992,"_path":993},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":995,"_path":996,"children":997},"Uniform","/videos/uniform",[998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1160,1163,1166],{"title":999,"_path":1000},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":1002,"_path":1003},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":1005,"_path":1006},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":1008,"_path":1009},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":1011,"_path":1012},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":1014,"_path":1015},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":1017,"_path":1018},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1020,"_path":1021},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1023,"_path":1024},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1026,"_path":1027},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1029,"_path":1030},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1032,"_path":1033},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1035,"_path":1036},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1038,"_path":1039},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1041,"_path":1042},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1044,"_path":1045},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1047,"_path":1048},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1050,"_path":1051},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1053,"_path":1054},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1056,"_path":1057},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1059,"_path":1060},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1062,"_path":1063},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1065,"_path":1066},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1068,"_path":1069},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1071,"_path":1072},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1074,"_path":1075},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1077,"_path":1078},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1080,"_path":1081},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1083,"_path":1084},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1086,"_path":1087},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1089,"_path":1090},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1092,"_path":1093},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1095,"_path":1096},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1098,"_path":1099},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1101,"_path":1102},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1104,"_path":1105},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1107,"_path":1108},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1110,"_path":1111},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1113,"_path":1114},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1116,"_path":1117},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1119,"_path":1120},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1122,"_path":1123},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1125,"_path":1126},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1128,"_path":1129},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1131,"_path":1132},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1134,"_path":1135},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1137,"_path":1138},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1140,"_path":1141},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1143,"_path":1144},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1146,"_path":1147},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1149,"_path":1150},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1152,"_path":1153},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1155,"_path":1156},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1158,"_path":1159},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1161,"_path":1162},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1164,"_path":1165},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1167,"_path":1168},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1170,"_path":1171,"children":1172},"Writing","/writing",[1173,1176,1179,1182,1185,1188,1189,1192,1195,1198,1201,1204,1207,1210,1213,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241],{"title":1174,"_path":1175},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1177,"_path":1178},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1180,"_path":1181},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1183,"_path":1184},"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":1186,"_path":1187},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1170,"_path":1171},{"title":1190,"_path":1191},"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":1193,"_path":1194},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1196,"_path":1197},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1199,"_path":1200},"My Fitness Story","/writing/my-fitness-story",{"title":1202,"_path":1203},"New job alert!","/writing/new-job-alert",{"title":1205,"_path":1206},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1208,"_path":1209},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1211,"_path":1212},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":8,"_path":4},{"title":1215,"_path":1216},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1218,"_path":1219},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1221,"_path":1222},"The MACH monolith","/writing/the-mach-monolith",{"title":1224,"_path":1225},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1227,"_path":1228},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1230,"_path":1231},"This is headless 2.0","/writing/this-is-headless-20",{"title":1233,"_path":1234},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1236,"_path":1237},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1239,"_path":1240},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1242,"_path":1243},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1245,"_path":1246,"children":1247},"Speaking","/speaking",[1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1284,1287,1290,1293,1296,1299,1302,1305,1308,1311,1314,1317,1320,1323,1326,1329,1332,1335,1338,1341,1344,1347,1350,1353,1356,1359,1362,1365,1368,1371,1374,1377,1380,1383,1386,1389,1392,1395,1398,1401,1404,1407,1410,1413,1416,1419,1422,1425,1428,1431,1434,1437,1440,1443,1446,1449,1452,1455,1458,1461,1464,1467,1470,1473,1476,1479],{"title":1249,"_path":1250},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1252,"_path":1253},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1255,"_path":1256},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1258,"_path":1259},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1261,"_path":1262},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1264,"_path":1265},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1267,"_path":1268},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1270,"_path":1271},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1273,"_path":1274},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1276,"_path":1277},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1279,"_path":1280},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1282,"_path":1283},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1285,"_path":1286},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1288,"_path":1289},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1291,"_path":1292},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1294,"_path":1295},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1297,"_path":1298},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1300,"_path":1301},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1303,"_path":1304},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1306,"_path":1307},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1309,"_path":1310},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1312,"_path":1313},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1315,"_path":1316},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1318,"_path":1319},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1321,"_path":1322},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1324,"_path":1325},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1327,"_path":1328},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1330,"_path":1331},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1333,"_path":1334},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1336,"_path":1337},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1339,"_path":1340},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1342,"_path":1343},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1345,"_path":1346},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1348,"_path":1349},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1351,"_path":1352},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1354,"_path":1355},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1357,"_path":1358},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1360,"_path":1361},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1363,"_path":1364},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1366,"_path":1367},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1369,"_path":1370},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1372,"_path":1373},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1375,"_path":1376},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1378,"_path":1379},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1381,"_path":1382},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1384,"_path":1385},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1387,"_path":1388},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1390,"_path":1391},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1393,"_path":1394},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1396,"_path":1397},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1399,"_path":1400},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1402,"_path":1403},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1405,"_path":1406},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1408,"_path":1409},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1411,"_path":1412},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1414,"_path":1415},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1417,"_path":1418},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1420,"_path":1421},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1423,"_path":1424},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1426,"_path":1427},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1429,"_path":1430},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1432,"_path":1433},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1435,"_path":1436},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1438,"_path":1439},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1441,"_path":1442},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1444,"_path":1445},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1447,"_path":1448},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1450,"_path":1451},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1453,"_path":1454},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1456,"_path":1457},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1459,"_path":1460},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1462,"_path":1463},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1465,"_path":1466},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1468,"_path":1469},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1471,"_path":1472},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1474,"_path":1475},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1477,"_path":1478},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1245,"_path":1246},{"title":1481,"_path":1482},"live streams","/livestreams",{"title":1484,"_path":1485},"press kit","/presskit",{"title":1487,"_path":1488},"alive and kicking","/alive-and-kicking",1718484379881] \ No newline at end of file diff --git a/writing/the-future-of-jamstack-is-composable/index.html b/writing/the-future-of-jamstack-is-composable/index.html deleted file mode 100644 index 6e898ebe..00000000 --- a/writing/the-future-of-jamstack-is-composable/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - -The future of jamstack is composable - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The future of jamstack is composable

Feb 23, 2022 at https://dev.to/timbenniks/the-future-of-jamstack-is-composable-3m7g

This post is either for developers who want an “at-scale” overview of modern architecture or for technical decision-makers looking at a great way to build a digital pipeline in this new composable world.

In modern web architecture, we are faced with the daunting task of composing headless sources together into a cohesive experience that feels like one system for all stakeholders. Many consider the roadblocks to be technical, but they are also organisational. This is mainly because there is no more centre of the universe - the origin server - that controls everything. Headless sources are API-first and need to be integrated to create a website or app. Without an origin server, content editors, marketers and developers alike need to connect to different systems to get things done. Mildly put, this is a struggle and, in the words of actual people I’ve worked with: a dumpster fire.

In this article

You will learn about the two things you need to create high quality, easy to manage, secure and performant front-ends that don't make a bespoke architecture or a monolith of modern tech.

  1. Use the Jamstack with your favourite framework and host on your favourite CDN.
  2. Behind it all, you have an orchestration platform that is vendor agnostic, has a killer SDK and gives all team members the ability to compose content without bothering developers.

Combining these two things will make your digital pipeline run smoothly and future proof the investments made. You can add legacy platforms as data sources if you have the right orchestration platform. You can slowly but surely transition away from them without doing a big-bang change offering big brands a safe path into the future.

The Jamstack: why it sits front and centre in modern architectures

Sites built with the Jamstack approach are a combination of static files generated by the CI/CD pipeline of your choice. Most dynamic stuff happens in the generation step, where the codebase reaches out to APIs and services to render all pages statically.

Jamstack: build time vs runtime

The performance gains alone justify this approach. There is no runtime page generation, and the app doesn’t have to connect to an origin server to figure out what content to serve. If you want to scale up for Black Friday, just put the static files in more places on the CDN edge, and all is well. Next to the performance gains, you also have a much more secure system. If your architecture has an origin server with all the knowledge of the system, that is a weak point for security.

Traditional web vs Jamstack

You can add dynamic data as well. CDN providers have built the ability to run code on the edge, implementing serverless functions and edge workers.

A serverless function is a service that lets you run code without provisioning or managing servers. Serverless functions tend to be simple and do not have a state. They require an input, and they will give an output. After use, they will not stay up unless you request them to do that. The benefit is that the cost is low and that these functions are not running if not needed - consuming less energy. You can use them when compiling your Jamstack site, but they also work well at runtime.

Edge workers (as Cloudflare calls them) are pieces of code that live on the CDN edge close to the user and execute when a user visits a URL. This is ideal for reading cookie values and changing the stream of HTML that the CDN renders for that page. With this approach, you can dynamically manipulate what the user sees in their context while still serving a static page initially created by your Jamstack site. This approach is excellent for rendering personalised content based on user actions without the need for JavaScript hydration or an origin server.

Add dynamic parts to the Jamstack with serverless and edge compute

The orchestration: how to cable manage your architecture

How you connect things up before the site is rendered is vital for the platform you are building. There are many technical and organisational problems to address when you scale a composed architecture to big organisations.

  • Choices, choices, choices: CMS, Commerce, CDN, Marketing clouds, DAM, Personalization, A/B testing, CRM, etc.
  • Integration is complex, and orchestration is hard to build.
  • Often there is a lack of intuitive tools for non-devs to build and manage experiences.
  • Early implementation decisions can limit the ability to change and evolve.
  • Wrong choices can create developer bottlenecks and hinder time to market and agility.

The bigger the organisation, the more critical this statement becomes: To achieve true value, you need to orchestrate technology, people, and processes.

The digital pipeline can be stalled at many places. You’ll need a platform to help you orchestrate the whole architecture into a usable system for all stakeholders. A cohesive system has the ability for multiple systems to work together as one - for each system to have an awareness of what the other systems are doing. This same story goes for the practitioners in the system. From developers to content editors and from marketers to data analysts. All these people play a vital role in your online success.

The platform we need

The platform we need has to be “opinionless” and technology agnostic. Its primary goal is to cater to all stakeholders and prevent re-platforming.

Services integrators or agencies often use the “re-platform” model. Out with the old monolith and in with the new monolith. This way, they can sell their business transformation story and do a big bang release. The drawback here is that re-platforming takes a long time and is costly. It is also the complete opposite of an agile approach to a project. Agencies tend to be "platform partners" and sell in a platform first solution rather than a specific value solution to a brand. This is logical as they can hire specialists that retain their value project after project. However, modern architectures demand making choices for the business's needs, not what the agency or software vendors want to sell in. Square pegs and round holes could work for a while until it’s too hard to manage, and then you re-platform. Again…

The orchestration platform should support end-to-end delivery of digital products:

  • Development: developers build components that incorporate content from multiple sources without building custom integrations.
  • Authoring: practitioners build personalised digital experiences using no-code tools, including instant preview without involving developers.
  • Deployment: developer and practitioner activities automatically trigger deployments to your CDN of choice to ensure digital experiences are always current.
  • Delivery: Personalization and experimentation is delivered from the edge for the fastest possible performance.

The key is the “power of choice” for the tech stack, hosting / CDN, data fetching and what integrations are used. The point is that you as a technical stakeholder can choose when to add, remove or scale something without being held back by the system. There is no vendor lock-in, roadmap constraints, and re-platforming (swap an integration, migrate the data, and change some data mapping code).

What a composable orchestration platform looks like

Data fetching approaches

Flexibility in how data is fetched from different sources is vital for the longevity of an orchestration platform. The platform SDK should not apply any opinion on how data is fetched. It offers an SDK that helps developers fetch it the way they want.

It’s essential that page compositions only point to data sources and that the platform itself does not store anything except for the identification of the component it references. The benefits are:

  1. the platform doesn’t store potentially sensitive data;
  2. the platform doesn’t duplicate content;
  3. the platform doesn’t have to know when data changes in the external source;
  4. The platform does not have to serve the data and ingest the SLA provided by the source data it delivers.

It’s up to the developer to use the platform SDK to retrieve the compositional data and use platform provided helper tools to query the different API endpoints. The beauty of this approach is that the SDK and how the data is fetched can live anywhere. From the local codebase to an external middleware layer or a serverless function. There are some benefits to positioning the data fetching outside of your codebase:

  1. You can hire separate developers who only focus on the API and the data mapping to the desired format. This separates concerns between disciplines, and back-end developers now have a place where they can feel at home.
  2. The front-end application doesn’t need to know what external sources are queried. It queries one endpoint that returns the desired format for the front-end components to render.

A standalone front-end without knowledge of what external APIs feed it is highly flexible, future-proof, and hard to hack. Imagine a design system full of components with excellent documentation of what properties they need and a simple SDK to query data and map it directly to these properties. If you have to switch CMS or commerce engine, it’s a matter of remapping the data to the component properties and you are done.

Data fetching in a composable orchestration platform

Concluding

To successfully manage your digital pipeline, we need orchestration that adds structure to the stack, making it easier to align API first sources toward the same business goal and empowering all of the various teams contributing to the end product - developers, content authors and marketers. To keep the digital pipeline productive as new technologies emerge, you need orchestration that gives freedom of choice in every aspect of the architecture both today and tomorrow.

Imagine if marketers and developers could be friends again and work together to create the best experience for their website visitors?

- \ No newline at end of file diff --git a/writing/the-future-of-managing-projects-at-agencie/_payload.json b/writing/the-future-of-managing-projects-at-agencie/_payload.json deleted file mode 100644 index 50f1cbf9..00000000 --- a/writing/the-future-of-managing-projects-at-agencie/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1391},["Reactive",2],{"content-query-ZElZkMwRad":3,"content-navigation-8C37fagqQL":275},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":270,"_id":271,"_source":272,"_file":273,"_extension":274},"/writing/the-future-of-managing-projects-at-agencie","writing",false,"","The future of managing projects at agencies","Calling for a revolution in how agencies run tech projects I spent a lot of time working...",1405725,"the-future-of-managing-projects-at-agencie","2023-03-18T12:56:10Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipu6a76iegjp4d19mb0u.png","https://uniform.dev/blogs/composable-architecture/the-future-of-managing-projects-at-agencies",[16,17,18,19],"composable","architecture","agency","process",22300,{"type":22,"children":23,"toc":260},"root",[24,33,39,44,49,65,70,77,82,88,93,126,131,136,141,146,160,165,170,175,180,185,191,214,219,224,230,235,240,245,250,255],{"type":25,"tag":26,"props":27,"children":29},"element","h2",{"id":28},"calling-for-a-revolution-in-how-agencies-run-tech-projects",[30],{"type":31,"value":32},"text","Calling for a revolution in how agencies run tech projects",{"type":25,"tag":34,"props":35,"children":36},"p",{},[37],{"type":31,"value":38},"I spent a lot of time working through messy production processes during my years at digital agencies. From single campaigns to building 800+ websites for a brand and its sub-brands, easier processes would have been better for the final result and my hairline. I’m so excited to work with new technology that will change the game for managing agency processes—making everything from delivery to collaboration much easier and faster.",{"type":25,"tag":34,"props":40,"children":41},{},[42],{"type":31,"value":43},"I have no illusions that I can fix everything—but I hope that you read this with an open mind and see that a better way is possible. Agency processes are ever-changing, and things always seem to fall apart as deadlines near. Nonetheless, by following what I describe below, you can deliver faster from day one and show results to clients for better feedback, all while setting up brands with a future-proof architecture. And yes, you can stay agile at the same time!",{"type":25,"tag":34,"props":45,"children":46},{},[47],{"type":31,"value":48},"##Why agencies embracing composable architectures face challenges",{"type":25,"tag":34,"props":50,"children":51},{},[52,54,63],{"type":31,"value":53},"Agencies that start working with ",{"type":25,"tag":55,"props":56,"children":60},"a",{"href":57,"rel":58},"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how",[59],"nofollow",[61],{"type":31,"value":62},"composable architectures",{"type":31,"value":64}," quickly see the benefits during the pitch stage, but when the work starts, so do the problems—mainly when you connect services and when content editors or marketers start working. Because projects are complex, agencies generally sell discovery phases, workshops, and agile methodologies. That’s a great practice, but one that also runs face-first into the challenge of building composable projects at scale.",{"type":25,"tag":34,"props":66,"children":67},{},[68],{"type":31,"value":69},"Here are two key issues:",{"type":25,"tag":71,"props":72,"children":74},"h3",{"id":73},"the-way-agencies-work-makes-parallel-collaboration-difficult",[75],{"type":31,"value":76},"The way agencies work makes parallel collaboration difficult.",{"type":25,"tag":34,"props":78,"children":79},{},[80],{"type":31,"value":81},"For example, choosing a CMS or front-end framework depends on the discovery phase or finalization of a client contract. When a CMS or a design is ready, front-end developers can start building the interface, and back-end developers can commence data modeling. QA always happens at the end, inevitably spilling over into the next sprint.",{"type":25,"tag":71,"props":83,"children":85},{"id":84},"the-architecture-is-code-first-ie-composed-of-glue-code-that-works-in-only-one-way",[86],{"type":31,"value":87},"The architecture is code-first, i.e., composed of glue code that works in only one way.",{"type":25,"tag":34,"props":89,"children":90},{},[91],{"type":31,"value":92},"As you scale that up, things get very painful very fast. ",{"type":25,"tag":94,"props":95,"children":96},"ol",{},[97,103,108,113],{"type":25,"tag":98,"props":99,"children":100},"li",{},[101],{"type":31,"value":102},"Abstract, code-first systems aren’t built for content editors. At best, they tolerate them. Given that it’s hard to deliver great work while constantly fighting with your own tools, people become upset and less productive, or they leave. Either result can cause major project delays.",{"type":25,"tag":98,"props":104,"children":105},{},[106],{"type":31,"value":107},"Developers are constantly involved with the publication process because content editors need technical support to create experiences. That means that developers are kept from building new, value-adding features and pursuing innovation, and every sprint is filled with unpredictable disruption.",{"type":25,"tag":98,"props":109,"children":110},{},[111],{"type":31,"value":112},"A tech stack connected through tightly-coupled integration code is way worse than the legacy monoliths. If things go wrong, no sole organization is at fault. Instead, the people with the overall responsibility—the agency—are held accountable.",{"type":25,"tag":98,"props":114,"children":115},{},[116,118,124],{"type":31,"value":117},"That glue code I mentioned before? It sticks ",{"type":25,"tag":119,"props":120,"children":121},"em",{},[122],{"type":31,"value":123},"hard",{"type":31,"value":125},". You must prepare for pain when you try to replace a single headless source in a web of hard-integrated sources and front-end code. ",{"type":25,"tag":34,"props":127,"children":128},{},[129],{"type":31,"value":130},"There is a better way, but it requires a major shift in your thinking.",{"type":25,"tag":34,"props":132,"children":133},{},[134],{"type":31,"value":135},"##How a great DXCP unlocks parallel workflows",{"type":25,"tag":34,"props":137,"children":138},{},[139],{"type":31,"value":140},"Time-to-value is much more critical than time-to-market. Going to market quickly with a terrible product doesn’t do much more than damage your reputation and annoy customers. The fact you least did it quickly won’t be much consolation to anyone.",{"type":25,"tag":34,"props":142,"children":143},{},[144],{"type":31,"value":145},"The secret for time to value is working more in parallel. Of course, that’s much easier said than done for difficult tasks like ideation of page composition, component definition, data-model design, CI/CD setup, and, concurrently, choice of the front-end framework. Fortunately, cool new tools are around to make it much easier. ",{"type":25,"tag":34,"props":147,"children":148},{},[149,151,158],{"type":31,"value":150},"To work in parallel, first, integrate design-related data into your process with a ",{"type":25,"tag":55,"props":152,"children":155},{"href":153,"rel":154},"https://uniform.dev/what-is-digital-experience-composition",[59],[156],{"type":31,"value":157},"digital experience composition platform (DXCP)",{"type":31,"value":159},". Design data presents your content in a certain way in the context of each page and potentially for each audience. For example, a featured product shows as being featured because you tell the page to feature it in that specific way.",{"type":25,"tag":34,"props":161,"children":162},{},[163],{"type":31,"value":164},"On the other hand, the product data comes from your commerce engine, which just serves the product info and has no knowledge of whether the product is featured on a page. The DXCP orchestrates and links your design to the external source(s) that hold your data. This crucial context step allows you to work effectively in parallel.",{"type":25,"tag":34,"props":166,"children":167},{},[168],{"type":31,"value":169},"Note the difference between domain data and design data. With a DXCP, you design pages based on the components that make up a page. You can link each component to a resource, i.e., an external API like a headless CMS, DAM, PIM, or a legacy system. Your domain data resides in those systems. You then bind the external API data to parameters and fields on the components in the DXCP to create the final experience for your audience on a channel.",{"type":25,"tag":34,"props":171,"children":172},{},[173],{"type":31,"value":174},"You can set up connections with DXCP so that the system acts as an API data aggregator that loosely couples to external sources. Additionally, you can establish access rules that define which users can add resources and bind to components. For example, content editors could add the Instagram API and feed that data to a component for campaign pages without developer assistance. ",{"type":25,"tag":34,"props":176,"children":177},{},[178],{"type":31,"value":179},"Once resources are bound, API results are cached at the CDN edge for fast and easy querying. Developers only need to connect to the CDN endpoint to access the data from all the sources that channel data to the components on the page.",{"type":25,"tag":34,"props":181,"children":182},{},[183],{"type":31,"value":184},"Even without a CMS, content editors can fill in the component fields with content, accelerating the UX and prototyping phases of a project. Once a CMS is in place, the content connects as a resource to a component without the need to rebuild the component. For efficiency, you can configure the fields to be dynamic. No coding is required.",{"type":25,"tag":71,"props":186,"children":188},{"id":187},"how-a-dxcp-enables-parallel-collaboration",[189],{"type":31,"value":190},"How a DXCP enables parallel collaboration",{"type":25,"tag":34,"props":192,"children":193},{},[194,196,203,205,212],{"type":31,"value":195},"If you know what kind of components you need or have a library like ",{"type":25,"tag":55,"props":197,"children":200},{"href":198,"rel":199},"https://www.kickstartds.com/",[59],[201],{"type":31,"value":202},"kickstartDS",{"type":31,"value":204}," or ",{"type":25,"tag":55,"props":206,"children":209},{"href":207,"rel":208},"https://tailwindui.com/",[59],[210],{"type":31,"value":211},"Tailwind UI",{"type":31,"value":213},", you can configure them in the DXCP and start composing pages—with no need for a CMS initially. Simultaneously, the back-end team can select the headless tool while the front-end team can choose a front-end framework and start querying the composed pages. The QA team can start testing the front end as soon as the first few pages have been created with the component library.",{"type":25,"tag":34,"props":215,"children":216},{},[217],{"type":31,"value":218},"Since the DXCP does not dictate what kind of hosting or CI/CD stack is needed, the DevOps team can work on the setup while the rest of the process is proceeding. Once you install the CDN integration, anyone with the appropriate access privileges can handle releases. Can’t find the prebuilt integration? Build your own, or just add a few webhooks for communication.",{"type":25,"tag":34,"props":220,"children":221},{},[222],{"type":31,"value":223},"On top of that, DXCPs also feature a project map as a basis for creating pages and subpages. The product owner can start building user journeys in the same system while all the other operations are going on. Say goodbye to journey spreadsheets because you can now use the tool you will also use when teh project is in production.",{"type":25,"tag":71,"props":225,"children":227},{"id":226},"how-to-ensure-the-architecture-is-divisible-and-maintainable",[228],{"type":31,"value":229},"How to ensure the architecture is divisible and maintainable",{"type":25,"tag":34,"props":231,"children":232},{},[233],{"type":31,"value":234},"Due to the nature of DXCP, you don’t need to interconnect external tools; they all talk directly to the DXCP. Likewise, changing or adding headless sources does not affect developers in nearly the same way. Without developer involvement in the no-code editor, universal previews, and project maps, content editors are much more productive. Business users don’t need to ‘publish and pray’ when they build a page from multiple sources—it’s all right there.",{"type":25,"tag":34,"props":236,"children":237},{},[238],{"type":31,"value":239},"Moreover, since the no-code editor integrates flawlessly with external sources and normalizes their interfaces, content editors don’t need to understand how those systems work—making it far easier to onboard new team members. Add that to the freedom of grouping components together and easily personalizing those sources; business users are empowered to own their workflows and results without depending on overworked devs. ",{"type":25,"tag":34,"props":241,"children":242},{},[243],{"type":31,"value":244},"Given that DXCP is front-end, hosting, and CDN agnostic, developers can use the tools they love, which makes the most sense for the job at hand. No more compromising with the whims of legacy tech! Even though DXCP has an opinion on the direction of the architecture, once developers go down that road, they have complete freedom to do their job in the way they prefer.",{"type":25,"tag":34,"props":246,"children":247},{},[248],{"type":31,"value":249},"##How DXCP transforms the project-development process",{"type":25,"tag":34,"props":251,"children":252},{},[253],{"type":31,"value":254},"Adopting DXCP can revolutionize how you build projects—if you let it. With traditional blockers out of the way, teams can accomplish more in parallel and show value much faster. For all that composable architecture at scale is generally messy and chaotic, forcing agencies and brands to work around issues never seen before: digital experience composition adds structure while staying tech-agnostic and accelerates time-to-value.",{"type":25,"tag":34,"props":256,"children":257},{},[258],{"type":31,"value":259},"No matter how much things change, some things stay the same. The agencies that best embrace new technologies and new mindsets to maximize their impact will gain an edge in the market. As the market gets less certain, finding ways to deliver more value for clients faster and effectively showcase it will be crucial. When that also creates a platform that will deliver in the long term and position your agency as a key strategic partner—that’s where the magic happens. ",{"title":7,"searchDepth":261,"depth":261,"links":262},2,[263],{"id":28,"depth":261,"text":32,"children":264},[265,267,268,269],{"id":73,"depth":266,"text":76},3,{"id":84,"depth":266,"text":87},{"id":187,"depth":266,"text":190},{"id":226,"depth":266,"text":229},"markdown","content:4.writing:the-future-of-managing-projects-at-agencie.md","content","4.writing/the-future-of-managing-projects-at-agencie.md","md",[276,279,1071,1146,1382,1385,1388],{"title":277,"_path":278},"About","/about",{"title":280,"_path":281,"children":282},"videos","/videos",[283,302,321,367,368,420,523,546,568,896],{"title":284,"_path":285,"children":286},"Alive And Kicking","/videos/alive-and-kicking",[287,290,293,296,299],{"title":288,"_path":289},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":291,"_path":292},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":294,"_path":295},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":297,"_path":298},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":300,"_path":301},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":303,"_path":304,"children":305},"Headless Creator","/videos/headless-creator",[306,309,312,315,318],{"title":307,"_path":308},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":310,"_path":311},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":313,"_path":314},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":316,"_path":317},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":319,"_path":320},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":322,"_path":323,"children":324},"Hygraph","/videos/hygraph",[325,328,331,334,337,340,343,346,349,352,355,358,361,364],{"title":326,"_path":327},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":329,"_path":330},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":332,"_path":333},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":335,"_path":336},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":338,"_path":339},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":341,"_path":342},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":344,"_path":345},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":347,"_path":348},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":350,"_path":351},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":353,"_path":354},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":356,"_path":357},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":359,"_path":360},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":362,"_path":363},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":365,"_path":366},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":280,"_path":281},{"title":369,"_path":370,"children":371},"Live Hygraph","/videos/live-hygraph",[372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417],{"title":373,"_path":374},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":376,"_path":377},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":379,"_path":380},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":382,"_path":383},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":385,"_path":386},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":388,"_path":389},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":391,"_path":392},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":394,"_path":395},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":397,"_path":398},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":400,"_path":401},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":403,"_path":404},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":406,"_path":407},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":409,"_path":410},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":412,"_path":413},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":415,"_path":416},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":418,"_path":419},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":421,"_path":422,"children":423},"Live Uniform","/videos/live-uniform",[424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496,499,502,505,508,511,514,517,520],{"title":425,"_path":426},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":428,"_path":429},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":431,"_path":432},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":434,"_path":435},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":437,"_path":438},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":440,"_path":441},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":443,"_path":444},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":446,"_path":447},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":449,"_path":450},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":452,"_path":453},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":455,"_path":456},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":458,"_path":459},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":461,"_path":462},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":464,"_path":465},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":467,"_path":468},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":470,"_path":471},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":473,"_path":474},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":476,"_path":477},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":479,"_path":480},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":482,"_path":483},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":485,"_path":486},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":488,"_path":489},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":491,"_path":492},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":494,"_path":495},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":497,"_path":498},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":500,"_path":501},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":503,"_path":504},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":506,"_path":507},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":509,"_path":510},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":512,"_path":513},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":515,"_path":516},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":518,"_path":519},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":521,"_path":522},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":524,"_path":525,"children":526},"Misc Streams","/videos/misc-streams",[527,530,533,536,538,540,543],{"title":528,"_path":529},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":531,"_path":532},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":534,"_path":535},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":518,"_path":537},"/videos/misc-streams/003-jvgiaotcerq",{"title":509,"_path":539},"/videos/misc-streams/004-ekut1koa2n8",{"title":541,"_path":542},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":544,"_path":545},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":547,"_path":548,"children":549},"Mp","/videos/mp",[550,553,556,559,562,565],{"title":551,"_path":552},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":554,"_path":555},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":557,"_path":558},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":560,"_path":561},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":563,"_path":564},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":566,"_path":567},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":569,"_path":570,"children":571},"Tim","/videos/tim",[572,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,624,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893],{"title":291,"_path":573},"/videos/tim/000-mvq-_s20ndk",{"title":575,"_path":576},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":578,"_path":579},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":581,"_path":582},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":584,"_path":585},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":587,"_path":588},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":590,"_path":591},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":593,"_path":594},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":596,"_path":597},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":599,"_path":600},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":602,"_path":603},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":605,"_path":606},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":608,"_path":609},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":611,"_path":612},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":614,"_path":615},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":617,"_path":618},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":620,"_path":621},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":294,"_path":623},"/videos/tim/017-m0mrligs6i0",{"title":288,"_path":625},"/videos/tim/018-hhpitreyobi",{"title":627,"_path":628},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":630,"_path":631},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":633,"_path":634},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":636,"_path":637},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":639,"_path":640},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":642,"_path":643},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":645,"_path":646},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":648,"_path":649},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":651,"_path":652},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":654,"_path":655},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":657,"_path":658},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":660,"_path":661},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":663,"_path":664},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":666,"_path":667},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":669,"_path":670},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":672,"_path":673},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":675,"_path":676},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":678,"_path":679},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":681,"_path":682},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":684,"_path":685},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":687,"_path":688},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":690,"_path":691},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":693,"_path":694},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":696,"_path":697},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":699,"_path":700},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":702,"_path":703},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":705,"_path":706},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":708,"_path":709},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":711,"_path":712},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":714,"_path":715},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":717,"_path":718},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":720,"_path":721},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":723,"_path":724},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":726,"_path":727},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":729,"_path":730},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":732,"_path":733},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":735,"_path":736},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":738,"_path":739},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":741,"_path":742},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":744,"_path":745},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":747,"_path":748},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":750,"_path":751},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":753,"_path":754},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":756,"_path":757},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":759,"_path":760},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":762,"_path":763},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":765,"_path":766},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":768,"_path":769},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":771,"_path":772},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":774,"_path":775},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":777,"_path":778},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":780,"_path":781},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":783,"_path":784},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":786,"_path":787},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":789,"_path":790},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":792,"_path":793},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":795,"_path":796},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":798,"_path":799},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":801,"_path":802},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":804,"_path":805},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":807,"_path":808},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":810,"_path":811},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":813,"_path":814},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":816,"_path":817},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":819,"_path":820},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":822,"_path":823},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":825,"_path":826},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":828,"_path":829},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":831,"_path":832},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":834,"_path":835},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":837,"_path":838},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":840,"_path":841},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":843,"_path":844},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":846,"_path":847},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":849,"_path":850},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":852,"_path":853},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":855,"_path":856},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":858,"_path":859},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":861,"_path":862},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":864,"_path":865},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":867,"_path":868},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":870,"_path":871},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":873,"_path":874},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":876,"_path":877},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":879,"_path":880},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":882,"_path":883},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":885,"_path":886},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":888,"_path":889},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":891,"_path":892},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":894,"_path":895},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":897,"_path":898,"children":899},"Uniform","/videos/uniform",[900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068],{"title":901,"_path":902},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":904,"_path":905},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":907,"_path":908},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":910,"_path":911},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":913,"_path":914},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":916,"_path":917},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":919,"_path":920},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":922,"_path":923},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":925,"_path":926},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":928,"_path":929},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":931,"_path":932},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":934,"_path":935},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":937,"_path":938},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":940,"_path":941},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":943,"_path":944},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":946,"_path":947},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":949,"_path":950},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":952,"_path":953},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":955,"_path":956},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":958,"_path":959},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":961,"_path":962},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":964,"_path":965},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":967,"_path":968},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":970,"_path":971},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":973,"_path":974},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":976,"_path":977},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":979,"_path":980},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":982,"_path":983},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":985,"_path":986},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":988,"_path":989},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":991,"_path":992},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":994,"_path":995},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":997,"_path":998},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1000,"_path":1001},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1003,"_path":1004},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1006,"_path":1007},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1009,"_path":1010},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1012,"_path":1013},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1015,"_path":1016},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1018,"_path":1019},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1021,"_path":1022},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1024,"_path":1025},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1027,"_path":1028},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1030,"_path":1031},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1033,"_path":1034},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1036,"_path":1037},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1039,"_path":1040},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1042,"_path":1043},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1045,"_path":1046},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1048,"_path":1049},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1051,"_path":1052},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1054,"_path":1055},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1057,"_path":1058},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1060,"_path":1061},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1063,"_path":1064},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1066,"_path":1067},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1069,"_path":1070},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1072,"_path":1073,"children":1074},"Writing","/writing",[1075,1078,1081,1084,1087,1090,1091,1094,1097,1100,1103,1106,1109,1112,1115,1118,1119,1122,1125,1128,1131,1134,1137,1140,1143],{"title":1076,"_path":1077},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1079,"_path":1080},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1082,"_path":1083},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1085,"_path":1086},"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":1088,"_path":1089},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1072,"_path":1073},{"title":1092,"_path":1093},"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":1095,"_path":1096},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1098,"_path":1099},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1101,"_path":1102},"My Fitness Story","/writing/my-fitness-story",{"title":1104,"_path":1105},"New job alert!","/writing/new-job-alert",{"title":1107,"_path":1108},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1110,"_path":1111},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1113,"_path":1114},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1116,"_path":1117},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":8,"_path":4},{"title":1120,"_path":1121},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1123,"_path":1124},"The MACH monolith","/writing/the-mach-monolith",{"title":1126,"_path":1127},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1129,"_path":1130},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1132,"_path":1133},"This is headless 2.0","/writing/this-is-headless-20",{"title":1135,"_path":1136},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1138,"_path":1139},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1141,"_path":1142},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1144,"_path":1145},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1147,"_path":1148,"children":1149},"Speaking","/speaking",[1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381],{"title":1151,"_path":1152},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1154,"_path":1155},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1157,"_path":1158},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1160,"_path":1161},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1163,"_path":1164},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1166,"_path":1167},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1169,"_path":1170},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1172,"_path":1173},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1175,"_path":1176},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1178,"_path":1179},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1181,"_path":1182},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1184,"_path":1185},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1187,"_path":1188},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1190,"_path":1191},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1193,"_path":1194},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1196,"_path":1197},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1199,"_path":1200},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1202,"_path":1203},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1205,"_path":1206},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1208,"_path":1209},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1211,"_path":1212},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1214,"_path":1215},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1217,"_path":1218},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1220,"_path":1221},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1223,"_path":1224},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1226,"_path":1227},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1229,"_path":1230},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1232,"_path":1233},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1235,"_path":1236},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1238,"_path":1239},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1241,"_path":1242},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1244,"_path":1245},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1247,"_path":1248},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1250,"_path":1251},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1253,"_path":1254},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1256,"_path":1257},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1259,"_path":1260},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1262,"_path":1263},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1265,"_path":1266},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1268,"_path":1269},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1271,"_path":1272},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1274,"_path":1275},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1277,"_path":1278},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1280,"_path":1281},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1283,"_path":1284},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1286,"_path":1287},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1289,"_path":1290},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1292,"_path":1293},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1295,"_path":1296},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1298,"_path":1299},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1301,"_path":1302},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1304,"_path":1305},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1307,"_path":1308},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1310,"_path":1311},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1313,"_path":1314},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1316,"_path":1317},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1319,"_path":1320},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1322,"_path":1323},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1325,"_path":1326},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1328,"_path":1329},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1331,"_path":1332},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1334,"_path":1335},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1337,"_path":1338},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1340,"_path":1341},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1343,"_path":1344},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1346,"_path":1347},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1349,"_path":1350},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1352,"_path":1353},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1355,"_path":1356},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1358,"_path":1359},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1361,"_path":1362},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1364,"_path":1365},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1367,"_path":1368},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1370,"_path":1371},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1373,"_path":1374},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1376,"_path":1377},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1379,"_path":1380},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1147,"_path":1148},{"title":1383,"_path":1384},"live streams","/livestreams",{"title":1386,"_path":1387},"press kit","/presskit",{"title":1389,"_path":1390},"alive and kicking","/alive-and-kicking",1718484379813] \ No newline at end of file diff --git a/writing/the-future-of-managing-projects-at-agencie/index.html b/writing/the-future-of-managing-projects-at-agencie/index.html deleted file mode 100644 index c3ad3b77..00000000 --- a/writing/the-future-of-managing-projects-at-agencie/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - -The future of managing projects at agencies - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The future of managing projects at agencies

Mar 18, 2023 at https://uniform.dev/blogs/composable-architecture/the-future-of-managing-projects-at-agencies

Calling for a revolution in how agencies run tech projects

I spent a lot of time working through messy production processes during my years at digital agencies. From single campaigns to building 800+ websites for a brand and its sub-brands, easier processes would have been better for the final result and my hairline. I’m so excited to work with new technology that will change the game for managing agency processes—making everything from delivery to collaboration much easier and faster.

I have no illusions that I can fix everything—but I hope that you read this with an open mind and see that a better way is possible. Agency processes are ever-changing, and things always seem to fall apart as deadlines near. Nonetheless, by following what I describe below, you can deliver faster from day one and show results to clients for better feedback, all while setting up brands with a future-proof architecture. And yes, you can stay agile at the same time!

##Why agencies embracing composable architectures face challenges

Agencies that start working with composable architectures quickly see the benefits during the pitch stage, but when the work starts, so do the problems—mainly when you connect services and when content editors or marketers start working. Because projects are complex, agencies generally sell discovery phases, workshops, and agile methodologies. That’s a great practice, but one that also runs face-first into the challenge of building composable projects at scale.

Here are two key issues:

The way agencies work makes parallel collaboration difficult.

For example, choosing a CMS or front-end framework depends on the discovery phase or finalization of a client contract. When a CMS or a design is ready, front-end developers can start building the interface, and back-end developers can commence data modeling. QA always happens at the end, inevitably spilling over into the next sprint.

The architecture is code-first, i.e., composed of glue code that works in only one way.

As you scale that up, things get very painful very fast. 

  1. Abstract, code-first systems aren’t built for content editors. At best, they tolerate them. Given that it’s hard to deliver great work while constantly fighting with your own tools, people become upset and less productive, or they leave. Either result can cause major project delays.
  2. Developers are constantly involved with the publication process because content editors need technical support to create experiences. That means that developers are kept from building new, value-adding features and pursuing innovation, and every sprint is filled with unpredictable disruption.
  3. A tech stack connected through tightly-coupled integration code is way worse than the legacy monoliths. If things go wrong, no sole organization is at fault. Instead, the people with the overall responsibility—the agency—are held accountable.
  4. That glue code I mentioned before? It sticks hard. You must prepare for pain when you try to replace a single headless source in a web of hard-integrated sources and front-end code. 

There is a better way, but it requires a major shift in your thinking.

##How a great DXCP unlocks parallel workflows

Time-to-value is much more critical than time-to-market. Going to market quickly with a terrible product doesn’t do much more than damage your reputation and annoy customers. The fact you least did it quickly won’t be much consolation to anyone.

The secret for time to value is working more in parallel. Of course, that’s much easier said than done for difficult tasks like ideation of page composition, component definition, data-model design, CI/CD setup, and, concurrently, choice of the front-end framework. Fortunately, cool new tools are around to make it much easier. 

To work in parallel, first, integrate design-related data into your process with a digital experience composition platform (DXCP). Design data presents your content in a certain way in the context of each page and potentially for each audience. For example, a featured product shows as being featured because you tell the page to feature it in that specific way.

On the other hand, the product data comes from your commerce engine, which just serves the product info and has no knowledge of whether the product is featured on a page. The DXCP orchestrates and links your design to the external source(s) that hold your data. This crucial context step allows you to work effectively in parallel.

Note the difference between domain data and design data. With a DXCP, you design pages based on the components that make up a page. You can link each component to a resource, i.e., an external API like a headless CMS, DAM, PIM, or a legacy system. Your domain data resides in those systems. You then bind the external API data to parameters and fields on the components in the DXCP to create the final experience for your audience on a channel.

You can set up connections with DXCP so that the system acts as an API data aggregator that loosely couples to external sources. Additionally, you can establish access rules that define which users can add resources and bind to components. For example, content editors could add the Instagram API and feed that data to a component for campaign pages without developer assistance. 

Once resources are bound, API results are cached at the CDN edge for fast and easy querying. Developers only need to connect to the CDN endpoint to access the data from all the sources that channel data to the components on the page.

Even without a CMS, content editors can fill in the component fields with content, accelerating the UX and prototyping phases of a project. Once a CMS is in place, the content connects as a resource to a component without the need to rebuild the component. For efficiency, you can configure the fields to be dynamic. No coding is required.

How a DXCP enables parallel collaboration

If you know what kind of components you need or have a library like kickstartDS or Tailwind UI, you can configure them in the DXCP and start composing pages—with no need for a CMS initially. Simultaneously, the back-end team can select the headless tool while the front-end team can choose a front-end framework and start querying the composed pages. The QA team can start testing the front end as soon as the first few pages have been created with the component library.

Since the DXCP does not dictate what kind of hosting or CI/CD stack is needed, the DevOps team can work on the setup while the rest of the process is proceeding. Once you install the CDN integration, anyone with the appropriate access privileges can handle releases. Can’t find the prebuilt integration? Build your own, or just add a few webhooks for communication.

On top of that, DXCPs also feature a project map as a basis for creating pages and subpages. The product owner can start building user journeys in the same system while all the other operations are going on. Say goodbye to journey spreadsheets because you can now use the tool you will also use when teh project is in production.

How to ensure the architecture is divisible and maintainable

Due to the nature of DXCP, you don’t need to interconnect external tools; they all talk directly to the DXCP. Likewise, changing or adding headless sources does not affect developers in nearly the same way. Without developer involvement in the no-code editor, universal previews, and project maps, content editors are much more productive. Business users don’t need to ‘publish and pray’ when they build a page from multiple sources—it’s all right there.

Moreover, since the no-code editor integrates flawlessly with external sources and normalizes their interfaces, content editors don’t need to understand how those systems work—making it far easier to onboard new team members. Add that to the freedom of grouping components together and easily personalizing those sources; business users are empowered to own their workflows and results without depending on overworked devs. 

Given that DXCP is front-end, hosting, and CDN agnostic, developers can use the tools they love, which makes the most sense for the job at hand. No more compromising with the whims of legacy tech! Even though DXCP has an opinion on the direction of the architecture, once developers go down that road, they have complete freedom to do their job in the way they prefer.

##How DXCP transforms the project-development process

Adopting DXCP can revolutionize how you build projects—if you let it. With traditional blockers out of the way, teams can accomplish more in parallel and show value much faster. For all that composable architecture at scale is generally messy and chaotic, forcing agencies and brands to work around issues never seen before: digital experience composition adds structure while staying tech-agnostic and accelerates time-to-value.

No matter how much things change, some things stay the same. The agencies that best embrace new technologies and new mindsets to maximize their impact will gain an edge in the market. As the market gets less certain, finding ways to deliver more value for clients faster and effectively showcase it will be crucial. When that also creates a platform that will deliver in the long term and position your agency as a key strategic partner—that’s where the magic happens. 

- \ No newline at end of file diff --git a/writing/the-lost-promise-of-headless/_payload.json b/writing/the-lost-promise-of-headless/_payload.json deleted file mode 100644 index ea226984..00000000 --- a/writing/the-lost-promise-of-headless/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1243},["Reactive",2],{"content-query-OPMdEtXupr":3,"content-navigation-8C37fagqQL":127},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":19,"body":20,"_type":122,"_id":123,"_source":124,"_file":125,"_extension":126},"/writing/the-lost-promise-of-headless","writing",false,"","The lost promise of headless","In recent years, headless technology, which boosts performance, developer experience, and...",1517485,"the-lost-promise-of-headless","2023-06-26T18:18:19Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrvfb6a8wh5lt0mbyzat.png","https://uniform.dev/blogs/the-lost-promise-of-headless",[16,17,18],"headless","architecture","mach",22300,{"type":21,"children":22,"toc":116},"root",[23,31,36,43,48,68,74,79,84,90,95,111],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28],{"type":29,"value":30},"text","In recent years, headless technology, which boosts performance, developer experience, and best-of-breed headless systems, has gained significant traction in web development. At its core, headless streamlines and accelerates the process of building and delivering web experiences  through APIs, which separates content creation and management from presentation. ",{"type":24,"tag":25,"props":32,"children":33},{},[34],{"type":29,"value":35},"However, despite the excitement and promise, headless technology has fallen short in living up to its potential in several key areas.",{"type":24,"tag":37,"props":38,"children":40},"h2",{"id":39},"technical-complexity",[41],{"type":29,"value":42},"Technical complexity",{"type":24,"tag":25,"props":44,"children":45},{},[46],{"type":29,"value":47},"The primary appeal of headless technology lies in decoupling content creation and presentation, as a result of which developers can work on the presentation layer with their preferred tools and frameworks while content editors can focus on building and managing content. However, that separation comes at a cost. Specifically:",{"type":24,"tag":49,"props":50,"children":51},"ul",{},[52,58,63],{"type":24,"tag":53,"props":54,"children":55},"li",{},[56],{"type":29,"value":57},"To connect the multiple layers, a significant amount of code must be written, which leads to technical debt, a heavier workload, and inflexibility. ",{"type":24,"tag":53,"props":59,"children":60},{},[61],{"type":29,"value":62},"Adding data to content models to address design-driven choices for an output channel, e.g., checkboxes to enlarge an image, pollutes the data model. The more design-related and channel-specific data you add to content models, the more technical debt you create.",{"type":24,"tag":53,"props":64,"children":65},{},[66],{"type":29,"value":67},"If you must connect a different data source to the same front-end component, but the content models do not align, issues arise. ",{"type":24,"tag":37,"props":69,"children":71},{"id":70},"content-editing-challenges",[72],{"type":29,"value":73},"Content-editing challenges",{"type":24,"tag":25,"props":75,"children":76},{},[77],{"type":29,"value":78},"Another major challenge with headless technology is the disconnect between content editors and the systems they work with. Due to the abstract nature of headless CMS, content editors often struggle to pinpoint how their content will be displayed on the front end, leading to confusion, frustration, and a steep learning curve for novices.",{"type":24,"tag":25,"props":80,"children":81},{},[82],{"type":29,"value":83},"Moreover, the lack of a clear connection between content and presentation makes it difficult for content editors to preview their work and ensure that it looks and functions as intended. A suboptimal user experience results, let alone a time sink for revisions and troubleshooting.",{"type":24,"tag":37,"props":85,"children":87},{"id":86},"the-way-forward-dxcp",[88],{"type":29,"value":89},"The way forward: DXCP",{"type":24,"tag":25,"props":91,"children":92},{},[93],{"type":29,"value":94},"Without question, despite the promise of headless technology for revolutionizing the way we build web experiences, serious hurdles remain. To overcome them, tools and processes that facilitate team collaboration and streamline the development process are necessary so that developers and content editors can work closely together to bridge the gap between content creation and presentation.",{"type":24,"tag":25,"props":96,"children":97},{},[98,100,109],{"type":29,"value":99},"A proven solution is a ",{"type":24,"tag":101,"props":102,"children":106},"a",{"href":103,"rel":104},"https://uniform.dev/what-is-digital-experience-composition",[105],"nofollow",[107],{"type":29,"value":108},"digital experience composition platform (DXCP)",{"type":29,"value":110},", which seamlessly integrates content and presentation. While on that platform, nondevelopers can visually create and manage digital experiences with content from multiple sources, delivering those experiences agnostically to a front-end of choice, significantly reducing technical debt, and gaining flexibility. Businesses can then adapt and innovate much faster, especially since the connection to all headless systems and APIs occurs in the DXCP, and the code remains clean.",{"type":24,"tag":25,"props":112,"children":113},{},[114],{"type":29,"value":115},"What’s more, the incorporation of a DXCP into the development process affords content editors a clear view of how their content will be displayed and the ability to interact with the presentation layer. Plus, the absence of data silos means a more streamlined and efficient workflow as well as a more intuitive user experience for both content creators and developers.",{"title":7,"searchDepth":117,"depth":117,"links":118},2,[119,120,121],{"id":39,"depth":117,"text":42},{"id":70,"depth":117,"text":73},{"id":86,"depth":117,"text":89},"markdown","content:4.writing:the-lost-promise-of-headless.md","content","4.writing/the-lost-promise-of-headless.md","md",[128,131,923,998,1234,1237,1240],{"title":129,"_path":130},"About","/about",{"title":132,"_path":133,"children":134},"videos","/videos",[135,154,173,219,220,272,375,398,420,748],{"title":136,"_path":137,"children":138},"Alive And Kicking","/videos/alive-and-kicking",[139,142,145,148,151],{"title":140,"_path":141},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":143,"_path":144},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":146,"_path":147},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":149,"_path":150},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":152,"_path":153},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":155,"_path":156,"children":157},"Headless Creator","/videos/headless-creator",[158,161,164,167,170],{"title":159,"_path":160},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":162,"_path":163},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":165,"_path":166},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":168,"_path":169},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":171,"_path":172},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":174,"_path":175,"children":176},"Hygraph","/videos/hygraph",[177,180,183,186,189,192,195,198,201,204,207,210,213,216],{"title":178,"_path":179},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":181,"_path":182},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":184,"_path":185},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":187,"_path":188},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":190,"_path":191},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":193,"_path":194},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":196,"_path":197},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":199,"_path":200},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":202,"_path":203},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":205,"_path":206},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":208,"_path":209},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":211,"_path":212},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":214,"_path":215},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":217,"_path":218},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":132,"_path":133},{"title":221,"_path":222,"children":223},"Live Hygraph","/videos/live-hygraph",[224,227,230,233,236,239,242,245,248,251,254,257,260,263,266,269],{"title":225,"_path":226},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":228,"_path":229},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":231,"_path":232},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":234,"_path":235},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":237,"_path":238},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":240,"_path":241},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":243,"_path":244},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":246,"_path":247},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":249,"_path":250},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":252,"_path":253},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":255,"_path":256},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":258,"_path":259},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":261,"_path":262},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":264,"_path":265},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":267,"_path":268},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":270,"_path":271},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":273,"_path":274,"children":275},"Live Uniform","/videos/live-uniform",[276,279,282,285,288,291,294,297,300,303,306,309,312,315,318,321,324,327,330,333,336,339,342,345,348,351,354,357,360,363,366,369,372],{"title":277,"_path":278},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":280,"_path":281},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":283,"_path":284},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":286,"_path":287},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":289,"_path":290},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":292,"_path":293},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":295,"_path":296},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":298,"_path":299},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":301,"_path":302},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":304,"_path":305},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":307,"_path":308},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":310,"_path":311},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":313,"_path":314},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":316,"_path":317},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":319,"_path":320},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":322,"_path":323},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":325,"_path":326},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":328,"_path":329},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":331,"_path":332},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":334,"_path":335},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":337,"_path":338},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":340,"_path":341},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":343,"_path":344},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":346,"_path":347},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":349,"_path":350},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":352,"_path":353},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":355,"_path":356},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":358,"_path":359},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":361,"_path":362},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":364,"_path":365},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":367,"_path":368},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":370,"_path":371},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":373,"_path":374},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":376,"_path":377,"children":378},"Misc Streams","/videos/misc-streams",[379,382,385,388,390,392,395],{"title":380,"_path":381},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":383,"_path":384},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":386,"_path":387},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":370,"_path":389},"/videos/misc-streams/003-jvgiaotcerq",{"title":361,"_path":391},"/videos/misc-streams/004-ekut1koa2n8",{"title":393,"_path":394},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":396,"_path":397},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":399,"_path":400,"children":401},"Mp","/videos/mp",[402,405,408,411,414,417],{"title":403,"_path":404},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":406,"_path":407},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":409,"_path":410},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":412,"_path":413},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":415,"_path":416},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":418,"_path":419},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":421,"_path":422,"children":423},"Tim","/videos/tim",[424,426,429,432,435,438,441,444,447,450,453,456,459,462,465,468,471,474,476,478,481,484,487,490,493,496,499,502,505,508,511,514,517,520,523,526,529,532,535,538,541,544,547,550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745],{"title":143,"_path":425},"/videos/tim/000-mvq-_s20ndk",{"title":427,"_path":428},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":430,"_path":431},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":433,"_path":434},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":436,"_path":437},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":439,"_path":440},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":442,"_path":443},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":445,"_path":446},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":448,"_path":449},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":451,"_path":452},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":454,"_path":455},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":457,"_path":458},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":460,"_path":461},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":463,"_path":464},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":466,"_path":467},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":469,"_path":470},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":472,"_path":473},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":146,"_path":475},"/videos/tim/017-m0mrligs6i0",{"title":140,"_path":477},"/videos/tim/018-hhpitreyobi",{"title":479,"_path":480},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":482,"_path":483},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":485,"_path":486},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":488,"_path":489},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":491,"_path":492},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":494,"_path":495},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":497,"_path":498},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":500,"_path":501},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":503,"_path":504},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":506,"_path":507},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":509,"_path":510},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":512,"_path":513},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":515,"_path":516},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":518,"_path":519},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":521,"_path":522},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":524,"_path":525},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":527,"_path":528},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":530,"_path":531},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":533,"_path":534},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":536,"_path":537},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":539,"_path":540},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":542,"_path":543},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":545,"_path":546},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":548,"_path":549},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":551,"_path":552},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":554,"_path":555},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":557,"_path":558},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":560,"_path":561},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":563,"_path":564},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":566,"_path":567},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":569,"_path":570},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":572,"_path":573},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":575,"_path":576},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":578,"_path":579},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":581,"_path":582},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":584,"_path":585},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":587,"_path":588},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":590,"_path":591},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":593,"_path":594},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":596,"_path":597},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":599,"_path":600},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":602,"_path":603},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":605,"_path":606},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":608,"_path":609},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":611,"_path":612},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":614,"_path":615},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":617,"_path":618},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":620,"_path":621},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":623,"_path":624},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":626,"_path":627},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":629,"_path":630},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":632,"_path":633},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":635,"_path":636},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":638,"_path":639},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":641,"_path":642},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":644,"_path":645},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":647,"_path":648},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":650,"_path":651},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":653,"_path":654},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":656,"_path":657},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":659,"_path":660},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":662,"_path":663},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":665,"_path":666},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":668,"_path":669},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":671,"_path":672},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":674,"_path":675},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":677,"_path":678},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":680,"_path":681},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":683,"_path":684},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":686,"_path":687},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":689,"_path":690},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":692,"_path":693},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":695,"_path":696},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":698,"_path":699},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":701,"_path":702},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":704,"_path":705},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":707,"_path":708},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":710,"_path":711},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":713,"_path":714},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":716,"_path":717},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":719,"_path":720},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":722,"_path":723},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":725,"_path":726},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":728,"_path":729},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":731,"_path":732},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":734,"_path":735},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":737,"_path":738},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":740,"_path":741},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":743,"_path":744},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":746,"_path":747},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":749,"_path":750,"children":751},"Uniform","/videos/uniform",[752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920],{"title":753,"_path":754},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":756,"_path":757},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":759,"_path":760},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":762,"_path":763},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":765,"_path":766},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":768,"_path":769},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":771,"_path":772},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":774,"_path":775},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":777,"_path":778},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":780,"_path":781},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":783,"_path":784},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":786,"_path":787},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":789,"_path":790},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":792,"_path":793},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":795,"_path":796},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":798,"_path":799},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":801,"_path":802},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":804,"_path":805},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":807,"_path":808},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":810,"_path":811},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":813,"_path":814},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":816,"_path":817},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":819,"_path":820},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":822,"_path":823},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":825,"_path":826},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":828,"_path":829},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":831,"_path":832},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":834,"_path":835},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":837,"_path":838},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":840,"_path":841},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":843,"_path":844},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":846,"_path":847},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":849,"_path":850},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":852,"_path":853},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":855,"_path":856},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":858,"_path":859},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":861,"_path":862},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":864,"_path":865},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":867,"_path":868},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":870,"_path":871},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":873,"_path":874},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":876,"_path":877},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":879,"_path":880},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":882,"_path":883},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":885,"_path":886},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":888,"_path":889},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":891,"_path":892},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":894,"_path":895},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":897,"_path":898},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":900,"_path":901},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":903,"_path":904},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":906,"_path":907},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":909,"_path":910},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":912,"_path":913},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":915,"_path":916},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":918,"_path":919},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":921,"_path":922},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":924,"_path":925,"children":926},"Writing","/writing",[927,930,933,936,939,942,943,946,949,952,955,958,961,964,967,970,973,974,977,980,983,986,989,992,995],{"title":928,"_path":929},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":931,"_path":932},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":934,"_path":935},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":937,"_path":938},"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":940,"_path":941},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":924,"_path":925},{"title":944,"_path":945},"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":947,"_path":948},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":950,"_path":951},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":953,"_path":954},"My Fitness Story","/writing/my-fitness-story",{"title":956,"_path":957},"New job alert!","/writing/new-job-alert",{"title":959,"_path":960},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":962,"_path":963},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":965,"_path":966},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":968,"_path":969},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":971,"_path":972},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":8,"_path":4},{"title":975,"_path":976},"The MACH monolith","/writing/the-mach-monolith",{"title":978,"_path":979},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":981,"_path":982},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":984,"_path":985},"This is headless 2.0","/writing/this-is-headless-20",{"title":987,"_path":988},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":990,"_path":991},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":993,"_path":994},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":996,"_path":997},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":999,"_path":1000,"children":1001},"Speaking","/speaking",[1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1227,1230,1233],{"title":1003,"_path":1004},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1006,"_path":1007},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1009,"_path":1010},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1012,"_path":1013},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1015,"_path":1016},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1018,"_path":1019},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1021,"_path":1022},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1024,"_path":1025},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1027,"_path":1028},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1030,"_path":1031},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1033,"_path":1034},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1036,"_path":1037},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1039,"_path":1040},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1042,"_path":1043},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1045,"_path":1046},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1048,"_path":1049},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1051,"_path":1052},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1054,"_path":1055},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1057,"_path":1058},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1060,"_path":1061},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1063,"_path":1064},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1066,"_path":1067},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1069,"_path":1070},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1072,"_path":1073},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1075,"_path":1076},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1078,"_path":1079},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1081,"_path":1082},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1084,"_path":1085},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1087,"_path":1088},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1090,"_path":1091},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1093,"_path":1094},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1096,"_path":1097},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1099,"_path":1100},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1102,"_path":1103},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1105,"_path":1106},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1108,"_path":1109},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1111,"_path":1112},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1114,"_path":1115},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1117,"_path":1118},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1120,"_path":1121},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1123,"_path":1124},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1126,"_path":1127},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1129,"_path":1130},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1132,"_path":1133},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1135,"_path":1136},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1138,"_path":1139},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1141,"_path":1142},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1144,"_path":1145},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1147,"_path":1148},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1150,"_path":1151},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1153,"_path":1154},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1156,"_path":1157},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1159,"_path":1160},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1162,"_path":1163},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1165,"_path":1166},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1168,"_path":1169},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1171,"_path":1172},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1174,"_path":1175},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1177,"_path":1178},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1180,"_path":1181},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1183,"_path":1184},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1186,"_path":1187},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1189,"_path":1190},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1192,"_path":1193},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1195,"_path":1196},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1198,"_path":1199},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1201,"_path":1202},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1204,"_path":1205},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1207,"_path":1208},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1210,"_path":1211},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1213,"_path":1214},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1216,"_path":1217},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1219,"_path":1220},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1222,"_path":1223},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1225,"_path":1226},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1228,"_path":1229},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1231,"_path":1232},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":999,"_path":1000},{"title":1235,"_path":1236},"live streams","/livestreams",{"title":1238,"_path":1239},"press kit","/presskit",{"title":1241,"_path":1242},"alive and kicking","/alive-and-kicking",1718484379211] \ No newline at end of file diff --git a/writing/the-lost-promise-of-headless/index.html b/writing/the-lost-promise-of-headless/index.html deleted file mode 100644 index 1fdd4f0c..00000000 --- a/writing/the-lost-promise-of-headless/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - -The lost promise of headless - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The lost promise of headless

Jun 26, 2023 at https://uniform.dev/blogs/the-lost-promise-of-headless

In recent years, headless technology, which boosts performance, developer experience, and best-of-breed headless systems, has gained significant traction in web development. At its core, headless streamlines and accelerates the process of building and delivering web experiences  through APIs, which separates content creation and management from presentation. 

However, despite the excitement and promise, headless technology has fallen short in living up to its potential in several key areas.

Technical complexity

The primary appeal of headless technology lies in decoupling content creation and presentation, as a result of which developers can work on the presentation layer with their preferred tools and frameworks while content editors can focus on building and managing content. However, that separation comes at a cost. Specifically:

  • To connect the multiple layers, a significant amount of code must be written, which leads to technical debt, a heavier workload, and inflexibility. 
  • Adding data to content models to address design-driven choices for an output channel, e.g., checkboxes to enlarge an image, pollutes the data model. The more design-related and channel-specific data you add to content models, the more technical debt you create.
  • If you must connect a different data source to the same front-end component, but the content models do not align, issues arise. 

Content-editing challenges

Another major challenge with headless technology is the disconnect between content editors and the systems they work with. Due to the abstract nature of headless CMS, content editors often struggle to pinpoint how their content will be displayed on the front end, leading to confusion, frustration, and a steep learning curve for novices.

Moreover, the lack of a clear connection between content and presentation makes it difficult for content editors to preview their work and ensure that it looks and functions as intended. A suboptimal user experience results, let alone a time sink for revisions and troubleshooting.

The way forward: DXCP

Without question, despite the promise of headless technology for revolutionizing the way we build web experiences, serious hurdles remain. To overcome them, tools and processes that facilitate team collaboration and streamline the development process are necessary so that developers and content editors can work closely together to bridge the gap between content creation and presentation.

A proven solution is a digital experience composition platform (DXCP), which seamlessly integrates content and presentation. While on that platform, nondevelopers can visually create and manage digital experiences with content from multiple sources, delivering those experiences agnostically to a front-end of choice, significantly reducing technical debt, and gaining flexibility. Businesses can then adapt and innovate much faster, especially since the connection to all headless systems and APIs occurs in the DXCP, and the code remains clean.

What’s more, the incorporation of a DXCP into the development process affords content editors a clear view of how their content will be displayed and the ability to interact with the presentation layer. Plus, the absence of data silos means a more streamlined and efficient workflow as well as a more intuitive user experience for both content creators and developers.

- \ No newline at end of file diff --git a/writing/the-mach-monolith/_payload.json b/writing/the-mach-monolith/_payload.json deleted file mode 100644 index 38b6b5cb..00000000 --- a/writing/the-mach-monolith/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1424},["Reactive",2],{"content-query-LoZlVnz5g5":3,"content-navigation-8C37fagqQL":309},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":304,"_id":305,"_source":306,"_file":307,"_extension":308},"/writing/the-mach-monolith","writing",false,"","The MACH monolith","For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take...",1399535,"the-mach-monolith","2023-03-13T20:20:45Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxdj396fv4iyh8zce4rsg.png","https://uniform.dev/blogs/composable-architecture/the-mach-monolith",[16,17,18,19],"architecture","composable","webdev","javascript",22300,{"type":22,"children":23,"toc":296},"root",[24,32,37,50,55,62,67,72,77,83,99,104,109,134,139,162,167,172,178,183,188,193,197,202,215,220,225,230,235,248,254,259,282],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take action. Now that everybody is jumping on the bandwagon, interesting developments have surfaced: Traditional monoliths have adopted new messaging with the terms “composable” and “headless” in it, and headless systems are integrating more monolithic-like features. Meanwhile, at a loss as to what to do to ensure that their architecture is scalable, secure, and future-proof, brands make decisions out of sheer FOMO. All that has created the beast I call the MACH Monolith.",{"type":25,"tag":26,"props":33,"children":34},{},[35],{"type":30,"value":36},"The MACH approach for building digital architecture is the way to go, and it can be an amazing journey. However, you must apply the MACH principles correctly. This article explains what that means.",{"type":25,"tag":26,"props":38,"children":39},{},[40,42,48],{"type":30,"value":41},"We can agree on one thing: web development is complex, hence the word ",{"type":25,"tag":43,"props":44,"children":45},"strong",{},[46],{"type":30,"value":47},"development",{"type":30,"value":49},". For years, software vendors tried to simplify the job by creating suites with all the features businesses would need, from front-end accelerators to editing capabilities for rich content. Such an approach of having one platform to tackle all digital-business challenges worked pretty well.",{"type":25,"tag":26,"props":51,"children":52},{},[53],{"type":30,"value":54},"However, drawbacks do exist. For one thing, businesses must buy into how the suite is developed as a product. Additionally, they’re stuck with vendor lock-in and dependent on the suite’s roadmap, which holds back innovation and causes developers to break out of the system with customization. When updates are necessary to the underlying monolith, the architecture becomes flawed.",{"type":25,"tag":56,"props":57,"children":59},"h2",{"id":58},"a-paradigm-shift",[60],{"type":30,"value":61},"A paradigm shift",{"type":25,"tag":26,"props":63,"children":64},{},[65],{"type":30,"value":66},"The general mindset in web development is that even though everything is headless and API-first, we are still operating in the “suite” paradigm. Even the technical people who tried to break away from the monolith approach in the recent past still have that frame of mind. Paradigm shifts take time, and we are currently in the middle of one.",{"type":25,"tag":26,"props":68,"children":69},{},[70],{"type":30,"value":71},"In today’s composable world, where architectures are crafted with best-of-breed tools, we must recognize the fact that no software can take the sting out of the challenges involved. Reality is, no full-chain covering pieces of software exist in the SaaS world even though that’s a bitter pill to swallow because that’s what we were used to with suites.",{"type":25,"tag":26,"props":73,"children":74},{},[75],{"type":30,"value":76},"Hence, the suite approach continues to predominate, and people often tend to adopt that even while designing a modern composed architecture. As reflected across disciplines, such a practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures. Let’s talk about how the MACH monolith surfaced.",{"type":25,"tag":56,"props":78,"children":80},{"id":79},"monolith-like-features-from-headless-first-products",[81],{"type":30,"value":82},"Monolith-like features from headless-first products",{"type":25,"tag":26,"props":84,"children":85},{},[86,88,97],{"type":30,"value":87},"Because only techies like the headless space, the market doesn’t seem ready to fully embrace API-first designs and composable architectures. After all, APIs are techspeak, and since architectures are created with a tech hat on, the experience is unfriendly to practitioners like content editors and marketers. For details on this phenomenon, see this ",{"type":25,"tag":89,"props":90,"children":94},"a",{"href":91,"rel":92},"https://uniform.dev/blogs/digital-experience-composition-dxc/tame-the-martech-chaos-with-dxc-and-mach",[93],"nofollow",[95],{"type":30,"value":96},"article",{"type":30,"value":98}," on orchestrating MACH architectures.",{"type":25,"tag":26,"props":100,"children":101},{},[102],{"type":30,"value":103},"Also, because headless systems are built by and for techies, API-first products are ahead of their time with no connecting mechanism for the composing elements to benefit all stakeholders. A way to resolve that is described later in this article.",{"type":25,"tag":26,"props":105,"children":106},{},[107],{"type":30,"value":108},"To avoid losing market share, headless systems must have the following features to become more usable to practitioners:",{"type":25,"tag":110,"props":111,"children":112},"ul",{},[113,119,124,129],{"type":25,"tag":114,"props":115,"children":116},"li",{},[117],{"type":30,"value":118},"Integration fields into the CMS and other headless systems, e.g., search, DAM, PIM, commerce, CRM, and personalization, to unify the editing experience and offer a singular API for developers.",{"type":25,"tag":114,"props":120,"children":121},{},[122],{"type":30,"value":123},"An ability to preview functionalities, tightly coupling the front end to the preview SDK of the CMS.",{"type":25,"tag":114,"props":125,"children":126},{},[127],{"type":30,"value":128},"An ability to compose pages inside the CMS data model to add contextualized data for compositions to the clean data model of the CMS content.",{"type":25,"tag":114,"props":130,"children":131},{},[132],{"type":30,"value":133},"Routing and sitemap-related content mapping in the CMS that gives practitioners a clear overview of the system.",{"type":25,"tag":26,"props":135,"children":136},{},[137],{"type":30,"value":138},"All those features put the CMS in the center of the universe of digital architecture. Questions come to mind, however:",{"type":25,"tag":110,"props":140,"children":141},{},[142,147,152,157],{"type":25,"tag":114,"props":143,"children":144},{},[145],{"type":30,"value":146},"What if you have multiple CMS systems?",{"type":25,"tag":114,"props":148,"children":149},{},[150],{"type":30,"value":151},"What if you want to switch your commerce engine but it’s tightly coupled to the CMS?",{"type":25,"tag":114,"props":153,"children":154},{},[155],{"type":30,"value":156},"What if you'd like to switch to another CMS?",{"type":25,"tag":114,"props":158,"children":159},{},[160],{"type":30,"value":161},"What if you must add another channel like a TV app, yet the data models with desktop presentational context cannot accommodate that?",{"type":25,"tag":26,"props":163,"children":164},{},[165],{"type":30,"value":166},"The answers to those questions result in a load of pain for developers, who often must wrestle with a system replatform every few years. With things becoming too interconnected and concerns not separated, the ultimate choice is usually to discard the old architecture and start anew. Doing that gets very expensive very fast.",{"type":25,"tag":26,"props":168,"children":169},{},[170],{"type":30,"value":171},"Surprisingly, since the paradigm shift is as yet incomplete, the original, highly innovative API-first companies are now adding other semi headless products to their portfolio so as to stay relevant in a slightly lagging market. Consequently, software vendors must serve the mid-market tier of businesses with accelerated product launches and ease of use. Otherwise, website-in-a-box systems like WordPress or Shopify will outperform them.",{"type":25,"tag":56,"props":173,"children":175},{"id":174},"hybrid-headless-and-pretend-composability-from-suites",[176],{"type":30,"value":177},"Hybrid headless and pretend composability from suites",{"type":25,"tag":26,"props":179,"children":180},{},[181],{"type":30,"value":182},"To stay relevant in the interim, traditional suite vendors are implementing a form of hybrid headless products. You can use their system in a headless, API-first manner but must stick to their way of operations. The fact that you need specialized knowledge of the system to work with it goes against the API-first proposition of total developer freedom. Still, you now have an API and, therefore, a headless system.",{"type":25,"tag":26,"props":184,"children":185},{},[186],{"type":30,"value":187},"Suite vendors are splitting up the suite or buying additional service providers and selling their products as composable pieces to their platform. That’s not real composability because you’re not free to choose your best-of-breed tools and can only select from the vendor’s pool of services, which are generally tightly coupled to the suite's core and, therefore, challenges filled. Being interconnected and indivisible is typical of monolithic software, not composable software.",{"type":25,"tag":26,"props":189,"children":190},{},[191],{"type":30,"value":192},"I call that approach compostable architecture.",{"type":25,"tag":56,"props":194,"children":195},{"id":11},[196],{"type":30,"value":8},{"type":25,"tag":26,"props":198,"children":199},{},[200],{"type":30,"value":201},"We’re seeing a couple of patterns over and over again.",{"type":25,"tag":26,"props":203,"children":204},{},[205],{"type":25,"tag":206,"props":207,"children":214},"img",{"alt":208,"loading":209,"provider":210,"sizes":211,"src":212,"width":213},"MACH Monolith","lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fp3gnzgd3unj8tbvru3c.png",1280,[],{"type":25,"tag":26,"props":216,"children":217},{},[218],{"type":30,"value":219},"If the separation of concerns is not respected, software vendors create an indivisible and interconnected bundle of best-of-breed tools—a complicated scenario that makes it tough to discern what’s connected to what, not to mention that you have created your very own vendor lock-in. Things work in only one way, and only the original build team understands how they work. Onboarding of new team members becomes complicated and burdensome, leading to frustration among developers.",{"type":25,"tag":26,"props":221,"children":222},{},[223],{"type":30,"value":224},"Separately, contextual composition data is often stored in the CMS and mixed with the clean data model you started with, such as adding a checkbox to spotlight an item on a page, which is a design decision for the item in a specific context. What if that context changes when the item is shown in a different place on the website? Composing pages with specific user contexts is problematic in a CMS, invariably generating dirty data over time. Instead, page composition in the context of a user must occur in the front end or a composition platform.",{"type":25,"tag":26,"props":226,"children":227},{},[228],{"type":30,"value":229},"Another approach is not to fully interconnect the systems. That’s a great start, but where does that connection usually occur? In the front end. As a result, the front-end application contains all the knowledge of the link to all the systems that compose your website, generating a considerable risk for maintenance and security, let alone that it’s not future-proof. To be effective, a front end must be \"stupid\" and \"stateless\" for updates.",{"type":25,"tag":26,"props":231,"children":232},{},[233],{"type":30,"value":234},"Besides, business problems also exist:",{"type":25,"tag":110,"props":236,"children":237},{},[238,243],{"type":25,"tag":114,"props":239,"children":240},{},[241],{"type":30,"value":242},"What if the architecture does not behave the way it’s supposed to? Determining where it went wrong is complicated.",{"type":25,"tag":114,"props":244,"children":245},{},[246],{"type":30,"value":247},"Who do you seek help after pinpointing the issue? The best-of-breed tool, your team who made architecture decisions, or the agency that built the system? Businesses with a failing architecture that can’t point the liability finger eventually replatform and start the process from scratch. The MACH monolith thus ends up being much more inferior to the traditional suite with only one vendor.",{"type":25,"tag":56,"props":249,"children":251},{"id":250},"the-solution",[252],{"type":30,"value":253},"The solution",{"type":25,"tag":26,"props":255,"children":256},{},[257],{"type":30,"value":258},"What businesses need is an opinionless platform that does the following:",{"type":25,"tag":110,"props":260,"children":261},{},[262,267,272,277],{"type":25,"tag":114,"props":263,"children":264},{},[265],{"type":30,"value":266},"Orchestrates best-of-breed tools.",{"type":25,"tag":114,"props":268,"children":269},{},[270],{"type":30,"value":271},"Offers a user-friendly interface to developers and practitioners alike.",{"type":25,"tag":114,"props":273,"children":274},{},[275],{"type":30,"value":276},"Offers an entirely tech-agnostic SDK.",{"type":25,"tag":114,"props":278,"children":279},{},[280],{"type":30,"value":281},"Offers no-code tools for practitioners to work with in such a way that they do not notice they are composting pages with different headless sources.",{"type":25,"tag":26,"props":283,"children":284},{},[285,287,294],{"type":30,"value":286},"Even though the paradigm shift to truly composable architectures is still ongoing, the platform described above already exists. Enter ",{"type":25,"tag":89,"props":288,"children":291},{"href":289,"rel":290},"https://uniform.dev",[93],[292],{"type":30,"value":293},"Uniform",{"type":30,"value":295},", on which developers and marketers have complete control of their digital-experience stack, and I’m proud to run its developer relations team. Uniform is slated to solve many issues developers, architects, and practitioners will face in the coming years.",{"title":7,"searchDepth":297,"depth":297,"links":298},2,[299,300,301,302,303],{"id":58,"depth":297,"text":61},{"id":79,"depth":297,"text":82},{"id":174,"depth":297,"text":177},{"id":11,"depth":297,"text":8},{"id":250,"depth":297,"text":253},"markdown","content:4.writing:the-mach-monolith.md","content","4.writing/the-mach-monolith.md","md",[310,313,1104,1179,1415,1418,1421],{"title":311,"_path":312},"About","/about",{"title":314,"_path":315,"children":316},"videos","/videos",[317,336,355,401,402,454,557,580,602,930],{"title":318,"_path":319,"children":320},"Alive And Kicking","/videos/alive-and-kicking",[321,324,327,330,333],{"title":322,"_path":323},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":325,"_path":326},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":328,"_path":329},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":331,"_path":332},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":334,"_path":335},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":337,"_path":338,"children":339},"Headless Creator","/videos/headless-creator",[340,343,346,349,352],{"title":341,"_path":342},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":344,"_path":345},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":347,"_path":348},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":350,"_path":351},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":353,"_path":354},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":356,"_path":357,"children":358},"Hygraph","/videos/hygraph",[359,362,365,368,371,374,377,380,383,386,389,392,395,398],{"title":360,"_path":361},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":363,"_path":364},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":366,"_path":367},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":369,"_path":370},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":372,"_path":373},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":375,"_path":376},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":378,"_path":379},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":381,"_path":382},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":384,"_path":385},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":387,"_path":388},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":390,"_path":391},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":393,"_path":394},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":396,"_path":397},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":399,"_path":400},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":314,"_path":315},{"title":403,"_path":404,"children":405},"Live Hygraph","/videos/live-hygraph",[406,409,412,415,418,421,424,427,430,433,436,439,442,445,448,451],{"title":407,"_path":408},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":410,"_path":411},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":413,"_path":414},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":416,"_path":417},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":419,"_path":420},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":422,"_path":423},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":425,"_path":426},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":428,"_path":429},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":431,"_path":432},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":434,"_path":435},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":437,"_path":438},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":440,"_path":441},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":443,"_path":444},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":446,"_path":447},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":449,"_path":450},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":452,"_path":453},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":455,"_path":456,"children":457},"Live Uniform","/videos/live-uniform",[458,461,464,467,470,473,476,479,482,485,488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554],{"title":459,"_path":460},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":462,"_path":463},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":465,"_path":466},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":468,"_path":469},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":471,"_path":472},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":474,"_path":475},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":477,"_path":478},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":480,"_path":481},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":483,"_path":484},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":486,"_path":487},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":489,"_path":490},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":492,"_path":493},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":495,"_path":496},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":498,"_path":499},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":501,"_path":502},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":504,"_path":505},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":507,"_path":508},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":510,"_path":511},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":513,"_path":514},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":516,"_path":517},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":519,"_path":520},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":522,"_path":523},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":525,"_path":526},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":528,"_path":529},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":531,"_path":532},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":534,"_path":535},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":537,"_path":538},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":540,"_path":541},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":543,"_path":544},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":546,"_path":547},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":549,"_path":550},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":552,"_path":553},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":555,"_path":556},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":558,"_path":559,"children":560},"Misc Streams","/videos/misc-streams",[561,564,567,570,572,574,577],{"title":562,"_path":563},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":565,"_path":566},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":568,"_path":569},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":552,"_path":571},"/videos/misc-streams/003-jvgiaotcerq",{"title":543,"_path":573},"/videos/misc-streams/004-ekut1koa2n8",{"title":575,"_path":576},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":578,"_path":579},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":581,"_path":582,"children":583},"Mp","/videos/mp",[584,587,590,593,596,599],{"title":585,"_path":586},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":588,"_path":589},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":591,"_path":592},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":594,"_path":595},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":597,"_path":598},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":600,"_path":601},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":603,"_path":604,"children":605},"Tim","/videos/tim",[606,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,658,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,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927],{"title":325,"_path":607},"/videos/tim/000-mvq-_s20ndk",{"title":609,"_path":610},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":612,"_path":613},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":615,"_path":616},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":618,"_path":619},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":621,"_path":622},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":624,"_path":625},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":627,"_path":628},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":630,"_path":631},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":633,"_path":634},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":636,"_path":637},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":639,"_path":640},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":642,"_path":643},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":645,"_path":646},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":648,"_path":649},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":651,"_path":652},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":654,"_path":655},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":328,"_path":657},"/videos/tim/017-m0mrligs6i0",{"title":322,"_path":659},"/videos/tim/018-hhpitreyobi",{"title":661,"_path":662},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":664,"_path":665},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":667,"_path":668},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":670,"_path":671},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":673,"_path":674},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":676,"_path":677},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":679,"_path":680},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":682,"_path":683},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":685,"_path":686},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":688,"_path":689},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":691,"_path":692},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":694,"_path":695},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":697,"_path":698},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":700,"_path":701},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":703,"_path":704},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":706,"_path":707},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":709,"_path":710},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":712,"_path":713},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":715,"_path":716},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":718,"_path":719},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":721,"_path":722},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":724,"_path":725},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":727,"_path":728},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":730,"_path":731},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":733,"_path":734},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":736,"_path":737},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":739,"_path":740},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":742,"_path":743},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":745,"_path":746},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":748,"_path":749},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":751,"_path":752},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":754,"_path":755},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":757,"_path":758},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":760,"_path":761},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":763,"_path":764},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":766,"_path":767},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":769,"_path":770},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":772,"_path":773},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":775,"_path":776},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":778,"_path":779},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":781,"_path":782},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":784,"_path":785},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":787,"_path":788},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":790,"_path":791},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":793,"_path":794},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":796,"_path":797},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":799,"_path":800},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":802,"_path":803},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":805,"_path":806},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":808,"_path":809},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":811,"_path":812},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":814,"_path":815},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":817,"_path":818},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":820,"_path":821},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":823,"_path":824},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":826,"_path":827},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":829,"_path":830},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":832,"_path":833},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":835,"_path":836},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":838,"_path":839},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":841,"_path":842},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":844,"_path":845},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":847,"_path":848},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":850,"_path":851},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":853,"_path":854},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":856,"_path":857},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":859,"_path":860},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":862,"_path":863},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":865,"_path":866},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":868,"_path":869},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":871,"_path":872},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":874,"_path":875},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":877,"_path":878},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":880,"_path":881},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":883,"_path":884},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":886,"_path":887},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":889,"_path":890},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":892,"_path":893},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":895,"_path":896},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":898,"_path":899},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":901,"_path":902},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":904,"_path":905},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":907,"_path":908},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":910,"_path":911},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":913,"_path":914},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":916,"_path":917},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":919,"_path":920},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":922,"_path":923},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":925,"_path":926},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":928,"_path":929},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":293,"_path":931,"children":932},"/videos/uniform",[933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101],{"title":934,"_path":935},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":937,"_path":938},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":940,"_path":941},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":943,"_path":944},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":946,"_path":947},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":949,"_path":950},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":952,"_path":953},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":955,"_path":956},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":958,"_path":959},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":961,"_path":962},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":964,"_path":965},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":967,"_path":968},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":970,"_path":971},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":973,"_path":974},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":976,"_path":977},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":979,"_path":980},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":982,"_path":983},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":985,"_path":986},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":988,"_path":989},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":991,"_path":992},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":994,"_path":995},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":997,"_path":998},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1000,"_path":1001},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1003,"_path":1004},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1006,"_path":1007},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1009,"_path":1010},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1012,"_path":1013},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1015,"_path":1016},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1018,"_path":1019},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1021,"_path":1022},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1024,"_path":1025},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1027,"_path":1028},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1030,"_path":1031},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1033,"_path":1034},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1036,"_path":1037},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1039,"_path":1040},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1042,"_path":1043},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1045,"_path":1046},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1048,"_path":1049},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1051,"_path":1052},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1054,"_path":1055},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1057,"_path":1058},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1060,"_path":1061},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1063,"_path":1064},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1066,"_path":1067},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1069,"_path":1070},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1072,"_path":1073},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1075,"_path":1076},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1078,"_path":1079},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1081,"_path":1082},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1084,"_path":1085},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1087,"_path":1088},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1090,"_path":1091},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1093,"_path":1094},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1096,"_path":1097},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1099,"_path":1100},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1102,"_path":1103},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1105,"_path":1106,"children":1107},"Writing","/writing",[1108,1111,1114,1117,1120,1123,1124,1127,1130,1133,1136,1139,1142,1145,1148,1151,1154,1157,1158,1161,1164,1167,1170,1173,1176],{"title":1109,"_path":1110},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1112,"_path":1113},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1115,"_path":1116},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1118,"_path":1119},"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":1121,"_path":1122},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1105,"_path":1106},{"title":1125,"_path":1126},"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":1128,"_path":1129},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1131,"_path":1132},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1134,"_path":1135},"My Fitness Story","/writing/my-fitness-story",{"title":1137,"_path":1138},"New job alert!","/writing/new-job-alert",{"title":1140,"_path":1141},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1143,"_path":1144},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1146,"_path":1147},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1149,"_path":1150},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1152,"_path":1153},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1155,"_path":1156},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":8,"_path":4},{"title":1159,"_path":1160},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1162,"_path":1163},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1165,"_path":1166},"This is headless 2.0","/writing/this-is-headless-20",{"title":1168,"_path":1169},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1171,"_path":1172},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1174,"_path":1175},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1177,"_path":1178},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1180,"_path":1181,"children":1182},"Speaking","/speaking",[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],{"title":1184,"_path":1185},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1187,"_path":1188},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1190,"_path":1191},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1193,"_path":1194},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1196,"_path":1197},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1199,"_path":1200},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1202,"_path":1203},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1205,"_path":1206},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1208,"_path":1209},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1211,"_path":1212},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1214,"_path":1215},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1217,"_path":1218},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1220,"_path":1221},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1223,"_path":1224},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1226,"_path":1227},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1229,"_path":1230},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1232,"_path":1233},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1235,"_path":1236},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1238,"_path":1239},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1241,"_path":1242},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1244,"_path":1245},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1247,"_path":1248},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1250,"_path":1251},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1253,"_path":1254},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1256,"_path":1257},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1259,"_path":1260},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1262,"_path":1263},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1265,"_path":1266},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1268,"_path":1269},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1271,"_path":1272},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1274,"_path":1275},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1277,"_path":1278},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1280,"_path":1281},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1283,"_path":1284},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1286,"_path":1287},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1289,"_path":1290},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1292,"_path":1293},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1295,"_path":1296},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1298,"_path":1299},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1301,"_path":1302},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1304,"_path":1305},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1307,"_path":1308},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1310,"_path":1311},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1313,"_path":1314},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1316,"_path":1317},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1319,"_path":1320},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1322,"_path":1323},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1325,"_path":1326},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1328,"_path":1329},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1331,"_path":1332},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1334,"_path":1335},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1337,"_path":1338},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1340,"_path":1341},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1343,"_path":1344},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1346,"_path":1347},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1349,"_path":1350},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1352,"_path":1353},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1355,"_path":1356},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1358,"_path":1359},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1361,"_path":1362},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1364,"_path":1365},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1367,"_path":1368},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1370,"_path":1371},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1373,"_path":1374},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1376,"_path":1377},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1379,"_path":1380},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1382,"_path":1383},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1385,"_path":1386},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1388,"_path":1389},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1391,"_path":1392},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1394,"_path":1395},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1397,"_path":1398},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1400,"_path":1401},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1403,"_path":1404},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1406,"_path":1407},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1409,"_path":1410},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1412,"_path":1413},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1180,"_path":1181},{"title":1416,"_path":1417},"live streams","/livestreams",{"title":1419,"_path":1420},"press kit","/presskit",{"title":1422,"_path":1423},"alive and kicking","/alive-and-kicking",1718484379877] \ No newline at end of file diff --git a/writing/the-mach-monolith/index.html b/writing/the-mach-monolith/index.html deleted file mode 100644 index f82a7664..00000000 --- a/writing/the-mach-monolith/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - -The MACH monolith - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The MACH monolith

Mar 13, 2023 at https://uniform.dev/blogs/composable-architecture/the-mach-monolith

For years, the headless concept went through the nerd vine at boardrooms, pushing execs to take action. Now that everybody is jumping on the bandwagon, interesting developments have surfaced: Traditional monoliths have adopted new messaging with the terms “composable” and “headless” in it, and headless systems are integrating more monolithic-like features. Meanwhile, at a loss as to what to do to ensure that their architecture is scalable, secure, and future-proof, brands make decisions out of sheer FOMO. All that has created the beast I call the MACH Monolith.

The MACH approach for building digital architecture is the way to go, and it can be an amazing journey. However, you must apply the MACH principles correctly. This article explains what that means.

We can agree on one thing: web development is complex, hence the word development. For years, software vendors tried to simplify the job by creating suites with all the features businesses would need, from front-end accelerators to editing capabilities for rich content. Such an approach of having one platform to tackle all digital-business challenges worked pretty well.

However, drawbacks do exist. For one thing, businesses must buy into how the suite is developed as a product. Additionally, they’re stuck with vendor lock-in and dependent on the suite’s roadmap, which holds back innovation and causes developers to break out of the system with customization. When updates are necessary to the underlying monolith, the architecture becomes flawed.

A paradigm shift

The general mindset in web development is that even though everything is headless and API-first, we are still operating in the “suite” paradigm. Even the technical people who tried to break away from the monolith approach in the recent past still have that frame of mind. Paradigm shifts take time, and we are currently in the middle of one.

In today’s composable world, where architectures are crafted with best-of-breed tools, we must recognize the fact that no software can take the sting out of the challenges involved. Reality is, no full-chain covering pieces of software exist in the SaaS world even though that’s a bitter pill to swallow because that’s what we were used to with suites.

Hence, the suite approach continues to predominate, and people often tend to adopt that even while designing a modern composed architecture. As reflected across disciplines, such a practice has led to the birth of the MACH monolith, an in-between version of the old suite approach and the new composable way of designing architectures. Let’s talk about how the MACH monolith surfaced.

Monolith-like features from headless-first products

Because only techies like the headless space, the market doesn’t seem ready to fully embrace API-first designs and composable architectures. After all, APIs are techspeak, and since architectures are created with a tech hat on, the experience is unfriendly to practitioners like content editors and marketers. For details on this phenomenon, see this article on orchestrating MACH architectures.

Also, because headless systems are built by and for techies, API-first products are ahead of their time with no connecting mechanism for the composing elements to benefit all stakeholders. A way to resolve that is described later in this article.

To avoid losing market share, headless systems must have the following features to become more usable to practitioners:

  • Integration fields into the CMS and other headless systems, e.g., search, DAM, PIM, commerce, CRM, and personalization, to unify the editing experience and offer a singular API for developers.
  • An ability to preview functionalities, tightly coupling the front end to the preview SDK of the CMS.
  • An ability to compose pages inside the CMS data model to add contextualized data for compositions to the clean data model of the CMS content.
  • Routing and sitemap-related content mapping in the CMS that gives practitioners a clear overview of the system.

All those features put the CMS in the center of the universe of digital architecture. Questions come to mind, however:

  • What if you have multiple CMS systems?
  • What if you want to switch your commerce engine but it’s tightly coupled to the CMS?
  • What if you'd like to switch to another CMS?
  • What if you must add another channel like a TV app, yet the data models with desktop presentational context cannot accommodate that?

The answers to those questions result in a load of pain for developers, who often must wrestle with a system replatform every few years. With things becoming too interconnected and concerns not separated, the ultimate choice is usually to discard the old architecture and start anew. Doing that gets very expensive very fast.

Surprisingly, since the paradigm shift is as yet incomplete, the original, highly innovative API-first companies are now adding other semi headless products to their portfolio so as to stay relevant in a slightly lagging market. Consequently, software vendors must serve the mid-market tier of businesses with accelerated product launches and ease of use. Otherwise, website-in-a-box systems like WordPress or Shopify will outperform them.

Hybrid headless and pretend composability from suites

To stay relevant in the interim, traditional suite vendors are implementing a form of hybrid headless products. You can use their system in a headless, API-first manner but must stick to their way of operations. The fact that you need specialized knowledge of the system to work with it goes against the API-first proposition of total developer freedom. Still, you now have an API and, therefore, a headless system.

Suite vendors are splitting up the suite or buying additional service providers and selling their products as composable pieces to their platform. That’s not real composability because you’re not free to choose your best-of-breed tools and can only select from the vendor’s pool of services, which are generally tightly coupled to the suite's core and, therefore, challenges filled. Being interconnected and indivisible is typical of monolithic software, not composable software.

I call that approach compostable architecture.

The MACH monolith

We’re seeing a couple of patterns over and over again.

MACH Monolith

If the separation of concerns is not respected, software vendors create an indivisible and interconnected bundle of best-of-breed tools—a complicated scenario that makes it tough to discern what’s connected to what, not to mention that you have created your very own vendor lock-in. Things work in only one way, and only the original build team understands how they work. Onboarding of new team members becomes complicated and burdensome, leading to frustration among developers.

Separately, contextual composition data is often stored in the CMS and mixed with the clean data model you started with, such as adding a checkbox to spotlight an item on a page, which is a design decision for the item in a specific context. What if that context changes when the item is shown in a different place on the website? Composing pages with specific user contexts is problematic in a CMS, invariably generating dirty data over time. Instead, page composition in the context of a user must occur in the front end or a composition platform.

Another approach is not to fully interconnect the systems. That’s a great start, but where does that connection usually occur? In the front end. As a result, the front-end application contains all the knowledge of the link to all the systems that compose your website, generating a considerable risk for maintenance and security, let alone that it’s not future-proof. To be effective, a front end must be "stupid" and "stateless" for updates.

Besides, business problems also exist:

  • What if the architecture does not behave the way it’s supposed to? Determining where it went wrong is complicated.
  • Who do you seek help after pinpointing the issue? The best-of-breed tool, your team who made architecture decisions, or the agency that built the system? Businesses with a failing architecture that can’t point the liability finger eventually replatform and start the process from scratch. The MACH monolith thus ends up being much more inferior to the traditional suite with only one vendor.

The solution

What businesses need is an opinionless platform that does the following:

  • Orchestrates best-of-breed tools.
  • Offers a user-friendly interface to developers and practitioners alike.
  • Offers an entirely tech-agnostic SDK.
  • Offers no-code tools for practitioners to work with in such a way that they do not notice they are composting pages with different headless sources.

Even though the paradigm shift to truly composable architectures is still ongoing, the platform described above already exists. Enter Uniform, on which developers and marketers have complete control of their digital-experience stack, and I’m proud to run its developer relations team. Uniform is slated to solve many issues developers, architects, and practitioners will face in the coming years.

- \ No newline at end of file diff --git a/writing/the-move-from-monolithic-to-composable-architectures/_payload.json b/writing/the-move-from-monolithic-to-composable-architectures/_payload.json deleted file mode 100644 index babd1466..00000000 --- a/writing/the-move-from-monolithic-to-composable-architectures/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1298},["Reactive",2],{"content-query-jrdy5L2zwR":3,"content-navigation-8C37fagqQL":182},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":177,"_id":178,"_source":179,"_file":180,"_extension":181},"/writing/the-move-from-monolithic-to-composable-architectures","writing",false,"","The move from monolithic to composable architectures","Success in business can be attributed to many factors, notably team talent and efficacy of products...",1399554,"the-move-from-monolithic-to-composable-architectures","2023-03-13T20:42:55Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56u97go8avwyexrr01nx.png","https://uniform.dev/blogs/composable-architecture/composable-architectures-are-the-future-of-the-digital-sphere",[16,17,18,19],"mach","webdev","composable","monolith",22300,{"type":22,"children":23,"toc":171},"root",[24,32,37,42,47,52,57,64,69,74,110,126,132,137,150,156,161,166],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","Success in business can be attributed to many factors, notably team talent and efficacy of products or services. What also counts in this digital age are immersive and performant online experiences. Realistically, delivering engaging experiences is a never-ending undertaking. To avoid lagging behind rivals, brands must do that time and again in all their interactions with consumers.",{"type":25,"tag":26,"props":33,"children":34},{},[35],{"type":30,"value":36},"Can you adapt and iterate as rapidly as necessary? Can you quickly respond to current trends and launch digital experiences without tech support? When it comes to digital capabilities and speed to market, technology makes all the difference. This post explains why the industry is moving from monolithic to composable architectures and how those two architectures can actually work together.",{"type":25,"tag":26,"props":38,"children":39},{},[40],{"type":30,"value":41},"##What are monolithic applications?",{"type":25,"tag":26,"props":43,"children":44},{},[45],{"type":30,"value":46},"Built as a single unit, monolithic applications (aka monolithic architectures) are all-in-one, self-contained suites with robust features. Known as legacy systems, monolithic applications occupy a long-standing place in today’s makeup of businesses as the easy way to acquire digital capabilities. You go through one purchase for all your business needs and sign a contract with one solution provider, who would make it all happen and support you along the way.",{"type":25,"tag":26,"props":48,"children":49},{},[50],{"type":30,"value":51},"Such a mono approach might not be the best for the long haul, however. In a free-market economy, monopolies are generally frowned upon because of the guardrails put up by those dominant players, who would enforce rules and regulations to stifle or eliminate competition altogether. What’s more, monopolies have no incentives for innovation or improvements in efficiency.",{"type":25,"tag":26,"props":53,"children":54},{},[55],{"type":30,"value":56},"That’s not a direct comparison to monolithic solutions in tech per se since competition does exist among tech solution providers. Rather, a brief assessment of monopolies is helpful context for why stand-alone architectures aren't ideal for businesses. If one vendor has all the say about the ways your tech stack is used and adapted, you are limited in many ways.",{"type":25,"tag":58,"props":59,"children":61},"h2",{"id":60},"why-are-monolithic-applications-not-the-way-forward",[62],{"type":30,"value":63},"Why are monolithic applications not the way forward?",{"type":25,"tag":26,"props":65,"children":66},{},[67],{"type":30,"value":68},"A pro-con analysis shows real—or at least perceived—benefits in relying on a monolithic architecture for your tech stack. If your IT team is well versed in the vendor along with its code and operating system, an established ease of use exists. Furthermore, it feels simple to keep and manage everything in one place and to have, theoretically, one source of truth, with all the tools housed together under the purview of one provider. Not to mention that you have one all-knowing point of contact or support team to call on in case of issues.",{"type":25,"tag":26,"props":70,"children":71},{},[72],{"type":30,"value":73},"Nonetheless, given the future of business and the digital experiences consumers demand, the cons of monolithic applications far outweigh the pros in three key areas:",{"type":25,"tag":75,"props":76,"children":77},"ul",{},[78,90,100],{"type":25,"tag":79,"props":80,"children":81},"li",{},[82,88],{"type":25,"tag":83,"props":84,"children":85},"strong",{},[86],{"type":30,"value":87},"Customization",{"type":30,"value":89},". Limited is the ability to tailor monolithic applications to meet business needs. Also, even though those applications offer wide-reaching features, you might not ever use some of the features. And you’re at the whims of the monolith’s technology roadmap for innovation. For example, something you need to meet customer needs might not be available until the application’s next software update, potentially months away. In addition, in contrast to today’s fast market changes, upgrades can be time-consuming and slow with a need for developers to make changes or adaptations. With those modifications come complexities, third-party add-ons, or new applications that developers must painstakingly build themselves.",{"type":25,"tag":79,"props":91,"children":92},{},[93,98],{"type":25,"tag":83,"props":94,"children":95},{},[96],{"type":30,"value":97},"Agility",{"type":30,"value":99},". Trends change and new opportunities emerge more rapidly than monolithic applications can keep up. Adaptability becomes a struggle, especially if you’re locked into the suite on contract.",{"type":25,"tag":79,"props":101,"children":102},{},[103,108],{"type":25,"tag":83,"props":104,"children":105},{},[106],{"type":30,"value":107},"Scalability",{"type":30,"value":109},". Businesses that aspire to be fast-moving and competitive are hindered by monolithic technologies that are difficult to scale. Accordingly, growth is hampered because of the slow and heavy lift for developers to morph one monolithic architecture into an all-things-for-all-people stack.",{"type":25,"tag":26,"props":111,"children":112},{},[113,115,124],{"type":30,"value":114},"Another hurdle businesses face is adapting a monolithic application to be composable or as a “",{"type":25,"tag":116,"props":117,"children":121},"a",{"href":118,"rel":119},"https://dev.to/timbenniks/the-mach-monolith-2knd",[120],"nofollow",[122],{"type":30,"value":123},"MACH monolith",{"type":30,"value":125},".” Rather than replatforming or ditching an established monolithic architecture to build a new microservices-centric one, brands apply API-first and composable solutions to an existing framework by integrating a host of composable products. Doing so could seriously muddy the waters, however, creating a beast of an architecture that’s not composable, sustainable, or agile.",{"type":25,"tag":58,"props":127,"children":129},{"id":128},"how-can-monoliths-and-composable-work-together",[130],{"type":30,"value":131},"How can monoliths and composable work together?",{"type":25,"tag":26,"props":133,"children":134},{},[135],{"type":30,"value":136},"Legacy monolithic architectures can, in fact, work with composable applications through digital experience composition platform (DXCP), which acts as composable’s opinionless foundation by doing the following:",{"type":25,"tag":75,"props":138,"children":139},{},[140,145],{"type":25,"tag":79,"props":141,"children":142},{},[143],{"type":30,"value":144},"Offer the prebuilt system integrations and tools business users need, lightening the burden of innovation through new features.",{"type":25,"tag":79,"props":146,"children":147},{},[148],{"type":30,"value":149},"Enable teams to merge their legacy platform with a composable approach, orchestrating best-of-need tools and offering a user-friendly interface for developers and practitioners alike.",{"type":25,"tag":58,"props":151,"children":153},{"id":152},"how-does-dxcp-help-make-composable-mainstream",[154],{"type":30,"value":155},"How does DXCP help make composable mainstream?",{"type":25,"tag":26,"props":157,"children":158},{},[159],{"type":30,"value":160},"Without doubt, monolithic architectures are no longer ideal for brands that are focused on creating digital experiences that drive impact and conversions. Composable architectures give control of the experience-creation process to the brands responsible for the end results, instead of one tech vendor.",{"type":25,"tag":26,"props":162,"children":163},{},[164],{"type":30,"value":165},"Despite the promise of future-ready composable stacks, building them can be a slow and expensive process, with weeks of custom glue code needed to integrate the multiple services. They are often also incredibly frustrating for marketing teams, content writers, graphic designers, and other business users, as previously simple tasks require multiple tools and developer support.",{"type":25,"tag":26,"props":167,"children":168},{},[169],{"type":30,"value":170},"This is where DXCP and companies like Uniform enter the picture. With rapid integration tools that dramatically speed system build and maintenance and powerful no-code interfaces for marketers and other business users to create engrossing experiences in a single, integrated environment using every tool they need.",{"title":7,"searchDepth":172,"depth":172,"links":173},2,[174,175,176],{"id":60,"depth":172,"text":63},{"id":128,"depth":172,"text":131},{"id":152,"depth":172,"text":155},"markdown","content:4.writing:the-move-from-monolithic-to-composable-architectures.md","content","4.writing/the-move-from-monolithic-to-composable-architectures.md","md",[183,186,978,1053,1289,1292,1295],{"title":184,"_path":185},"About","/about",{"title":187,"_path":188,"children":189},"videos","/videos",[190,209,228,274,275,327,430,453,475,803],{"title":191,"_path":192,"children":193},"Alive And Kicking","/videos/alive-and-kicking",[194,197,200,203,206],{"title":195,"_path":196},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":198,"_path":199},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":201,"_path":202},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":204,"_path":205},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":207,"_path":208},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":210,"_path":211,"children":212},"Headless Creator","/videos/headless-creator",[213,216,219,222,225],{"title":214,"_path":215},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":217,"_path":218},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":220,"_path":221},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":223,"_path":224},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":226,"_path":227},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":229,"_path":230,"children":231},"Hygraph","/videos/hygraph",[232,235,238,241,244,247,250,253,256,259,262,265,268,271],{"title":233,"_path":234},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":236,"_path":237},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":239,"_path":240},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":242,"_path":243},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":245,"_path":246},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":248,"_path":249},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":251,"_path":252},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":254,"_path":255},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":257,"_path":258},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":260,"_path":261},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":263,"_path":264},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":266,"_path":267},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":269,"_path":270},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":272,"_path":273},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":187,"_path":188},{"title":276,"_path":277,"children":278},"Live Hygraph","/videos/live-hygraph",[279,282,285,288,291,294,297,300,303,306,309,312,315,318,321,324],{"title":280,"_path":281},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":283,"_path":284},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":286,"_path":287},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":289,"_path":290},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":292,"_path":293},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":295,"_path":296},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":298,"_path":299},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":301,"_path":302},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":304,"_path":305},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":307,"_path":308},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":310,"_path":311},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":313,"_path":314},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":316,"_path":317},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":319,"_path":320},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":322,"_path":323},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":325,"_path":326},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":328,"_path":329,"children":330},"Live Uniform","/videos/live-uniform",[331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,382,385,388,391,394,397,400,403,406,409,412,415,418,421,424,427],{"title":332,"_path":333},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":335,"_path":336},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":338,"_path":339},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":341,"_path":342},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":344,"_path":345},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":347,"_path":348},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":350,"_path":351},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":353,"_path":354},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":356,"_path":357},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":359,"_path":360},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":362,"_path":363},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":365,"_path":366},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":368,"_path":369},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":371,"_path":372},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":374,"_path":375},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":377,"_path":378},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":380,"_path":381},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":383,"_path":384},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":386,"_path":387},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":389,"_path":390},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":392,"_path":393},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":395,"_path":396},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":398,"_path":399},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":401,"_path":402},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":404,"_path":405},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":407,"_path":408},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":410,"_path":411},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":413,"_path":414},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":416,"_path":417},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":419,"_path":420},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":422,"_path":423},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":425,"_path":426},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":428,"_path":429},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":431,"_path":432,"children":433},"Misc Streams","/videos/misc-streams",[434,437,440,443,445,447,450],{"title":435,"_path":436},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":438,"_path":439},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":441,"_path":442},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":425,"_path":444},"/videos/misc-streams/003-jvgiaotcerq",{"title":416,"_path":446},"/videos/misc-streams/004-ekut1koa2n8",{"title":448,"_path":449},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":451,"_path":452},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":454,"_path":455,"children":456},"Mp","/videos/mp",[457,460,463,466,469,472],{"title":458,"_path":459},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":461,"_path":462},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":464,"_path":465},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":467,"_path":468},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":470,"_path":471},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":473,"_path":474},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":476,"_path":477,"children":478},"Tim","/videos/tim",[479,481,484,487,490,493,496,499,502,505,508,511,514,517,520,523,526,529,531,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800],{"title":198,"_path":480},"/videos/tim/000-mvq-_s20ndk",{"title":482,"_path":483},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":485,"_path":486},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":488,"_path":489},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":491,"_path":492},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":494,"_path":495},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":497,"_path":498},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":500,"_path":501},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":503,"_path":504},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":506,"_path":507},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":509,"_path":510},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":512,"_path":513},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":515,"_path":516},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":518,"_path":519},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":521,"_path":522},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":524,"_path":525},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":527,"_path":528},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":201,"_path":530},"/videos/tim/017-m0mrligs6i0",{"title":195,"_path":532},"/videos/tim/018-hhpitreyobi",{"title":534,"_path":535},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":537,"_path":538},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":540,"_path":541},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":543,"_path":544},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":546,"_path":547},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":549,"_path":550},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":552,"_path":553},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":555,"_path":556},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":558,"_path":559},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":561,"_path":562},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":564,"_path":565},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":567,"_path":568},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":570,"_path":571},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":573,"_path":574},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":576,"_path":577},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":579,"_path":580},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":582,"_path":583},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":585,"_path":586},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":588,"_path":589},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":591,"_path":592},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":594,"_path":595},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":597,"_path":598},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":600,"_path":601},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":603,"_path":604},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":606,"_path":607},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":609,"_path":610},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":612,"_path":613},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":615,"_path":616},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":618,"_path":619},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":621,"_path":622},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":624,"_path":625},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":627,"_path":628},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":630,"_path":631},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":633,"_path":634},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":636,"_path":637},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":639,"_path":640},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":642,"_path":643},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":645,"_path":646},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":648,"_path":649},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":651,"_path":652},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":654,"_path":655},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":657,"_path":658},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":660,"_path":661},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":663,"_path":664},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":666,"_path":667},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":669,"_path":670},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":672,"_path":673},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":675,"_path":676},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":678,"_path":679},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":681,"_path":682},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":684,"_path":685},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":687,"_path":688},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":690,"_path":691},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":693,"_path":694},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":696,"_path":697},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":699,"_path":700},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":702,"_path":703},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":705,"_path":706},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":708,"_path":709},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":711,"_path":712},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":714,"_path":715},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":717,"_path":718},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":720,"_path":721},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":723,"_path":724},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":726,"_path":727},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":729,"_path":730},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":732,"_path":733},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":735,"_path":736},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":738,"_path":739},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":741,"_path":742},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":744,"_path":745},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":747,"_path":748},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":750,"_path":751},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":753,"_path":754},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":756,"_path":757},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":759,"_path":760},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":762,"_path":763},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":765,"_path":766},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":768,"_path":769},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":771,"_path":772},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":774,"_path":775},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":777,"_path":778},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":780,"_path":781},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":783,"_path":784},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":786,"_path":787},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":789,"_path":790},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":792,"_path":793},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":795,"_path":796},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":798,"_path":799},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":801,"_path":802},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":804,"_path":805,"children":806},"Uniform","/videos/uniform",[807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975],{"title":808,"_path":809},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":811,"_path":812},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":814,"_path":815},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":817,"_path":818},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":820,"_path":821},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":823,"_path":824},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":826,"_path":827},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":829,"_path":830},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":832,"_path":833},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":835,"_path":836},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":838,"_path":839},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":841,"_path":842},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":844,"_path":845},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":847,"_path":848},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":850,"_path":851},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":853,"_path":854},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":856,"_path":857},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":859,"_path":860},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":862,"_path":863},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":865,"_path":866},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":868,"_path":869},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":871,"_path":872},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":874,"_path":875},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":877,"_path":878},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":880,"_path":881},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":883,"_path":884},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":886,"_path":887},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":889,"_path":890},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":892,"_path":893},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":895,"_path":896},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":898,"_path":899},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":901,"_path":902},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":904,"_path":905},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":907,"_path":908},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":910,"_path":911},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":913,"_path":914},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":916,"_path":917},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":919,"_path":920},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":922,"_path":923},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":925,"_path":926},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":928,"_path":929},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":931,"_path":932},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":934,"_path":935},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":937,"_path":938},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":940,"_path":941},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":943,"_path":944},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":946,"_path":947},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":949,"_path":950},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":952,"_path":953},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":955,"_path":956},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":958,"_path":959},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":961,"_path":962},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":964,"_path":965},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":967,"_path":968},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":970,"_path":971},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":973,"_path":974},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":976,"_path":977},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":979,"_path":980,"children":981},"Writing","/writing",[982,985,988,991,994,997,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1035,1038,1041,1044,1047,1050],{"title":983,"_path":984},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":986,"_path":987},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":989,"_path":990},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":992,"_path":993},"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":995,"_path":996},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":979,"_path":980},{"title":999,"_path":1000},"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":1002,"_path":1003},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1005,"_path":1006},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1008,"_path":1009},"My Fitness Story","/writing/my-fitness-story",{"title":1011,"_path":1012},"New job alert!","/writing/new-job-alert",{"title":1014,"_path":1015},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1017,"_path":1018},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1020,"_path":1021},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1023,"_path":1024},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1026,"_path":1027},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1029,"_path":1030},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1032,"_path":1033},"The MACH monolith","/writing/the-mach-monolith",{"title":8,"_path":4},{"title":1036,"_path":1037},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1039,"_path":1040},"This is headless 2.0","/writing/this-is-headless-20",{"title":1042,"_path":1043},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1045,"_path":1046},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1048,"_path":1049},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1051,"_path":1052},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1054,"_path":1055,"children":1056},"Speaking","/speaking",[1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288],{"title":1058,"_path":1059},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1061,"_path":1062},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1064,"_path":1065},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1067,"_path":1068},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1070,"_path":1071},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1073,"_path":1074},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1076,"_path":1077},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1079,"_path":1080},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1082,"_path":1083},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1085,"_path":1086},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1088,"_path":1089},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1091,"_path":1092},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1094,"_path":1095},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1097,"_path":1098},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1100,"_path":1101},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1103,"_path":1104},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1106,"_path":1107},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1109,"_path":1110},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1112,"_path":1113},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1115,"_path":1116},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1118,"_path":1119},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1121,"_path":1122},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1124,"_path":1125},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1127,"_path":1128},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1130,"_path":1131},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1133,"_path":1134},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1136,"_path":1137},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1139,"_path":1140},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1142,"_path":1143},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1145,"_path":1146},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1148,"_path":1149},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1151,"_path":1152},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1154,"_path":1155},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1157,"_path":1158},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1160,"_path":1161},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1163,"_path":1164},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1166,"_path":1167},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1169,"_path":1170},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1172,"_path":1173},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1175,"_path":1176},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1178,"_path":1179},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1181,"_path":1182},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1184,"_path":1185},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1187,"_path":1188},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1190,"_path":1191},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1193,"_path":1194},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1196,"_path":1197},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1199,"_path":1200},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1202,"_path":1203},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1205,"_path":1206},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1208,"_path":1209},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1211,"_path":1212},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1214,"_path":1215},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1217,"_path":1218},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1220,"_path":1221},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1223,"_path":1224},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1226,"_path":1227},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1229,"_path":1230},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1232,"_path":1233},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1235,"_path":1236},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1238,"_path":1239},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1241,"_path":1242},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1244,"_path":1245},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1247,"_path":1248},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1250,"_path":1251},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1253,"_path":1254},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1256,"_path":1257},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1259,"_path":1260},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1262,"_path":1263},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1265,"_path":1266},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1268,"_path":1269},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1271,"_path":1272},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1274,"_path":1275},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1277,"_path":1278},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1280,"_path":1281},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1283,"_path":1284},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1286,"_path":1287},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1054,"_path":1055},{"title":1290,"_path":1291},"live streams","/livestreams",{"title":1293,"_path":1294},"press kit","/presskit",{"title":1296,"_path":1297},"alive and kicking","/alive-and-kicking",1718484379847] \ No newline at end of file diff --git a/writing/the-move-from-monolithic-to-composable-architectures/index.html b/writing/the-move-from-monolithic-to-composable-architectures/index.html deleted file mode 100644 index a77b35f7..00000000 --- a/writing/the-move-from-monolithic-to-composable-architectures/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - -The move from monolithic to composable architectures - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The move from monolithic to composable architectures

Mar 13, 2023 at https://uniform.dev/blogs/composable-architecture/composable-architectures-are-the-future-of-the-digital-sphere

Success in business can be attributed to many factors, notably team talent and efficacy of products or services. What also counts in this digital age are immersive and performant online experiences. Realistically, delivering engaging experiences is a never-ending undertaking. To avoid lagging behind rivals, brands must do that time and again in all their interactions with consumers.

Can you adapt and iterate as rapidly as necessary? Can you quickly respond to current trends and launch digital experiences without tech support? When it comes to digital capabilities and speed to market, technology makes all the difference. This post explains why the industry is moving from monolithic to composable architectures and how those two architectures can actually work together.

##What are monolithic applications?

Built as a single unit, monolithic applications (aka monolithic architectures) are all-in-one, self-contained suites with robust features. Known as legacy systems, monolithic applications occupy a long-standing place in today’s makeup of businesses as the easy way to acquire digital capabilities. You go through one purchase for all your business needs and sign a contract with one solution provider, who would make it all happen and support you along the way.

Such a mono approach might not be the best for the long haul, however. In a free-market economy, monopolies are generally frowned upon because of the guardrails put up by those dominant players, who would enforce rules and regulations to stifle or eliminate competition altogether. What’s more, monopolies have no incentives for innovation or improvements in efficiency.

That’s not a direct comparison to monolithic solutions in tech per se since competition does exist among tech solution providers. Rather, a brief assessment of monopolies is helpful context for why stand-alone architectures aren't ideal for businesses. If one vendor has all the say about the ways your tech stack is used and adapted, you are limited in many ways.

Why are monolithic applications not the way forward?

A pro-con analysis shows real—or at least perceived—benefits in relying on a monolithic architecture for your tech stack. If your IT team is well versed in the vendor along with its code and operating system, an established ease of use exists. Furthermore, it feels simple to keep and manage everything in one place and to have, theoretically, one source of truth, with all the tools housed together under the purview of one provider. Not to mention that you have one all-knowing point of contact or support team to call on in case of issues.

Nonetheless, given the future of business and the digital experiences consumers demand, the cons of monolithic applications far outweigh the pros in three key areas:

  • Customization. Limited is the ability to tailor monolithic applications to meet business needs. Also, even though those applications offer wide-reaching features, you might not ever use some of the features. And you’re at the whims of the monolith’s technology roadmap for innovation. For example, something you need to meet customer needs might not be available until the application’s next software update, potentially months away. In addition, in contrast to today’s fast market changes, upgrades can be time-consuming and slow with a need for developers to make changes or adaptations. With those modifications come complexities, third-party add-ons, or new applications that developers must painstakingly build themselves.
  • Agility. Trends change and new opportunities emerge more rapidly than monolithic applications can keep up. Adaptability becomes a struggle, especially if you’re locked into the suite on contract.
  • Scalability. Businesses that aspire to be fast-moving and competitive are hindered by monolithic technologies that are difficult to scale. Accordingly, growth is hampered because of the slow and heavy lift for developers to morph one monolithic architecture into an all-things-for-all-people stack.

Another hurdle businesses face is adapting a monolithic application to be composable or as a “MACH monolith.” Rather than replatforming or ditching an established monolithic architecture to build a new microservices-centric one, brands apply API-first and composable solutions to an existing framework by integrating a host of composable products. Doing so could seriously muddy the waters, however, creating a beast of an architecture that’s not composable, sustainable, or agile.

How can monoliths and composable work together?

Legacy monolithic architectures can, in fact, work with composable applications through digital experience composition platform (DXCP), which acts as composable’s opinionless foundation by doing the following:

  • Offer the prebuilt system integrations and tools business users need, lightening the burden of innovation through new features.
  • Enable teams to merge their legacy platform with a composable approach, orchestrating best-of-need tools and offering a user-friendly interface for developers and practitioners alike.

How does DXCP help make composable mainstream?

Without doubt, monolithic architectures are no longer ideal for brands that are focused on creating digital experiences that drive impact and conversions. Composable architectures give control of the experience-creation process to the brands responsible for the end results, instead of one tech vendor.

Despite the promise of future-ready composable stacks, building them can be a slow and expensive process, with weeks of custom glue code needed to integrate the multiple services. They are often also incredibly frustrating for marketing teams, content writers, graphic designers, and other business users, as previously simple tasks require multiple tools and developer support.

This is where DXCP and companies like Uniform enter the picture. With rapid integration tools that dramatically speed system build and maintenance and powerful no-code interfaces for marketers and other business users to create engrossing experiences in a single, integrated environment using every tool they need.

- \ No newline at end of file diff --git a/writing/the-real-deal-about-content-management-buzzword/_payload.json b/writing/the-real-deal-about-content-management-buzzword/_payload.json index bc3173a3..1f34d174 100644 --- a/writing/the-real-deal-about-content-management-buzzword/_payload.json +++ b/writing/the-real-deal-about-content-management-buzzword/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1548},["Reactive",2],{"content-query-593lHVHToM":3,"content-navigation-8C37fagqQL":432},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":427,"_id":428,"_source":429,"_file":430,"_extension":431},"/writing/the-real-deal-about-content-management-buzzword","writing",false,"","The real deal about content management buzzwords","Buzzwords are labels that describe tech approaches that become so commonplace over time that the...",1614626,"the-real-deal-about-content-management-buzzword","2023-09-28T14:43:37Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr5frm3ra3q3liidcpev.jpg","https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords",[16,17,18,19],"buzzwords","dxp","composable","cms",22300,{"type":22,"children":23,"toc":411},"root",[24,32,37,53,65,72,84,89,135,147,152,164,169,174,181,187,201,206,213,219,231,236,244,250,255,260,268,274,287,294,299,313,319,324,329,335,358,366,371,377,382,387,395,401,406],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too.",{"type":25,"tag":26,"props":33,"children":34},{},[35],{"type":30,"value":36},"First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter.",{"type":25,"tag":26,"props":38,"children":39},{},[40,42,51],{"type":30,"value":41},"Do you like watching more than reading? Watch this ",{"type":25,"tag":43,"props":44,"children":48},"a",{"href":45,"rel":46},"https://www.youtube.com/watch?v=EXzp3OkQTXk",[47],"nofollow",[49],{"type":30,"value":50},"YouTube video",{"type":30,"value":52}," instead.",{"type":25,"tag":26,"props":54,"children":55},{},[56,58,63],{"type":30,"value":57},"{% embed ",{"type":25,"tag":43,"props":59,"children":61},{"href":45,"rel":60},[47],[62],{"type":30,"value":45},{"type":30,"value":64}," %}",{"type":25,"tag":66,"props":67,"children":69},"h2",{"id":68},"mach",[70],{"type":30,"value":71},"MACH",{"type":25,"tag":26,"props":73,"children":74},{},[75,82],{"type":25,"tag":43,"props":76,"children":79},{"href":77,"rel":78},"https://hygraph.com/blog/mach-architecture",[47],[80],{"type":30,"value":81},"MACH architecture",{"type":30,"value":83}," comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless.",{"type":25,"tag":26,"props":85,"children":86},{},[87],{"type":30,"value":88},"Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members.",{"type":25,"tag":90,"props":91,"children":92},"ul",{},[93,105,115,125],{"type":25,"tag":94,"props":95,"children":96},"li",{},[97,103],{"type":25,"tag":98,"props":99,"children":100},"strong",{},[101],{"type":30,"value":102},"Microservices",{"type":30,"value":104}," are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures.",{"type":25,"tag":94,"props":106,"children":107},{},[108,113],{"type":25,"tag":98,"props":109,"children":110},{},[111],{"type":30,"value":112},"API-first",{"type":30,"value":114}," means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications.",{"type":25,"tag":94,"props":116,"children":117},{},[118,123],{"type":25,"tag":98,"props":119,"children":120},{},[121],{"type":30,"value":122},"Cloud-native",{"type":30,"value":124}," means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing.",{"type":25,"tag":94,"props":126,"children":127},{},[128,133],{"type":25,"tag":98,"props":129,"children":130},{},[131],{"type":30,"value":132},"Headless",{"type":30,"value":134}," means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end.",{"type":25,"tag":26,"props":136,"children":137},{},[138],{"type":25,"tag":139,"props":140,"children":146},"img",{"alt":68,"loading":141,"provider":142,"sizes":143,"src":144,"width":145},"lazy","cloudinary","sm:100vw","https://media.graphassets.com/jZfjXdJMSGTG1gLrwGQQ",1280,[],{"type":25,"tag":66,"props":148,"children":149},{"id":18},[150],{"type":30,"value":151},"Composable",{"type":25,"tag":26,"props":153,"children":154},{},[155,162],{"type":25,"tag":43,"props":156,"children":159},{"href":157,"rel":158},"https://hygraph.com/blog/composable-architecture",[47],[160],{"type":30,"value":161},"Composable architecture",{"type":30,"value":163}," refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems.",{"type":25,"tag":26,"props":165,"children":166},{},[167],{"type":30,"value":168},"While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first \"A\" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware.",{"type":25,"tag":26,"props":170,"children":171},{},[172],{"type":30,"value":173},"Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions.",{"type":25,"tag":26,"props":175,"children":176},{},[177],{"type":25,"tag":139,"props":178,"children":180},{"alt":18,"loading":141,"provider":142,"sizes":143,"src":179,"width":145},"https://media.graphassets.com/D2oCAxwTpuhKfZ5xwEB0",[],{"type":25,"tag":66,"props":182,"children":184},{"id":183},"dxp-digital-experience-platform",[185],{"type":30,"value":186},"DXP (Digital Experience Platform)",{"type":25,"tag":26,"props":188,"children":189},{},[190,192,199],{"type":30,"value":191},"A ",{"type":25,"tag":43,"props":193,"children":196},{"href":194,"rel":195},"https://hygraph.com/blog/what-is-a-dxp",[47],[197],{"type":30,"value":198},"digital experience platform (DXP)",{"type":30,"value":200}," is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences.",{"type":25,"tag":26,"props":202,"children":203},{},[204],{"type":30,"value":205},"Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies.",{"type":25,"tag":26,"props":207,"children":208},{},[209],{"type":25,"tag":139,"props":210,"children":212},{"alt":17,"loading":141,"provider":142,"sizes":143,"src":211,"width":145},"https://media.graphassets.com/rIUS6taoQJ2pcvTDA2YZ",[],{"type":25,"tag":66,"props":214,"children":216},{"id":215},"dxc-digital-experience-composition",[217],{"type":30,"value":218},"DXC (Digital Experience Composition)",{"type":25,"tag":26,"props":220,"children":221},{},[222,229],{"type":25,"tag":43,"props":223,"children":226},{"href":224,"rel":225},"https://hygraph.com/blog/digital-experience-composition",[47],[227],{"type":30,"value":228},"Digital experience composition",{"type":30,"value":230}," refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data.",{"type":25,"tag":26,"props":232,"children":233},{},[234],{"type":30,"value":235},"DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone.",{"type":25,"tag":26,"props":237,"children":238},{},[239],{"type":25,"tag":139,"props":240,"children":243},{"alt":241,"loading":141,"provider":142,"sizes":143,"src":242,"width":145},"dxc","https://media.graphassets.com/irNrx7isRUKaZ0QoDnzQ",[],{"type":25,"tag":66,"props":245,"children":247},{"id":246},"dxo-digital-experience-orchestration",[248],{"type":30,"value":249},"DXO (Digital Experience Orchestration)",{"type":25,"tag":26,"props":251,"children":252},{},[253],{"type":30,"value":254},"Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience.",{"type":25,"tag":26,"props":256,"children":257},{},[258],{"type":30,"value":259},"DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user.",{"type":25,"tag":26,"props":261,"children":262},{},[263],{"type":25,"tag":139,"props":264,"children":267},{"alt":265,"loading":141,"provider":142,"sizes":143,"src":266,"width":145},"dxo","https://media.graphassets.com/WgGDwsNLTTa4wAoL7WVd",[],{"type":25,"tag":66,"props":269,"children":271},{"id":270},"why-you-dont-have-to-care-about-the-buzzwords",[272],{"type":30,"value":273},"Why you don’t have to care about the buzzwords",{"type":25,"tag":26,"props":275,"children":276},{},[277,279,285],{"type":30,"value":278},"Ultimately, it is up to ",{"type":25,"tag":280,"props":281,"children":282},"em",{},[283],{"type":30,"value":284},"you",{"type":30,"value":286}," to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before.",{"type":25,"tag":288,"props":289,"children":291},"h3",{"id":290},"company-maturity",[292],{"type":30,"value":293},"Company maturity",{"type":25,"tag":26,"props":295,"children":296},{},[297],{"type":30,"value":298},"As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases.",{"type":25,"tag":26,"props":300,"children":301},{},[302,304,311],{"type":30,"value":303},"However, as companies mature, they may struggle with the ",{"type":25,"tag":43,"props":305,"children":308},{"href":306,"rel":307},"https://hygraph.com/blog/monolithic-cms-limitations",[47],[309],{"type":30,"value":310},"limitations of these monoliths",{"type":30,"value":312},". Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry.",{"type":25,"tag":288,"props":314,"children":316},{"id":315},"connecting-it-all",[317],{"type":30,"value":318},"Connecting it all",{"type":25,"tag":26,"props":320,"children":321},{},[322],{"type":30,"value":323},"Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use.",{"type":25,"tag":26,"props":325,"children":326},{},[327],{"type":30,"value":328},"The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture.",{"type":25,"tag":288,"props":330,"children":332},{"id":331},"content-federation",[333],{"type":30,"value":334},"Content federation",{"type":25,"tag":26,"props":336,"children":337},{},[338,340,347,349,356],{"type":30,"value":339},"To avoid a ",{"type":25,"tag":43,"props":341,"children":344},{"href":342,"rel":343},"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/",[47],[345],{"type":30,"value":346},"MACH monolith",{"type":30,"value":348}," or ",{"type":25,"tag":43,"props":350,"children":353},{"href":351,"rel":352},"https://www.youtube.com/watch?v=so7-c2bOXpA",[47],[354],{"type":30,"value":355},"MACHlash",{"type":30,"value":357},", you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems.",{"type":25,"tag":26,"props":359,"children":360},{},[361],{"type":25,"tag":139,"props":362,"children":365},{"alt":363,"loading":141,"provider":142,"sizes":143,"src":364,"width":145},"content federation","https://media.graphassets.com/fbNw1hhTSHykSwk19ggJ",[],{"type":25,"tag":26,"props":367,"children":368},{},[369],{"type":30,"value":370},"Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information.",{"type":25,"tag":288,"props":372,"children":374},{"id":373},"after-content-federation-is-in-place",[375],{"type":30,"value":376},"After Content federation is in place",{"type":25,"tag":26,"props":378,"children":379},{},[380],{"type":30,"value":381},"Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later.",{"type":25,"tag":26,"props":383,"children":384},{},[385],{"type":30,"value":386},"If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool.",{"type":25,"tag":26,"props":388,"children":389},{},[390],{"type":25,"tag":139,"props":391,"children":394},{"alt":392,"loading":141,"provider":142,"sizes":143,"src":393,"width":145},"after content federation","https://media.graphassets.com/4xZbpHRgTI2CzXQ88GG7",[],{"type":25,"tag":66,"props":396,"children":398},{"id":397},"concluding",[399],{"type":30,"value":400},"Concluding",{"type":25,"tag":26,"props":402,"children":403},{},[404],{"type":30,"value":405},"Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems.",{"type":25,"tag":26,"props":407,"children":408},{},[409],{"type":30,"value":410},"Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between.",{"title":7,"searchDepth":412,"depth":412,"links":413},2,[414,415,416,417,418,419,426],{"id":68,"depth":412,"text":71},{"id":18,"depth":412,"text":151},{"id":183,"depth":412,"text":186},{"id":215,"depth":412,"text":218},{"id":246,"depth":412,"text":249},{"id":270,"depth":412,"text":273,"children":420},[421,423,424,425],{"id":290,"depth":422,"text":293},3,{"id":315,"depth":422,"text":318},{"id":331,"depth":422,"text":334},{"id":373,"depth":422,"text":376},{"id":397,"depth":412,"text":400},"markdown","content:4.writing:the-real-deal-about-content-management-buzzword.md","content","4.writing/the-real-deal-about-content-management-buzzword.md","md",[433,436,1228,1303,1539,1542,1545],{"title":434,"_path":435},"About","/about",{"title":437,"_path":438,"children":439},"videos","/videos",[440,459,478,524,525,577,680,703,725,1053],{"title":441,"_path":442,"children":443},"Alive And Kicking","/videos/alive-and-kicking",[444,447,450,453,456],{"title":445,"_path":446},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":448,"_path":449},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":451,"_path":452},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":454,"_path":455},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":457,"_path":458},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":460,"_path":461,"children":462},"Headless Creator","/videos/headless-creator",[463,466,469,472,475],{"title":464,"_path":465},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":467,"_path":468},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":470,"_path":471},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":473,"_path":474},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":476,"_path":477},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":479,"_path":480,"children":481},"Hygraph","/videos/hygraph",[482,485,488,491,494,497,500,503,506,509,512,515,518,521],{"title":483,"_path":484},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":486,"_path":487},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":489,"_path":490},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":492,"_path":493},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":495,"_path":496},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":498,"_path":499},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":501,"_path":502},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":504,"_path":505},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":507,"_path":508},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":510,"_path":511},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":513,"_path":514},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":516,"_path":517},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":519,"_path":520},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":522,"_path":523},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":437,"_path":438},{"title":526,"_path":527,"children":528},"Live Hygraph","/videos/live-hygraph",[529,532,535,538,541,544,547,550,553,556,559,562,565,568,571,574],{"title":530,"_path":531},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":533,"_path":534},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":536,"_path":537},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":539,"_path":540},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":542,"_path":543},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":545,"_path":546},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":548,"_path":549},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":551,"_path":552},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":554,"_path":555},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":557,"_path":558},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":560,"_path":561},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":563,"_path":564},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":566,"_path":567},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":569,"_path":570},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":572,"_path":573},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":575,"_path":576},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":578,"_path":579,"children":580},"Live Uniform","/videos/live-uniform",[581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677],{"title":582,"_path":583},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":585,"_path":586},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":588,"_path":589},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":591,"_path":592},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":594,"_path":595},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":597,"_path":598},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":600,"_path":601},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":603,"_path":604},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":606,"_path":607},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":609,"_path":610},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":612,"_path":613},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":615,"_path":616},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":618,"_path":619},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":621,"_path":622},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":624,"_path":625},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":627,"_path":628},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":630,"_path":631},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":633,"_path":634},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":636,"_path":637},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":639,"_path":640},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":642,"_path":643},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":645,"_path":646},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":648,"_path":649},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":651,"_path":652},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":654,"_path":655},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":657,"_path":658},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":660,"_path":661},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":663,"_path":664},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":666,"_path":667},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":669,"_path":670},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":672,"_path":673},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":675,"_path":676},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":678,"_path":679},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":681,"_path":682,"children":683},"Misc Streams","/videos/misc-streams",[684,687,690,693,695,697,700],{"title":685,"_path":686},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":688,"_path":689},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":691,"_path":692},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":675,"_path":694},"/videos/misc-streams/003-jvgiaotcerq",{"title":666,"_path":696},"/videos/misc-streams/004-ekut1koa2n8",{"title":698,"_path":699},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":701,"_path":702},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":704,"_path":705,"children":706},"Mp","/videos/mp",[707,710,713,716,719,722],{"title":708,"_path":709},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":711,"_path":712},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":714,"_path":715},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":717,"_path":718},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":720,"_path":721},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":723,"_path":724},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":726,"_path":727,"children":728},"Tim","/videos/tim",[729,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,781,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050],{"title":448,"_path":730},"/videos/tim/000-mvq-_s20ndk",{"title":732,"_path":733},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":735,"_path":736},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":738,"_path":739},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":741,"_path":742},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":744,"_path":745},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":747,"_path":748},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":750,"_path":751},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":753,"_path":754},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":756,"_path":757},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":759,"_path":760},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":762,"_path":763},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":765,"_path":766},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":768,"_path":769},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":771,"_path":772},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":774,"_path":775},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":777,"_path":778},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":451,"_path":780},"/videos/tim/017-m0mrligs6i0",{"title":445,"_path":782},"/videos/tim/018-hhpitreyobi",{"title":784,"_path":785},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":787,"_path":788},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":790,"_path":791},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":793,"_path":794},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":796,"_path":797},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":799,"_path":800},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":802,"_path":803},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":805,"_path":806},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":808,"_path":809},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":811,"_path":812},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":814,"_path":815},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":817,"_path":818},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":820,"_path":821},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":823,"_path":824},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":826,"_path":827},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":829,"_path":830},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":832,"_path":833},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":835,"_path":836},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":838,"_path":839},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":841,"_path":842},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":844,"_path":845},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":847,"_path":848},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":850,"_path":851},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":853,"_path":854},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":856,"_path":857},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":859,"_path":860},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":862,"_path":863},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":865,"_path":866},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":868,"_path":869},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":871,"_path":872},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":874,"_path":875},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":877,"_path":878},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":880,"_path":881},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":883,"_path":884},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":886,"_path":887},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":889,"_path":890},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":892,"_path":893},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":895,"_path":896},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":898,"_path":899},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":901,"_path":902},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":904,"_path":905},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":907,"_path":908},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":910,"_path":911},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":913,"_path":914},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":916,"_path":917},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":919,"_path":920},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":922,"_path":923},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":925,"_path":926},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":928,"_path":929},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":931,"_path":932},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":934,"_path":935},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":937,"_path":938},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":940,"_path":941},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":943,"_path":944},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":946,"_path":947},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":949,"_path":950},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":952,"_path":953},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":955,"_path":956},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":958,"_path":959},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":961,"_path":962},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":964,"_path":965},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":967,"_path":968},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":970,"_path":971},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":973,"_path":974},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":976,"_path":977},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":979,"_path":980},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":982,"_path":983},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":985,"_path":986},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":988,"_path":989},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":991,"_path":992},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":994,"_path":995},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":997,"_path":998},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":1000,"_path":1001},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":1003,"_path":1004},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":1006,"_path":1007},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":1009,"_path":1010},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":1012,"_path":1013},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":1015,"_path":1016},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":1018,"_path":1019},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":1021,"_path":1022},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":1024,"_path":1025},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":1027,"_path":1028},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":1030,"_path":1031},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":1033,"_path":1034},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":1036,"_path":1037},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":1039,"_path":1040},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":1042,"_path":1043},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":1045,"_path":1046},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":1048,"_path":1049},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":1051,"_path":1052},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":1054,"_path":1055,"children":1056},"Uniform","/videos/uniform",[1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225],{"title":1058,"_path":1059},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":1061,"_path":1062},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":1064,"_path":1065},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":1067,"_path":1068},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":1070,"_path":1071},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":1073,"_path":1074},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":1076,"_path":1077},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1079,"_path":1080},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1082,"_path":1083},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1085,"_path":1086},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1088,"_path":1089},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1091,"_path":1092},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1094,"_path":1095},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1097,"_path":1098},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1100,"_path":1101},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1103,"_path":1104},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1106,"_path":1107},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1109,"_path":1110},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1112,"_path":1113},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1115,"_path":1116},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1118,"_path":1119},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1121,"_path":1122},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1124,"_path":1125},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1127,"_path":1128},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1130,"_path":1131},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1133,"_path":1134},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1136,"_path":1137},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1139,"_path":1140},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1142,"_path":1143},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1145,"_path":1146},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1148,"_path":1149},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1151,"_path":1152},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1154,"_path":1155},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1157,"_path":1158},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1160,"_path":1161},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1163,"_path":1164},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1166,"_path":1167},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1169,"_path":1170},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1172,"_path":1173},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1175,"_path":1176},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1178,"_path":1179},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1181,"_path":1182},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1184,"_path":1185},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1187,"_path":1188},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1190,"_path":1191},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1193,"_path":1194},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1196,"_path":1197},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1199,"_path":1200},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1202,"_path":1203},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1205,"_path":1206},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1208,"_path":1209},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1211,"_path":1212},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1214,"_path":1215},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1217,"_path":1218},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1220,"_path":1221},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1223,"_path":1224},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1226,"_path":1227},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1229,"_path":1230,"children":1231},"Writing","/writing",[1232,1235,1238,1241,1244,1247,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1284,1287,1288,1291,1294,1297,1300],{"title":1233,"_path":1234},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1236,"_path":1237},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1239,"_path":1240},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1242,"_path":1243},"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":1245,"_path":1246},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1229,"_path":1230},{"title":1249,"_path":1250},"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":1252,"_path":1253},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1255,"_path":1256},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1258,"_path":1259},"My Fitness Story","/writing/my-fitness-story",{"title":1261,"_path":1262},"New job alert!","/writing/new-job-alert",{"title":1264,"_path":1265},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1267,"_path":1268},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1270,"_path":1271},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1273,"_path":1274},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1276,"_path":1277},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1279,"_path":1280},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1282,"_path":1283},"The MACH monolith","/writing/the-mach-monolith",{"title":1285,"_path":1286},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":8,"_path":4},{"title":1289,"_path":1290},"This is headless 2.0","/writing/this-is-headless-20",{"title":1292,"_path":1293},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1295,"_path":1296},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1298,"_path":1299},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1301,"_path":1302},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1304,"_path":1305,"children":1306},"Speaking","/speaking",[1307,1310,1313,1316,1319,1322,1325,1328,1331,1334,1337,1340,1343,1346,1349,1352,1355,1358,1361,1364,1367,1370,1373,1376,1379,1382,1385,1388,1391,1394,1397,1400,1403,1406,1409,1412,1415,1418,1421,1424,1427,1430,1433,1436,1439,1442,1445,1448,1451,1454,1457,1460,1463,1466,1469,1472,1475,1478,1481,1484,1487,1490,1493,1496,1499,1502,1505,1508,1511,1514,1517,1520,1523,1526,1529,1532,1535,1538],{"title":1308,"_path":1309},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1311,"_path":1312},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1314,"_path":1315},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1317,"_path":1318},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1320,"_path":1321},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1323,"_path":1324},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1326,"_path":1327},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1329,"_path":1330},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1332,"_path":1333},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1335,"_path":1336},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1338,"_path":1339},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1341,"_path":1342},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1344,"_path":1345},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1347,"_path":1348},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1350,"_path":1351},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1353,"_path":1354},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1356,"_path":1357},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1359,"_path":1360},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1362,"_path":1363},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1365,"_path":1366},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1368,"_path":1369},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1371,"_path":1372},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1374,"_path":1375},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1377,"_path":1378},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1380,"_path":1381},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1383,"_path":1384},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1386,"_path":1387},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1389,"_path":1390},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1392,"_path":1393},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1395,"_path":1396},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1398,"_path":1399},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1401,"_path":1402},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1404,"_path":1405},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1407,"_path":1408},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1410,"_path":1411},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1413,"_path":1414},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1416,"_path":1417},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1419,"_path":1420},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1422,"_path":1423},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1425,"_path":1426},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1428,"_path":1429},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1431,"_path":1432},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1434,"_path":1435},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1437,"_path":1438},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1440,"_path":1441},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1443,"_path":1444},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1446,"_path":1447},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1449,"_path":1450},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1452,"_path":1453},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1455,"_path":1456},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1458,"_path":1459},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1461,"_path":1462},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1464,"_path":1465},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1467,"_path":1468},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1470,"_path":1471},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1473,"_path":1474},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1476,"_path":1477},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1479,"_path":1480},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1482,"_path":1483},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1485,"_path":1486},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1488,"_path":1489},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1491,"_path":1492},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1494,"_path":1495},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1497,"_path":1498},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1500,"_path":1501},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1503,"_path":1504},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1506,"_path":1507},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1509,"_path":1510},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1512,"_path":1513},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1515,"_path":1516},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1518,"_path":1519},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1521,"_path":1522},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1524,"_path":1525},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1527,"_path":1528},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1530,"_path":1531},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1533,"_path":1534},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1536,"_path":1537},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1304,"_path":1305},{"title":1540,"_path":1541},"live streams","/livestreams",{"title":1543,"_path":1544},"press kit","/presskit",{"title":1546,"_path":1547},"alive and kicking","/alive-and-kicking",1718484379183] \ No newline at end of file +[{"data":1,"prerenderedAt":1548},["Reactive",2],{"content-query-593lHVHToM":3,"content-navigation-8C37fagqQL":432},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":427,"_id":428,"_source":429,"_file":430,"_extension":431},"/writing/the-real-deal-about-content-management-buzzword","writing",false,"","The real deal about content management buzzwords","Buzzwords are labels that describe tech approaches that become so commonplace over time that the...",1614626,"the-real-deal-about-content-management-buzzword","2023-09-28T14:43:37Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr5frm3ra3q3liidcpev.jpg","https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords",[16,17,18,19],"buzzwords","dxp","composable","cms",22300,{"type":22,"children":23,"toc":411},"root",[24,32,37,53,65,72,84,89,135,147,152,164,169,174,181,187,201,206,213,219,231,236,244,250,255,260,268,274,287,294,299,313,319,324,329,335,358,366,371,377,382,387,395,401,406],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too.",{"type":25,"tag":26,"props":33,"children":34},{},[35],{"type":30,"value":36},"First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter.",{"type":25,"tag":26,"props":38,"children":39},{},[40,42,51],{"type":30,"value":41},"Do you like watching more than reading? Watch this ",{"type":25,"tag":43,"props":44,"children":48},"a",{"href":45,"rel":46},"https://www.youtube.com/watch?v=EXzp3OkQTXk",[47],"nofollow",[49],{"type":30,"value":50},"YouTube video",{"type":30,"value":52}," instead.",{"type":25,"tag":26,"props":54,"children":55},{},[56,58,63],{"type":30,"value":57},"{% embed ",{"type":25,"tag":43,"props":59,"children":61},{"href":45,"rel":60},[47],[62],{"type":30,"value":45},{"type":30,"value":64}," %}",{"type":25,"tag":66,"props":67,"children":69},"h2",{"id":68},"mach",[70],{"type":30,"value":71},"MACH",{"type":25,"tag":26,"props":73,"children":74},{},[75,82],{"type":25,"tag":43,"props":76,"children":79},{"href":77,"rel":78},"https://hygraph.com/blog/mach-architecture",[47],[80],{"type":30,"value":81},"MACH architecture",{"type":30,"value":83}," comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless.",{"type":25,"tag":26,"props":85,"children":86},{},[87],{"type":30,"value":88},"Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members.",{"type":25,"tag":90,"props":91,"children":92},"ul",{},[93,105,115,125],{"type":25,"tag":94,"props":95,"children":96},"li",{},[97,103],{"type":25,"tag":98,"props":99,"children":100},"strong",{},[101],{"type":30,"value":102},"Microservices",{"type":30,"value":104}," are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures.",{"type":25,"tag":94,"props":106,"children":107},{},[108,113],{"type":25,"tag":98,"props":109,"children":110},{},[111],{"type":30,"value":112},"API-first",{"type":30,"value":114}," means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications.",{"type":25,"tag":94,"props":116,"children":117},{},[118,123],{"type":25,"tag":98,"props":119,"children":120},{},[121],{"type":30,"value":122},"Cloud-native",{"type":30,"value":124}," means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing.",{"type":25,"tag":94,"props":126,"children":127},{},[128,133],{"type":25,"tag":98,"props":129,"children":130},{},[131],{"type":30,"value":132},"Headless",{"type":30,"value":134}," means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end.",{"type":25,"tag":26,"props":136,"children":137},{},[138],{"type":25,"tag":139,"props":140,"children":146},"img",{"alt":68,"loading":141,"provider":142,"sizes":143,"src":144,"width":145},"lazy","cloudinary","sm:100vw","https://media.graphassets.com/jZfjXdJMSGTG1gLrwGQQ",1280,[],{"type":25,"tag":66,"props":148,"children":149},{"id":18},[150],{"type":30,"value":151},"Composable",{"type":25,"tag":26,"props":153,"children":154},{},[155,162],{"type":25,"tag":43,"props":156,"children":159},{"href":157,"rel":158},"https://hygraph.com/blog/composable-architecture",[47],[160],{"type":30,"value":161},"Composable architecture",{"type":30,"value":163}," refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems.",{"type":25,"tag":26,"props":165,"children":166},{},[167],{"type":30,"value":168},"While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first \"A\" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware.",{"type":25,"tag":26,"props":170,"children":171},{},[172],{"type":30,"value":173},"Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions.",{"type":25,"tag":26,"props":175,"children":176},{},[177],{"type":25,"tag":139,"props":178,"children":180},{"alt":18,"loading":141,"provider":142,"sizes":143,"src":179,"width":145},"https://media.graphassets.com/D2oCAxwTpuhKfZ5xwEB0",[],{"type":25,"tag":66,"props":182,"children":184},{"id":183},"dxp-digital-experience-platform",[185],{"type":30,"value":186},"DXP (Digital Experience Platform)",{"type":25,"tag":26,"props":188,"children":189},{},[190,192,199],{"type":30,"value":191},"A ",{"type":25,"tag":43,"props":193,"children":196},{"href":194,"rel":195},"https://hygraph.com/blog/what-is-a-dxp",[47],[197],{"type":30,"value":198},"digital experience platform (DXP)",{"type":30,"value":200}," is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences.",{"type":25,"tag":26,"props":202,"children":203},{},[204],{"type":30,"value":205},"Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies.",{"type":25,"tag":26,"props":207,"children":208},{},[209],{"type":25,"tag":139,"props":210,"children":212},{"alt":17,"loading":141,"provider":142,"sizes":143,"src":211,"width":145},"https://media.graphassets.com/rIUS6taoQJ2pcvTDA2YZ",[],{"type":25,"tag":66,"props":214,"children":216},{"id":215},"dxc-digital-experience-composition",[217],{"type":30,"value":218},"DXC (Digital Experience Composition)",{"type":25,"tag":26,"props":220,"children":221},{},[222,229],{"type":25,"tag":43,"props":223,"children":226},{"href":224,"rel":225},"https://hygraph.com/blog/digital-experience-composition",[47],[227],{"type":30,"value":228},"Digital experience composition",{"type":30,"value":230}," refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data.",{"type":25,"tag":26,"props":232,"children":233},{},[234],{"type":30,"value":235},"DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone.",{"type":25,"tag":26,"props":237,"children":238},{},[239],{"type":25,"tag":139,"props":240,"children":243},{"alt":241,"loading":141,"provider":142,"sizes":143,"src":242,"width":145},"dxc","https://media.graphassets.com/irNrx7isRUKaZ0QoDnzQ",[],{"type":25,"tag":66,"props":245,"children":247},{"id":246},"dxo-digital-experience-orchestration",[248],{"type":30,"value":249},"DXO (Digital Experience Orchestration)",{"type":25,"tag":26,"props":251,"children":252},{},[253],{"type":30,"value":254},"Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience.",{"type":25,"tag":26,"props":256,"children":257},{},[258],{"type":30,"value":259},"DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user.",{"type":25,"tag":26,"props":261,"children":262},{},[263],{"type":25,"tag":139,"props":264,"children":267},{"alt":265,"loading":141,"provider":142,"sizes":143,"src":266,"width":145},"dxo","https://media.graphassets.com/WgGDwsNLTTa4wAoL7WVd",[],{"type":25,"tag":66,"props":269,"children":271},{"id":270},"why-you-dont-have-to-care-about-the-buzzwords",[272],{"type":30,"value":273},"Why you don’t have to care about the buzzwords",{"type":25,"tag":26,"props":275,"children":276},{},[277,279,285],{"type":30,"value":278},"Ultimately, it is up to ",{"type":25,"tag":280,"props":281,"children":282},"em",{},[283],{"type":30,"value":284},"you",{"type":30,"value":286}," to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before.",{"type":25,"tag":288,"props":289,"children":291},"h3",{"id":290},"company-maturity",[292],{"type":30,"value":293},"Company maturity",{"type":25,"tag":26,"props":295,"children":296},{},[297],{"type":30,"value":298},"As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases.",{"type":25,"tag":26,"props":300,"children":301},{},[302,304,311],{"type":30,"value":303},"However, as companies mature, they may struggle with the ",{"type":25,"tag":43,"props":305,"children":308},{"href":306,"rel":307},"https://hygraph.com/blog/monolithic-cms-limitations",[47],[309],{"type":30,"value":310},"limitations of these monoliths",{"type":30,"value":312},". Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry.",{"type":25,"tag":288,"props":314,"children":316},{"id":315},"connecting-it-all",[317],{"type":30,"value":318},"Connecting it all",{"type":25,"tag":26,"props":320,"children":321},{},[322],{"type":30,"value":323},"Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use.",{"type":25,"tag":26,"props":325,"children":326},{},[327],{"type":30,"value":328},"The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture.",{"type":25,"tag":288,"props":330,"children":332},{"id":331},"content-federation",[333],{"type":30,"value":334},"Content federation",{"type":25,"tag":26,"props":336,"children":337},{},[338,340,347,349,356],{"type":30,"value":339},"To avoid a ",{"type":25,"tag":43,"props":341,"children":344},{"href":342,"rel":343},"https://www.linkedin.com/pulse/mach-monolith-tim-benniks/",[47],[345],{"type":30,"value":346},"MACH monolith",{"type":30,"value":348}," or ",{"type":25,"tag":43,"props":350,"children":353},{"href":351,"rel":352},"https://www.youtube.com/watch?v=so7-c2bOXpA",[47],[354],{"type":30,"value":355},"MACHlash",{"type":30,"value":357},", you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems.",{"type":25,"tag":26,"props":359,"children":360},{},[361],{"type":25,"tag":139,"props":362,"children":365},{"alt":363,"loading":141,"provider":142,"sizes":143,"src":364,"width":145},"content federation","https://media.graphassets.com/fbNw1hhTSHykSwk19ggJ",[],{"type":25,"tag":26,"props":367,"children":368},{},[369],{"type":30,"value":370},"Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information.",{"type":25,"tag":288,"props":372,"children":374},{"id":373},"after-content-federation-is-in-place",[375],{"type":30,"value":376},"After Content federation is in place",{"type":25,"tag":26,"props":378,"children":379},{},[380],{"type":30,"value":381},"Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later.",{"type":25,"tag":26,"props":383,"children":384},{},[385],{"type":30,"value":386},"If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool.",{"type":25,"tag":26,"props":388,"children":389},{},[390],{"type":25,"tag":139,"props":391,"children":394},{"alt":392,"loading":141,"provider":142,"sizes":143,"src":393,"width":145},"after content federation","https://media.graphassets.com/4xZbpHRgTI2CzXQ88GG7",[],{"type":25,"tag":66,"props":396,"children":398},{"id":397},"concluding",[399],{"type":30,"value":400},"Concluding",{"type":25,"tag":26,"props":402,"children":403},{},[404],{"type":30,"value":405},"Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems.",{"type":25,"tag":26,"props":407,"children":408},{},[409],{"type":30,"value":410},"Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between.",{"title":7,"searchDepth":412,"depth":412,"links":413},2,[414,415,416,417,418,419,426],{"id":68,"depth":412,"text":71},{"id":18,"depth":412,"text":151},{"id":183,"depth":412,"text":186},{"id":215,"depth":412,"text":218},{"id":246,"depth":412,"text":249},{"id":270,"depth":412,"text":273,"children":420},[421,423,424,425],{"id":290,"depth":422,"text":293},3,{"id":315,"depth":422,"text":318},{"id":331,"depth":422,"text":334},{"id":373,"depth":422,"text":376},{"id":397,"depth":412,"text":400},"markdown","content:4.writing:the-real-deal-about-content-management-buzzword.md","content","4.writing/the-real-deal-about-content-management-buzzword.md","md",[433,436,1228,1303,1539,1542,1545],{"title":434,"_path":435},"About Tim","/about",{"title":437,"_path":438,"children":439},"Videos","/videos",[440,459,478,524,525,577,680,703,725,1053],{"title":441,"_path":442,"children":443},"Alive And Kicking","/videos/alive-and-kicking",[444,447,450,453,456],{"title":445,"_path":446},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":448,"_path":449},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":451,"_path":452},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":454,"_path":455},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":457,"_path":458},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":460,"_path":461,"children":462},"Headless Creator","/videos/headless-creator",[463,466,469,472,475],{"title":464,"_path":465},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":467,"_path":468},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":470,"_path":471},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":473,"_path":474},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":476,"_path":477},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":479,"_path":480,"children":481},"Hygraph","/videos/hygraph",[482,485,488,491,494,497,500,503,506,509,512,515,518,521],{"title":483,"_path":484},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":486,"_path":487},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":489,"_path":490},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":492,"_path":493},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":495,"_path":496},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":498,"_path":499},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":501,"_path":502},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":504,"_path":505},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":507,"_path":508},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":510,"_path":511},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":513,"_path":514},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":516,"_path":517},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":519,"_path":520},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":522,"_path":523},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":437,"_path":438},{"title":526,"_path":527,"children":528},"Live Hygraph","/videos/live-hygraph",[529,532,535,538,541,544,547,550,553,556,559,562,565,568,571,574],{"title":530,"_path":531},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":533,"_path":534},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":536,"_path":537},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":539,"_path":540},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":542,"_path":543},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":545,"_path":546},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":548,"_path":549},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":551,"_path":552},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":554,"_path":555},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":557,"_path":558},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":560,"_path":561},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":563,"_path":564},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":566,"_path":567},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":569,"_path":570},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":572,"_path":573},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":575,"_path":576},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":578,"_path":579,"children":580},"Live Uniform","/videos/live-uniform",[581,584,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677],{"title":582,"_path":583},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":585,"_path":586},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":588,"_path":589},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":591,"_path":592},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":594,"_path":595},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":597,"_path":598},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":600,"_path":601},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":603,"_path":604},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":606,"_path":607},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":609,"_path":610},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":612,"_path":613},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":615,"_path":616},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":618,"_path":619},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":621,"_path":622},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":624,"_path":625},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":627,"_path":628},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":630,"_path":631},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":633,"_path":634},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":636,"_path":637},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":639,"_path":640},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":642,"_path":643},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":645,"_path":646},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":648,"_path":649},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":651,"_path":652},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":654,"_path":655},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":657,"_path":658},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":660,"_path":661},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":663,"_path":664},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":666,"_path":667},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":669,"_path":670},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":672,"_path":673},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":675,"_path":676},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":678,"_path":679},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":681,"_path":682,"children":683},"Misc Streams","/videos/misc-streams",[684,687,690,693,695,697,700],{"title":685,"_path":686},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":688,"_path":689},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":691,"_path":692},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":675,"_path":694},"/videos/misc-streams/003-jvgiaotcerq",{"title":666,"_path":696},"/videos/misc-streams/004-ekut1koa2n8",{"title":698,"_path":699},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":701,"_path":702},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":704,"_path":705,"children":706},"Mp","/videos/mp",[707,710,713,716,719,722],{"title":708,"_path":709},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":711,"_path":712},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":714,"_path":715},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":717,"_path":718},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":720,"_path":721},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":723,"_path":724},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":726,"_path":727,"children":728},"Tim","/videos/tim",[729,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,781,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050],{"title":448,"_path":730},"/videos/tim/000-mvq-_s20ndk",{"title":732,"_path":733},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":735,"_path":736},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":738,"_path":739},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":741,"_path":742},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":744,"_path":745},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":747,"_path":748},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":750,"_path":751},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":753,"_path":754},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":756,"_path":757},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":759,"_path":760},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":762,"_path":763},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":765,"_path":766},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":768,"_path":769},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":771,"_path":772},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":774,"_path":775},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":777,"_path":778},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":451,"_path":780},"/videos/tim/017-m0mrligs6i0",{"title":445,"_path":782},"/videos/tim/018-hhpitreyobi",{"title":784,"_path":785},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":787,"_path":788},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":790,"_path":791},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":793,"_path":794},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":796,"_path":797},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":799,"_path":800},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":802,"_path":803},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":805,"_path":806},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":808,"_path":809},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":811,"_path":812},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":814,"_path":815},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":817,"_path":818},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":820,"_path":821},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":823,"_path":824},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":826,"_path":827},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":829,"_path":830},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":832,"_path":833},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":835,"_path":836},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":838,"_path":839},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":841,"_path":842},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":844,"_path":845},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":847,"_path":848},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":850,"_path":851},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":853,"_path":854},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":856,"_path":857},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":859,"_path":860},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":862,"_path":863},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":865,"_path":866},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":868,"_path":869},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":871,"_path":872},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":874,"_path":875},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":877,"_path":878},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":880,"_path":881},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":883,"_path":884},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":886,"_path":887},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":889,"_path":890},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":892,"_path":893},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":895,"_path":896},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":898,"_path":899},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":901,"_path":902},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":904,"_path":905},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":907,"_path":908},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":910,"_path":911},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":913,"_path":914},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":916,"_path":917},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":919,"_path":920},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":922,"_path":923},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":925,"_path":926},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":928,"_path":929},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":931,"_path":932},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":934,"_path":935},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":937,"_path":938},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":940,"_path":941},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":943,"_path":944},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":946,"_path":947},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":949,"_path":950},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":952,"_path":953},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":955,"_path":956},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":958,"_path":959},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":961,"_path":962},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":964,"_path":965},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":967,"_path":968},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":970,"_path":971},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":973,"_path":974},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":976,"_path":977},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":979,"_path":980},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":982,"_path":983},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":985,"_path":986},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":988,"_path":989},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":991,"_path":992},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":994,"_path":995},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":997,"_path":998},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":1000,"_path":1001},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":1003,"_path":1004},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":1006,"_path":1007},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":1009,"_path":1010},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":1012,"_path":1013},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":1015,"_path":1016},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":1018,"_path":1019},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":1021,"_path":1022},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":1024,"_path":1025},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":1027,"_path":1028},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":1030,"_path":1031},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":1033,"_path":1034},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":1036,"_path":1037},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":1039,"_path":1040},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":1042,"_path":1043},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":1045,"_path":1046},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":1048,"_path":1049},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":1051,"_path":1052},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":1054,"_path":1055,"children":1056},"Uniform","/videos/uniform",[1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225],{"title":1058,"_path":1059},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":1061,"_path":1062},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":1064,"_path":1065},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":1067,"_path":1068},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":1070,"_path":1071},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":1073,"_path":1074},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":1076,"_path":1077},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1079,"_path":1080},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1082,"_path":1083},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1085,"_path":1086},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1088,"_path":1089},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1091,"_path":1092},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1094,"_path":1095},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1097,"_path":1098},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1100,"_path":1101},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1103,"_path":1104},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1106,"_path":1107},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1109,"_path":1110},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1112,"_path":1113},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1115,"_path":1116},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1118,"_path":1119},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1121,"_path":1122},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1124,"_path":1125},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1127,"_path":1128},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1130,"_path":1131},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1133,"_path":1134},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1136,"_path":1137},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1139,"_path":1140},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1142,"_path":1143},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1145,"_path":1146},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1148,"_path":1149},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1151,"_path":1152},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1154,"_path":1155},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1157,"_path":1158},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1160,"_path":1161},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1163,"_path":1164},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1166,"_path":1167},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1169,"_path":1170},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1172,"_path":1173},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1175,"_path":1176},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1178,"_path":1179},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1181,"_path":1182},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1184,"_path":1185},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1187,"_path":1188},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1190,"_path":1191},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1193,"_path":1194},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1196,"_path":1197},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1199,"_path":1200},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1202,"_path":1203},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1205,"_path":1206},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1208,"_path":1209},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1211,"_path":1212},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1214,"_path":1215},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1217,"_path":1218},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1220,"_path":1221},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1223,"_path":1224},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1226,"_path":1227},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1229,"_path":1230,"children":1231},"Writing","/writing",[1232,1235,1238,1241,1244,1247,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1284,1287,1288,1291,1294,1297,1300],{"title":1233,"_path":1234},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1236,"_path":1237},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1239,"_path":1240},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1242,"_path":1243},"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":1245,"_path":1246},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1229,"_path":1230},{"title":1249,"_path":1250},"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":1252,"_path":1253},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1255,"_path":1256},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1258,"_path":1259},"My Fitness Story","/writing/my-fitness-story",{"title":1261,"_path":1262},"New job alert!","/writing/new-job-alert",{"title":1264,"_path":1265},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1267,"_path":1268},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1270,"_path":1271},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1273,"_path":1274},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1276,"_path":1277},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1279,"_path":1280},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1282,"_path":1283},"The MACH monolith","/writing/the-mach-monolith",{"title":1285,"_path":1286},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":8,"_path":4},{"title":1289,"_path":1290},"This is headless 2.0","/writing/this-is-headless-20",{"title":1292,"_path":1293},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1295,"_path":1296},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1298,"_path":1299},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1301,"_path":1302},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1304,"_path":1305,"children":1306},"Speaking","/speaking",[1307,1310,1313,1316,1319,1322,1325,1328,1331,1334,1337,1340,1343,1346,1349,1352,1355,1358,1361,1364,1367,1370,1373,1376,1379,1382,1385,1388,1391,1394,1397,1400,1403,1406,1409,1412,1415,1418,1421,1424,1427,1430,1433,1436,1439,1442,1445,1448,1451,1454,1457,1460,1463,1466,1469,1472,1475,1478,1481,1484,1487,1490,1493,1496,1499,1502,1505,1508,1511,1514,1517,1520,1523,1526,1529,1532,1535,1538],{"title":1308,"_path":1309},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1311,"_path":1312},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1314,"_path":1315},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1317,"_path":1318},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1320,"_path":1321},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1323,"_path":1324},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1326,"_path":1327},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1329,"_path":1330},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1332,"_path":1333},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1335,"_path":1336},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1338,"_path":1339},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1341,"_path":1342},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1344,"_path":1345},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1347,"_path":1348},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1350,"_path":1351},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1353,"_path":1354},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1356,"_path":1357},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1359,"_path":1360},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1362,"_path":1363},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1365,"_path":1366},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1368,"_path":1369},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1371,"_path":1372},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1374,"_path":1375},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1377,"_path":1378},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1380,"_path":1381},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1383,"_path":1384},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1386,"_path":1387},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1389,"_path":1390},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1392,"_path":1393},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1395,"_path":1396},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1398,"_path":1399},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1401,"_path":1402},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1404,"_path":1405},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1407,"_path":1408},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1410,"_path":1411},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1413,"_path":1414},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1416,"_path":1417},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1419,"_path":1420},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1422,"_path":1423},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1425,"_path":1426},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1428,"_path":1429},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1431,"_path":1432},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1434,"_path":1435},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1437,"_path":1438},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1440,"_path":1441},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1443,"_path":1444},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1446,"_path":1447},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1449,"_path":1450},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1452,"_path":1453},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1455,"_path":1456},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1458,"_path":1459},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1461,"_path":1462},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1464,"_path":1465},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1467,"_path":1468},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1470,"_path":1471},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1473,"_path":1474},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1476,"_path":1477},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1479,"_path":1480},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1482,"_path":1483},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1485,"_path":1486},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1488,"_path":1489},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1491,"_path":1492},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1494,"_path":1495},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1497,"_path":1498},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1500,"_path":1501},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1503,"_path":1504},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1506,"_path":1507},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1509,"_path":1510},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1512,"_path":1513},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1515,"_path":1516},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1518,"_path":1519},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1521,"_path":1522},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1524,"_path":1525},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1527,"_path":1528},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1530,"_path":1531},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1533,"_path":1534},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1536,"_path":1537},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1304,"_path":1305},{"title":1540,"_path":1541},"live streams","/livestreams",{"title":1543,"_path":1544},"Press kit","/presskit",{"title":1546,"_path":1547},"Alive and kicking","/alive-and-kicking",1718484821507] \ No newline at end of file diff --git a/writing/the-real-deal-about-content-management-buzzword/index.html b/writing/the-real-deal-about-content-management-buzzword/index.html index 227e5a03..c15bf2d0 100644 --- a/writing/the-real-deal-about-content-management-buzzword/index.html +++ b/writing/the-real-deal-about-content-management-buzzword/index.html @@ -7,7 +7,7 @@ - + - - - - - + + + + + - - - + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - -

The real deal about content management buzzwords

Sep 28, 2023 at https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords

Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too.

First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter.

Do you like watching more than reading? Watch this YouTube video instead.

{% embed https://www.youtube.com/watch?v=EXzp3OkQTXk %}

MACH

MACH architecture comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless.

Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members.

  • Microservices are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures.
  • API-first means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications.
  • Cloud-native means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing.
  • Headless means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end.

mach

Composable

Composable architecture refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems.

While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first "A" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware.

Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions.

composable

DXP (Digital Experience Platform)

A digital experience platform (DXP) is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences.

Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies.

dxp

DXC (Digital Experience Composition)

Digital experience composition refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data.

DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone.

dxc

DXO (Digital Experience Orchestration)

Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience.

DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user.

dxo

Why you don’t have to care about the buzzwords

Ultimately, it is up to you to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before.

Company maturity

As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases.

However, as companies mature, they may struggle with the limitations of these monoliths. Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry.

Connecting it all

Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use.

The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture.

Content federation

To avoid a MACH monolith or MACHlash, you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems.

content federation

Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information.

After Content federation is in place

Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later.

If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool.

after content federation

Concluding

Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems.

Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between.

- \ No newline at end of file + + + + +

The real deal about content management buzzwords

Sep 28, 2023 at https://hygraph.com/blog/the-real-deal-about-content-management-buzzwords

Buzzwords are labels that describe tech approaches that become so commonplace over time that the label disappears, and people do what works best. Remember Jamstack? Neither do I. The term became so widespread that it faded away. Netlify, the company that coined Jamstack, now uses Composable, which will likely disappear too.

First, let's define some current buzzwords. Afterwards, I'll explain why they don't actually matter.

Do you like watching more than reading? Watch this YouTube video instead.

{% embed https://www.youtube.com/watch?v=EXzp3OkQTXk %}

MACH

MACH architecture comprises principles and practices for building and managing digital experiences. The acronym MACH stands for Microservices, API-first, Cloud-native, and Headless.

Essentially, MACH is a collection of tech approaches with specific tendencies put together. If you build something with all four items, you are MACH compliant. Otherwise, you are not. MACH provides a label you can put on your software as a vendor. This does not mean products lacking one of the four MACH features are flawed. However, it also means that companies like Adobe, Sitecore, and WordPress will never be MACH members.

  • Microservices are small, independent services that are loosely coupled and communicate with each other through APIs. This makes microservices architecture more scalable and flexible than traditional monolithic architectures.
  • API-first means that all functionality is exposed through APIs. This makes it easy to integrate different services and build new applications.
  • Cloud-native means that the architecture is designed to take advantage of the cloud, such as scalability, elasticity, and pay-as-you-go pricing.
  • Headless means that the front-end presentation is decoupled from the back-end logic. This makes it possible to use different front-end technologies without changing the back-end.

mach

Composable

Composable architecture refers to a modular approach built around reusable components that brands assemble themselves rather than buying an off-the-shelf product, with a key advantage being the flexibility to swap components to adapt to changing needs, avoiding significant rebuilds required by monolithic systems.

While solving problems of rigid all-in-one solutions, composable architecture can have complex development and workflows. Composable architecture and MACH architecture are both approaches to managing digital experiences, with composable architecture focusing on the API-first "A" in MACH by composing APIs into a cohesive architecture. There are different techniques for connecting APIs in a composable architecture, ranging from content hubs to content federation to proprietary middleware.

Overall, composable architecture represents an architectural philosophy of modularity and flexibility in contrast to traditional monolithic digital solutions.

composable

DXP (Digital Experience Platform)

A digital experience platform (DXP) is an integrated set of core technologies that support the composition, management, delivery, and optimization of contextualized digital experiences.

Typically, a DXP is delivered as a monolithic piece of software by a single vendor. While modern DXPs may offer some composability, their components are usually proprietary to the vendor. This can limit flexibility and result in vendor lock-in, as brands cannot easily swap out or integrate other technologies.

dxp

DXC (Digital Experience Composition)

Digital experience composition refers to no-code/low-code tools and platforms that allow digital teams to build and manage digital experiences in a composable architecture easily. The collection of these tools includes three categories of software: a light front-end SDK or front-end as a service, a page builder, and API integrations to connect data.

DXC is essentially a modern version of the DXP but vendor-agnostic. DXC is leaning towards website channel-specific as it offers front-end SDKs and live previews. If the product doesn’t offer an iOS SDK, the customer is alone.

dxc

DXO (Digital Experience Orchestration)

Digital Experience Orchestration emphasizes API orchestration and decision-making to create and manage end-to-end digital experiences. DXO platforms provide visual tools to orchestrate digital experiences but do not include WYSIWYG editors for managing the front-end experience.

DXO is essentially DXC without the front-end components, focusing only on data stitching. It is pretty unique in the MACH space that we see analytics and a/b testing added to the orchestration solution in the back-end rather than at the CDN edge specific to the end user.

dxo

Why you don’t have to care about the buzzwords

Ultimately, it is up to you to decide how to build the digital experience for your brand, both internally and externally. There are many paths to success, and you need to understand your business needs, maturity, and technical skills to choose the best route. Nowadays, technical product owners need to be more knowledgeable about the technology landscape and internal business needs than ever before.

Company maturity

As companies grow, they gain a deeper understanding of the problems they solve as a business. The more they know about these issues, the more specific their choice of speciality software becomes. Less mature companies, or those that are large and indecisive, tend to gravitate towards monoliths that offer broad functionality, covering most bases.

However, as companies mature, they may struggle with the limitations of these monoliths. Any customization work on a monolith can be time-consuming, complex, and expensive. This is why re-platforming has become such a significant trend in our industry.

Connecting it all

Assuming you have chosen the perfect PIM, DAM, ERP, commerce engine, and search tool, the next step is to connect all these moving pieces into a cohesive architecture. This will enable you to create a platform application that both end-users and internal teams will love to use.

The architecture direction should be chosen based on the technical proficiency of your teams. Simply purchasing specialized software does not create a cohesive architecture.

Content federation

To avoid a MACH monolith or MACHlash, you need a system to “federate” all content sources into a unified view. This system should standardize and simplify the data for later querying while keeping the speciality sources autonomous. That way, the teams in charge of PIM or Search can work without influence from other systems.

content federation

Content federation is a very lightweight approach to unifying different data sources into a transparent and easy-to-use endpoint while keeping the complexities of your data sources where they need to stay. Your speciality products for PIM, DAM, eCommerce, and Search remain autonomous and safe while front-end implementations ask the Federation platform for information.

After Content federation is in place

Now that the content federation has been established, aligning the company's maturity, technical skill, and vision with the choice of products that follow this step is essential. If you have the necessary technical ability, add a headless CMS, query the federated data endpoints, and you’re done. You can add best-of-breed a/b testing, and localization services later.

If you need additional elements, such as personalization or visual editing, consider using a DXC like Uniform or a DXO like Conscia. Ultimately, these tools serve the same purpose but with different approaches to the problem. Some tools are more visually oriented and offer greater personalization, while others are more data-driven. Consider your company's maturity and technical skills before selecting a tool.

after content federation

Concluding

Every modern architecture requires a combination of the appropriate specialty providers, based on company maturity and technical skills. After that, the next step is to use a tool that federates all of these content sources into a single unified endpoint. This helps to simplify and standardize the architecture, while still maintaining the autonomy of the specialty systems.

Once the basics are in place, look internally at the specific needs and choose between DXC, DXO, or anything in between.

+ \ No newline at end of file diff --git a/writing/this-is-headless-20/_payload.json b/writing/this-is-headless-20/_payload.json deleted file mode 100644 index d3c72815..00000000 --- a/writing/this-is-headless-20/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1404},["Reactive",2],{"content-query-MUoGUIIYvQ":3,"content-navigation-8C37fagqQL":289},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":284,"_id":285,"_source":286,"_file":287,"_extension":288},"/writing/this-is-headless-20","writing",false,"","This is headless 2.0","That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about...",1533031,"this-is-headless-20","2023-07-11T07:48:19Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4ykeb6acv0q288ygpaj.png","https://www.linkedin.com/pulse/headless-20-tim-benniks/",[16,17,18,19],"webdev","mach","headless","architecture",22300,{"type":22,"children":23,"toc":276},"root",[24,43,50,55,60,82,96,109,113,119,124,137,142,150,154,167,173,178,183,206,211,216,221,229,234,240,245,250,263,268],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29,32,41],{"type":30,"value":31},"text","That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about the ",{"type":25,"tag":33,"props":34,"children":38},"a",{"href":35,"rel":36},"https://www.linkedin.com/pulse/mach-monolith-tim-benniks",[37],"nofollow",[39],{"type":30,"value":40},"MACH monolith",{"type":30,"value":42}," before. Here, I’ll describe how to avoid ending up in a codebase full of technical debt, aka glue code—chores that overburden and frustrate developers.",{"type":25,"tag":44,"props":45,"children":47},"h3",{"id":46},"the-why",[48],{"type":30,"value":49},"The why",{"type":25,"tag":26,"props":51,"children":52},{},[53],{"type":30,"value":54},"Headless technology has gained prominence in web development, offering benefits like higher performance, front-end freedom, DX features, and management through APIs—a thrill for techies. However, at scale, complexities arise due to an endless need for glue code for connecting content sources, let alone authoring issues caused by disconnects between content editors and front-end presentation.",{"type":25,"tag":26,"props":56,"children":57},{},[58],{"type":30,"value":59},"In particular, separation of content authoring and presentation results in a steep learning curve for content editors, who would need help to preview their work and ensure a correct display. But how do you preview content that connects to multiple sources, all offering some form of preview capability? As a fix, people do either of the following:",{"type":25,"tag":61,"props":62,"children":63},"ul",{},[64,77],{"type":25,"tag":65,"props":66,"children":67},"li",{},[68,70,75],{"type":30,"value":69},"Connect to the sources via CMS plugins and add data-modeling capabilities for page layouts unrelated to core CMS functionalities. For more details, read my article on the ",{"type":25,"tag":33,"props":71,"children":73},{"href":35,"rel":72},[37],[74],{"type":30,"value":40},{"type":30,"value":76},". ",{"type":25,"tag":65,"props":78,"children":79},{},[80],{"type":30,"value":81},"Hard-code all the connections in the front end, forcing content editors to file IT tickets for updates.",{"type":25,"tag":26,"props":83,"children":84},{},[85,87,94],{"type":30,"value":86},"For web projects to succeed, since developers, marketers, and content editors boast ",{"type":25,"tag":33,"props":88,"children":91},{"href":89,"rel":90},"https://dev.to/timbenniks/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pros-17k",[37],[92],{"type":30,"value":93},"different strengths",{"type":30,"value":95},", teams must be able to collaborate harmoniously and seamlessly. For all that headless promises freedom and excellent developer experience, it pushes the pain threshold of marketers.",{"type":25,"tag":26,"props":97,"children":98},{},[99],{"type":25,"tag":100,"props":101,"children":108},"img",{"alt":102,"loading":103,"provider":104,"sizes":105,"src":106,"width":107},"Connecting lots of services creates glue code and technical debt.","lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7a0lii31280n03qva7v.png",1280,[],{"type":25,"tag":26,"props":110,"children":111},{},[112],{"type":30,"value":102},{"type":25,"tag":44,"props":114,"children":116},{"id":115},"the-how",[117],{"type":30,"value":118},"The how",{"type":25,"tag":26,"props":120,"children":121},{},[122],{"type":30,"value":123},"Two things are paramount as a fix:",{"type":25,"tag":61,"props":125,"children":126},{},[127,132],{"type":25,"tag":65,"props":128,"children":129},{},[130],{"type":30,"value":131},"Simple, easy-to-maintain front-end codebases that contain minimal glue code and technical debt. ",{"type":25,"tag":65,"props":133,"children":134},{},[135],{"type":30,"value":136},"Elimination of the need for content editors to tackle the abstractness of a composable architecture populated by a plethora of different tools. Content editors need a visual-editing capability across headless sources to ensure the display is exactly what they desire without giving up on a solid technical architecture.",{"type":25,"tag":26,"props":138,"children":139},{},[140],{"type":30,"value":141},"In other words, content editors need a page-composition process similar in concept to that of GraphQL, i.e., one that returns only the needed properties and content of all page components. All the editors need to do is add the component props with data from external sources—with no need to know the data’s origin. The result is curated, page-specific JSON output that can be consumed by the front end, which need not connect to external data sources.",{"type":25,"tag":26,"props":143,"children":144},{},[145],{"type":25,"tag":100,"props":146,"children":149},{"alt":147,"loading":103,"provider":104,"sizes":105,"src":148,"width":107},"Connect services to design system components and compose a page. Curate your data a la GraphQL but visually.","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fu1m8gqp9r20nq7fx7dy.png",[],{"type":25,"tag":26,"props":151,"children":152},{},[153],{"type":30,"value":147},{"type":25,"tag":26,"props":155,"children":156},{},[157,159,165],{"type":30,"value":158},"What emerges is a transparent and simple platform on which to compose pages based on design components, whose props point to a field in an external API endpoint. That platform would ",{"type":25,"tag":160,"props":161,"children":162},"em",{},[163],{"type":30,"value":164},"not",{"type":30,"value":166}," be a CMS or data-federation tool. All it needs to know is which component points to which data source for a specific page composition.",{"type":25,"tag":44,"props":168,"children":170},{"id":169},"a-visual-workspace",[171],{"type":30,"value":172},"A visual workspace",{"type":25,"tag":26,"props":174,"children":175},{},[176],{"type":30,"value":177},"Therefore, the job of the platform, which represents all the design components with linked data sources (CMS, PIM, DAM), is to connect them and store the result like a curated GraphQL query on a CDN edge. The only data this platform would potentially store are one-off content strings like “latest blog posts” or the fact that a particular component variant, e.g., the image on the left or right, is shown in a specific context.",{"type":25,"tag":26,"props":179,"children":180},{},[181],{"type":30,"value":182},"That setup gives rise to a streamlined workflow:",{"type":25,"tag":61,"props":184,"children":185},{},[186,191,196,201],{"type":25,"tag":65,"props":187,"children":188},{},[189],{"type":30,"value":190},"To publish content, editors visually connect external data to components properties. That data can come from any source.",{"type":25,"tag":65,"props":192,"children":193},{},[194],{"type":30,"value":195},"Editors compose their design-system components visually to represent the page design they want.",{"type":25,"tag":65,"props":197,"children":198},{},[199],{"type":30,"value":200},"A curated JSON structure of the composition is saved to the CDN edge.",{"type":25,"tag":65,"props":202,"children":203},{},[204],{"type":30,"value":205},"The front end connects to the API endpoint of the platform. An intuitive and light SDK connects to the CDN edge, keeping the front end code simple.",{"type":25,"tag":26,"props":207,"children":208},{},[209],{"type":30,"value":210},"To make it all visual for content editors, match the naming of the design-system components in the codebase to the ones in the platform and have the SDK show the components in a preview window. Simultaneously, content editors can bind data from external sources to the props and design how the components should look and behave.",{"type":25,"tag":26,"props":212,"children":213},{},[214],{"type":30,"value":215},"With solid cache purging for data sources, you can create dynamic pages that connect to any amount of data and deliver in less than 50ms from a CDN edge near you. In case of external data-source changes, the TTL on the field or a webhook purges the cache, resulting in fresh data. ",{"type":25,"tag":26,"props":217,"children":218},{},[219],{"type":30,"value":220},"If used in conjunction with the latest Next, NuxtJS, or Astro features, this approach leads to a robust yet no-frills front end with no need to connect to data sources in code or mapping their data to component props. Talk about happy developers!",{"type":25,"tag":26,"props":222,"children":223},{},[224],{"type":25,"tag":100,"props":225,"children":228},{"alt":226,"loading":103,"provider":104,"sizes":105,"src":227,"width":107},"Image description","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gxchvyapco21ibgpkxl9.png",[],{"type":25,"tag":26,"props":230,"children":231},{},[232],{"type":30,"value":233},"Map design system component props to individual API response fields to create a visual editor that works across headless sources.",{"type":25,"tag":44,"props":235,"children":237},{"id":236},"a-recap",[238],{"type":30,"value":239},"A recap",{"type":25,"tag":26,"props":241,"children":242},{},[243],{"type":30,"value":244},"Connecting everything code-first at scale is painful for developers and content editors alike, the former having to maintain the connections and content mappings, and the latter getting lost in the abstract tools with no clues of what happens on a click to publish.",{"type":25,"tag":26,"props":246,"children":247},{},[248],{"type":30,"value":249},"A composable architecture of headless sources must be a team buy, not just a developer choice. What’s needed is a visual workspace that’s—",{"type":25,"tag":61,"props":251,"children":252},{},[253,258],{"type":25,"tag":65,"props":254,"children":255},{},[256],{"type":30,"value":257},"Friendly to content editors but also feature-rich for developers while maintaining excellent technical architecture without compromises. ",{"type":25,"tag":65,"props":259,"children":260},{},[261],{"type":30,"value":262},"Agnostic and not a one-size-fits-all offering from a single CMS vendor. ",{"type":25,"tag":26,"props":264,"children":265},{},[266],{"type":30,"value":267},"In other words, we need a modern, composable form of the old-school DXPs like Adobe AEM. I believe what I described above resembles digital experience composition as coined by Gartner.",{"type":25,"tag":26,"props":269,"children":270},{},[271],{"type":25,"tag":160,"props":272,"children":273},{},[274],{"type":30,"value":275},"This is Headless 2.0",{"title":7,"searchDepth":277,"depth":277,"links":278},2,[279,281,282,283],{"id":46,"depth":280,"text":49},3,{"id":115,"depth":280,"text":118},{"id":169,"depth":280,"text":172},{"id":236,"depth":280,"text":239},"markdown","content:4.writing:this-is-headless-20.md","content","4.writing/this-is-headless-20.md","md",[290,293,1084,1159,1395,1398,1401],{"title":291,"_path":292},"About","/about",{"title":294,"_path":295,"children":296},"videos","/videos",[297,316,335,381,382,434,537,560,582,909],{"title":298,"_path":299,"children":300},"Alive And Kicking","/videos/alive-and-kicking",[301,304,307,310,313],{"title":302,"_path":303},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":305,"_path":306},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":308,"_path":309},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":311,"_path":312},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":314,"_path":315},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":317,"_path":318,"children":319},"Headless Creator","/videos/headless-creator",[320,323,326,329,332],{"title":321,"_path":322},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":324,"_path":325},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":327,"_path":328},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":330,"_path":331},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":333,"_path":334},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":336,"_path":337,"children":338},"Hygraph","/videos/hygraph",[339,342,345,348,351,354,357,360,363,366,369,372,375,378],{"title":340,"_path":341},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":343,"_path":344},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":346,"_path":347},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":349,"_path":350},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":352,"_path":353},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":355,"_path":356},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":358,"_path":359},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":361,"_path":362},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":364,"_path":365},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":367,"_path":368},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":370,"_path":371},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":373,"_path":374},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":376,"_path":377},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":379,"_path":380},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":294,"_path":295},{"title":383,"_path":384,"children":385},"Live Hygraph","/videos/live-hygraph",[386,389,392,395,398,401,404,407,410,413,416,419,422,425,428,431],{"title":387,"_path":388},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":390,"_path":391},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":393,"_path":394},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":396,"_path":397},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":399,"_path":400},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":402,"_path":403},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":405,"_path":406},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":408,"_path":409},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":411,"_path":412},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":414,"_path":415},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":417,"_path":418},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":420,"_path":421},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":423,"_path":424},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":426,"_path":427},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":429,"_path":430},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":432,"_path":433},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":435,"_path":436,"children":437},"Live Uniform","/videos/live-uniform",[438,441,444,447,450,453,456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534],{"title":439,"_path":440},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":442,"_path":443},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":445,"_path":446},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":448,"_path":449},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":451,"_path":452},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":454,"_path":455},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":457,"_path":458},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":460,"_path":461},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":463,"_path":464},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":466,"_path":467},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":469,"_path":470},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":472,"_path":473},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":475,"_path":476},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":478,"_path":479},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":481,"_path":482},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":484,"_path":485},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":487,"_path":488},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":490,"_path":491},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":493,"_path":494},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":496,"_path":497},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":499,"_path":500},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":502,"_path":503},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":505,"_path":506},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":508,"_path":509},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":511,"_path":512},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":514,"_path":515},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":517,"_path":518},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":520,"_path":521},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":523,"_path":524},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":526,"_path":527},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":529,"_path":530},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":532,"_path":533},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":535,"_path":536},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":538,"_path":539,"children":540},"Misc Streams","/videos/misc-streams",[541,544,547,550,552,554,557],{"title":542,"_path":543},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":545,"_path":546},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":548,"_path":549},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":532,"_path":551},"/videos/misc-streams/003-jvgiaotcerq",{"title":523,"_path":553},"/videos/misc-streams/004-ekut1koa2n8",{"title":555,"_path":556},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":558,"_path":559},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":561,"_path":562,"children":563},"Mp","/videos/mp",[564,567,570,573,576,579],{"title":565,"_path":566},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":568,"_path":569},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":571,"_path":572},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":574,"_path":575},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":577,"_path":578},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":580,"_path":581},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":583,"_path":584,"children":585},"Tim","/videos/tim",[586,588,591,594,597,600,603,606,609,612,615,618,620,623,626,629,632,635,637,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,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906],{"title":305,"_path":587},"/videos/tim/000-mvq-_s20ndk",{"title":589,"_path":590},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":592,"_path":593},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":595,"_path":596},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":598,"_path":599},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":601,"_path":602},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":604,"_path":605},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":607,"_path":608},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":610,"_path":611},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":613,"_path":614},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":616,"_path":617},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":275,"_path":619},"/videos/tim/011-ergktbs0woe",{"title":621,"_path":622},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":624,"_path":625},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":627,"_path":628},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":630,"_path":631},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":633,"_path":634},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":308,"_path":636},"/videos/tim/017-m0mrligs6i0",{"title":302,"_path":638},"/videos/tim/018-hhpitreyobi",{"title":640,"_path":641},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":643,"_path":644},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":646,"_path":647},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":649,"_path":650},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":652,"_path":653},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":655,"_path":656},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":658,"_path":659},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":661,"_path":662},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":664,"_path":665},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":667,"_path":668},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":670,"_path":671},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":673,"_path":674},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":676,"_path":677},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":679,"_path":680},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":682,"_path":683},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":685,"_path":686},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":688,"_path":689},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":691,"_path":692},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":694,"_path":695},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":697,"_path":698},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":700,"_path":701},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":703,"_path":704},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":706,"_path":707},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":709,"_path":710},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":712,"_path":713},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":715,"_path":716},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":718,"_path":719},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":721,"_path":722},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":724,"_path":725},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":727,"_path":728},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":730,"_path":731},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":733,"_path":734},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":736,"_path":737},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":739,"_path":740},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":742,"_path":743},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":745,"_path":746},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":748,"_path":749},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":751,"_path":752},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":754,"_path":755},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":757,"_path":758},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":760,"_path":761},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":763,"_path":764},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":766,"_path":767},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":769,"_path":770},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":772,"_path":773},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":775,"_path":776},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":778,"_path":779},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":781,"_path":782},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":784,"_path":785},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":787,"_path":788},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":790,"_path":791},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":793,"_path":794},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":796,"_path":797},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":799,"_path":800},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":802,"_path":803},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":805,"_path":806},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":808,"_path":809},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":811,"_path":812},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":814,"_path":815},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":817,"_path":818},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":820,"_path":821},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":823,"_path":824},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":826,"_path":827},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":829,"_path":830},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":832,"_path":833},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":835,"_path":836},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":838,"_path":839},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":841,"_path":842},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":844,"_path":845},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":847,"_path":848},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":850,"_path":851},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":853,"_path":854},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":856,"_path":857},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":859,"_path":860},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":862,"_path":863},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":865,"_path":866},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":868,"_path":869},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":871,"_path":872},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":874,"_path":875},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":877,"_path":878},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":880,"_path":881},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":883,"_path":884},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":886,"_path":887},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":889,"_path":890},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":892,"_path":893},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":895,"_path":896},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":898,"_path":899},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":901,"_path":902},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":904,"_path":905},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":907,"_path":908},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":910,"_path":911,"children":912},"Uniform","/videos/uniform",[913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081],{"title":914,"_path":915},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":917,"_path":918},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":920,"_path":921},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":923,"_path":924},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":926,"_path":927},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":929,"_path":930},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":932,"_path":933},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":935,"_path":936},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":938,"_path":939},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":941,"_path":942},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":944,"_path":945},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":947,"_path":948},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":950,"_path":951},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":953,"_path":954},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":956,"_path":957},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":959,"_path":960},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":962,"_path":963},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":965,"_path":966},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":968,"_path":969},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":971,"_path":972},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":974,"_path":975},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":977,"_path":978},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":980,"_path":981},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":983,"_path":984},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":986,"_path":987},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":989,"_path":990},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":992,"_path":993},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":995,"_path":996},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":998,"_path":999},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1001,"_path":1002},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1004,"_path":1005},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1007,"_path":1008},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1010,"_path":1011},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1013,"_path":1014},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1016,"_path":1017},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1019,"_path":1020},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1022,"_path":1023},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1025,"_path":1026},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1028,"_path":1029},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1031,"_path":1032},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1034,"_path":1035},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1037,"_path":1038},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1040,"_path":1041},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1043,"_path":1044},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1046,"_path":1047},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1049,"_path":1050},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1052,"_path":1053},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1055,"_path":1056},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1058,"_path":1059},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1061,"_path":1062},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1064,"_path":1065},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1067,"_path":1068},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1070,"_path":1071},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1073,"_path":1074},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1076,"_path":1077},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1079,"_path":1080},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1082,"_path":1083},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1085,"_path":1086,"children":1087},"Writing","/writing",[1088,1091,1094,1097,1100,1103,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1147,1150,1153,1156],{"title":1089,"_path":1090},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1092,"_path":1093},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1095,"_path":1096},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1098,"_path":1099},"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":1101,"_path":1102},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1085,"_path":1086},{"title":1105,"_path":1106},"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":1108,"_path":1109},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1111,"_path":1112},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1114,"_path":1115},"My Fitness Story","/writing/my-fitness-story",{"title":1117,"_path":1118},"New job alert!","/writing/new-job-alert",{"title":1120,"_path":1121},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1123,"_path":1124},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1126,"_path":1127},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1129,"_path":1130},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1132,"_path":1133},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1135,"_path":1136},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1138,"_path":1139},"The MACH monolith","/writing/the-mach-monolith",{"title":1141,"_path":1142},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1144,"_path":1145},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":8,"_path":4},{"title":1148,"_path":1149},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1151,"_path":1152},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1154,"_path":1155},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1157,"_path":1158},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1160,"_path":1161,"children":1162},"Speaking","/speaking",[1163,1166,1169,1172,1175,1178,1181,1184,1187,1190,1193,1196,1199,1202,1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283,1286,1289,1292,1295,1298,1301,1304,1307,1310,1313,1316,1319,1322,1325,1328,1331,1334,1337,1340,1343,1346,1349,1352,1355,1358,1361,1364,1367,1370,1373,1376,1379,1382,1385,1388,1391,1394],{"title":1164,"_path":1165},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1167,"_path":1168},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1170,"_path":1171},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1173,"_path":1174},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1176,"_path":1177},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1179,"_path":1180},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1182,"_path":1183},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1185,"_path":1186},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1188,"_path":1189},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1191,"_path":1192},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1194,"_path":1195},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1197,"_path":1198},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1200,"_path":1201},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1203,"_path":1204},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1206,"_path":1207},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1209,"_path":1210},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1212,"_path":1213},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1215,"_path":1216},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1218,"_path":1219},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1221,"_path":1222},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1224,"_path":1225},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1227,"_path":1228},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1230,"_path":1231},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1233,"_path":1234},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1236,"_path":1237},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1239,"_path":1240},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1242,"_path":1243},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1245,"_path":1246},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1248,"_path":1249},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1251,"_path":1252},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1254,"_path":1255},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1257,"_path":1258},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1260,"_path":1261},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1263,"_path":1264},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1266,"_path":1267},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1269,"_path":1270},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1272,"_path":1273},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1275,"_path":1276},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1278,"_path":1279},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1281,"_path":1282},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1284,"_path":1285},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1287,"_path":1288},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1290,"_path":1291},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1293,"_path":1294},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1296,"_path":1297},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1299,"_path":1300},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1302,"_path":1303},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1305,"_path":1306},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1308,"_path":1309},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1311,"_path":1312},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1314,"_path":1315},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1317,"_path":1318},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1320,"_path":1321},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1323,"_path":1324},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1326,"_path":1327},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1329,"_path":1330},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1332,"_path":1333},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1335,"_path":1336},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1338,"_path":1339},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1341,"_path":1342},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1344,"_path":1345},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1347,"_path":1348},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1350,"_path":1351},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1353,"_path":1354},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1356,"_path":1357},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1359,"_path":1360},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1362,"_path":1363},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1365,"_path":1366},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1368,"_path":1369},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1371,"_path":1372},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1374,"_path":1375},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1377,"_path":1378},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1380,"_path":1381},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1383,"_path":1384},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1386,"_path":1387},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1389,"_path":1390},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1392,"_path":1393},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1160,"_path":1161},{"title":1396,"_path":1397},"live streams","/livestreams",{"title":1399,"_path":1400},"press kit","/presskit",{"title":1402,"_path":1403},"alive and kicking","/alive-and-kicking",1718484379209] \ No newline at end of file diff --git a/writing/this-is-headless-20/index.html b/writing/this-is-headless-20/index.html deleted file mode 100644 index 0218c6fb..00000000 --- a/writing/this-is-headless-20/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - -This is headless 2.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

This is headless 2.0

Jul 11, 2023 at https://www.linkedin.com/pulse/headless-20-tim-benniks/

That’s a bold title, but it’s high time to change how we work with headless technology. I wrote about the MACH monolith before. Here, I’ll describe how to avoid ending up in a codebase full of technical debt, aka glue code—chores that overburden and frustrate developers.

The why

Headless technology has gained prominence in web development, offering benefits like higher performance, front-end freedom, DX features, and management through APIs—a thrill for techies. However, at scale, complexities arise due to an endless need for glue code for connecting content sources, let alone authoring issues caused by disconnects between content editors and front-end presentation.

In particular, separation of content authoring and presentation results in a steep learning curve for content editors, who would need help to preview their work and ensure a correct display. But how do you preview content that connects to multiple sources, all offering some form of preview capability? As a fix, people do either of the following:

  • Connect to the sources via CMS plugins and add data-modeling capabilities for page layouts unrelated to core CMS functionalities. For more details, read my article on the MACH monolith
  • Hard-code all the connections in the front end, forcing content editors to file IT tickets for updates.

For web projects to succeed, since developers, marketers, and content editors boast different strengths, teams must be able to collaborate harmoniously and seamlessly. For all that headless promises freedom and excellent developer experience, it pushes the pain threshold of marketers.

Connecting lots of services creates glue code and technical debt.

Connecting lots of services creates glue code and technical debt.

The how

Two things are paramount as a fix:

  • Simple, easy-to-maintain front-end codebases that contain minimal glue code and technical debt. 
  • Elimination of the need for content editors to tackle the abstractness of a composable architecture populated by a plethora of different tools. Content editors need a visual-editing capability across headless sources to ensure the display is exactly what they desire without giving up on a solid technical architecture.

In other words, content editors need a page-composition process similar in concept to that of GraphQL, i.e., one that returns only the needed properties and content of all page components. All the editors need to do is add the component props with data from external sources—with no need to know the data’s origin. The result is curated, page-specific JSON output that can be consumed by the front end, which need not connect to external data sources.

Connect services to design system components and compose a page. Curate your data a la GraphQL but visually.

Connect services to design system components and compose a page. Curate your data a la GraphQL but visually.

What emerges is a transparent and simple platform on which to compose pages based on design components, whose props point to a field in an external API endpoint. That platform would not be a CMS or data-federation tool. All it needs to know is which component points to which data source for a specific page composition.

A visual workspace

Therefore, the job of the platform, which represents all the design components with linked data sources (CMS, PIM, DAM), is to connect them and store the result like a curated GraphQL query on a CDN edge. The only data this platform would potentially store are one-off content strings like “latest blog posts” or the fact that a particular component variant, e.g., the image on the left or right, is shown in a specific context.

That setup gives rise to a streamlined workflow:

  • To publish content, editors visually connect external data to components properties. That data can come from any source.
  • Editors compose their design-system components visually to represent the page design they want.
  • A curated JSON structure of the composition is saved to the CDN edge.
  • The front end connects to the API endpoint of the platform. An intuitive and light SDK connects to the CDN edge, keeping the front end code simple.

To make it all visual for content editors, match the naming of the design-system components in the codebase to the ones in the platform and have the SDK show the components in a preview window. Simultaneously, content editors can bind data from external sources to the props and design how the components should look and behave.

With solid cache purging for data sources, you can create dynamic pages that connect to any amount of data and deliver in less than 50ms from a CDN edge near you. In case of external data-source changes, the TTL on the field or a webhook purges the cache, resulting in fresh data. 

If used in conjunction with the latest Next, NuxtJS, or Astro features, this approach leads to a robust yet no-frills front end with no need to connect to data sources in code or mapping their data to component props. Talk about happy developers!

Image description

Map design system component props to individual API response fields to create a visual editor that works across headless sources.

A recap

Connecting everything code-first at scale is painful for developers and content editors alike, the former having to maintain the connections and content mappings, and the latter getting lost in the abstract tools with no clues of what happens on a click to publish.

A composable architecture of headless sources must be a team buy, not just a developer choice. What’s needed is a visual workspace that’s—

  • Friendly to content editors but also feature-rich for developers while maintaining excellent technical architecture without compromises. 
  • Agnostic and not a one-size-fits-all offering from a single CMS vendor. 

In other words, we need a modern, composable form of the old-school DXPs like Adobe AEM. I believe what I described above resembles digital experience composition as coined by Gartner.

This is Headless 2.0

- \ No newline at end of file diff --git a/writing/uniform-dxcp-the-what-why-and-how/_payload.json b/writing/uniform-dxcp-the-what-why-and-how/_payload.json deleted file mode 100644 index 31c536fa..00000000 --- a/writing/uniform-dxcp-the-what-why-and-how/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1352},["Reactive",2],{"content-query-nUnxMIIHya":3,"content-navigation-8C37fagqQL":236},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":231,"_id":232,"_source":233,"_file":234,"_extension":235},"/writing/uniform-dxcp-the-what-why-and-how","writing",false,"","Uniform DXCP: the what, why, and how","Nowadays, you’re hard pressed to find an application with all the functionalities you need for...",1405728,"uniform-dxcp-the-what-why-and-how","2023-03-18T13:03:16Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0iccm5uux0ndu9ulnc2g.png","https://uniform.dev/blogs/uniform-dxcp-the-what-why-and-how",[16,17,18,19],"cdn","edge","sitecore","headless",22300,{"type":22,"children":23,"toc":228},"root",[24,43,57,62,67,72,104,118,132,146,151,156,161,195,200,205,223],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29,32,41],{"type":30,"value":31},"text","Nowadays, you’re hard pressed to find an application with all the functionalities you need for delivering personalized digital experiences. Even though with headless solutions, you can select the best options for your goals, you can, through composability, easily connect the applications that drive personalized experiences. Still, simply adopting headless technologies isn’t enough; you also need a ",{"type":25,"tag":33,"props":34,"children":38},"a",{"href":35,"rel":36},"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how",[37],"nofollow",[39],{"type":30,"value":40},"composable architecture",{"type":30,"value":42}," that fosters innovation and a seamless authoring experience for business users. ",{"type":25,"tag":26,"props":44,"children":45},{},[46,48,55],{"type":30,"value":47},"The answer is Uniform ",{"type":25,"tag":33,"props":49,"children":52},{"href":50,"rel":51},"https://uniform.dev/what-is-digital-experience-composition",[37],[53],{"type":30,"value":54},"Digital Experience Composition Platform (DXCP)",{"type":30,"value":56},", whose vendor-agnostic capabilities scale to your needs, enabling you to assemble, change, and reassemble your tools as requirements evolve. But what is Uniform DXCP and why does it exist? Read on.",{"type":25,"tag":26,"props":58,"children":59},{},[60],{"type":30,"value":61},"##What is Uniform DXCP?",{"type":25,"tag":26,"props":63,"children":64},{},[65],{"type":30,"value":66},"Uniform DXCP is a new, unique product category with which you can effortlessly integrate legacy and composable services with your design system and front end of choice. In particular, you can switch to and maintain composable systems without having to build and support the connections among those systems. In a composable architecture, that means adding and removing the tools without breaking your personalized, omnichannel digital experience. ",{"type":25,"tag":26,"props":68,"children":69},{},[70],{"type":30,"value":71},"##Why is now the time to move beyond the modern tech stack?",{"type":25,"tag":26,"props":73,"children":74},{},[75,77,84,86,93,95,102],{"type":30,"value":76},"Similar to a composer who arranges the notes of a musical score, you’re the composer of your project’s tech stack. Say, your stack comprises various tools—a ",{"type":25,"tag":33,"props":78,"children":81},{"href":79,"rel":80},"https://uniform.dev/blogs/headless-cms/uniform-for-headless-cms",[37],[82],{"type":30,"value":83},"headless content management system (CMS)",{"type":30,"value":85},", a ",{"type":25,"tag":33,"props":87,"children":90},{"href":88,"rel":89},"https://uniform.dev/blogs/composable-architecture/uniform-for-headless-commerce",[37],[91],{"type":30,"value":92},"commerce platform",{"type":30,"value":94},", a digital asset management (DAM) system, and so on—from different vendors. By combining those technologies and hosting them on a ",{"type":25,"tag":33,"props":96,"children":99},{"href":97,"rel":98},"https://uniform.dev/blogs/sitecore/deliver-better-digital-experiences-with-a-cdn",[37],[100],{"type":30,"value":101},"content delivery network (CDN)",{"type":30,"value":103},", you render a webpage. ",{"type":25,"tag":26,"props":105,"children":106},{},[107,109,116],{"type":30,"value":108},"Nonetheless, connecting headless tools with APIs doesn’t necessarily produce a high-quality or ",{"type":25,"tag":33,"props":110,"children":113},{"href":111,"rel":112},"https://uniform.dev/blogs/composable-architecture/headless-versus-composable-everything-you-need-to-know",[37],[114],{"type":30,"value":115},"composable experience",{"type":30,"value":117},". As your enterprise scales up, your business must grow as well, meaning that you must incorporate more and more applications into your tech stack, all of which are hard coded into one another through their app stores or your front-end technology. ",{"type":25,"tag":26,"props":119,"children":120},{},[121,123,130],{"type":30,"value":122},"What you end up with is a messy, unwieldy, and inflexible tech stack—a maintenance headache  for your developers. Not to mention that ",{"type":25,"tag":33,"props":124,"children":127},{"href":125,"rel":126},"https://uniform.dev/blogs/composable-architecture/switching-vendors-for-digital-architectures-without-replatforming",[37],[128],{"type":30,"value":129},"replatforming",{"type":30,"value":131}," or rebuilding your project from scratch can be nightmarish and expensive. ",{"type":25,"tag":26,"props":133,"children":134},{},[135,137,144],{"type":30,"value":136},"How do you transform your tech stack from a cacophony of integrations connected by endless ",{"type":25,"tag":33,"props":138,"children":141},{"href":139,"rel":140},"https://uniform.dev/blogs/glue-code",[37],[142],{"type":30,"value":143},"glue code",{"type":30,"value":145}," into a composable architecture that bridges your tools into a harmonious experience? You do it with digital experience composition.  ",{"type":25,"tag":26,"props":147,"children":148},{},[149],{"type":30,"value":150},"##How do you transition from chaos to composable with DXCP",{"type":25,"tag":26,"props":152,"children":153},{},[154],{"type":30,"value":155},"With Uniform DXCP, you need not create and maintain the custom code that connects your APIs and front-end layers. Instead, you can compose and organize headless solutions in your tech stack without the exorbitant costs, laborious upgrades, and complexities. ",{"type":25,"tag":26,"props":157,"children":158},{},[159],{"type":30,"value":160},"Here are the major benefits of moving to composable with Uniform DXCP: ",{"type":25,"tag":162,"props":163,"children":164},"ul",{},[165,180,185,190],{"type":25,"tag":166,"props":167,"children":168},"li",{},[169,171,178],{"type":30,"value":170},"Remember the messy tech stack we cited earlier? ",{"type":25,"tag":33,"props":172,"children":175},{"href":173,"rel":174},"https://uniform.dev/blogs/composable-architecture/the-mach-monolith",[37],[176],{"type":30,"value":177},"Monolithic architectures",{"type":30,"value":179}," require development of new features or investment in complicated integrations. Not so with Uniform DXCP, whose API-orchestration layer handles the connections among your digital experiences and the applications that power them.",{"type":25,"tag":166,"props":181,"children":182},{},[183],{"type":30,"value":184},"No more “publish and pray” moments. Uniform DXCP’s no-code orchestration layer accords business users an editor with which to drag and drop components wherever they want and preview the resultant display.",{"type":25,"tag":166,"props":186,"children":187},{},[188],{"type":30,"value":189},"In DXCP, your front end is unaware of your connections so no proprietary limitations exist, and you can select any front-end technology you desire. Whether you choose Java or PHP, your digital experience remains consistent and seamless.",{"type":25,"tag":166,"props":191,"children":192},{},[193],{"type":30,"value":194},"DXCP offers a new paradigm for page creation around where data lives and how you manage that data. No more worries about product information being displayed outside the context of its intended design and user experience. With Uniform sitting on the end of your design data and keeping domain data intact, you’re free to deliver digital experiences through multiple services at scale. ",{"type":25,"tag":26,"props":196,"children":197},{},[198],{"type":30,"value":199},"##How do you fuel your stack with digital experience composition?",{"type":25,"tag":26,"props":201,"children":202},{},[203],{"type":30,"value":204},"After you’ve built a composable architecture in DXCP:",{"type":25,"tag":162,"props":206,"children":207},{},[208,213,218],{"type":25,"tag":166,"props":209,"children":210},{},[211],{"type":30,"value":212},"Your developers can easily add features and swap out tools from the stack individually.",{"type":25,"tag":166,"props":214,"children":215},{},[216],{"type":30,"value":217},"Your stack stays organized with no need for those time-consuming, costly integrations that impede your speed to market.",{"type":25,"tag":166,"props":219,"children":220},{},[221],{"type":30,"value":222},"Your marketers can drag and drop the components they need to create personalized omnichannel experiences without developer assistance. ",{"type":25,"tag":26,"props":224,"children":225},{},[226],{"type":30,"value":227},"The result is less code, greater agility and flexibility, and a more smooth approach for handling orchestration and integrating new tools into your tech stack. ",{"title":7,"searchDepth":229,"depth":229,"links":230},2,[],"markdown","content:4.writing:uniform-dxcp-the-what-why-and-how.md","content","4.writing/uniform-dxcp-the-what-why-and-how.md","md",[237,240,1032,1107,1343,1346,1349],{"title":238,"_path":239},"About","/about",{"title":241,"_path":242,"children":243},"videos","/videos",[244,263,282,328,329,381,484,507,529,857],{"title":245,"_path":246,"children":247},"Alive And Kicking","/videos/alive-and-kicking",[248,251,254,257,260],{"title":249,"_path":250},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":252,"_path":253},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":255,"_path":256},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":258,"_path":259},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":261,"_path":262},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":264,"_path":265,"children":266},"Headless Creator","/videos/headless-creator",[267,270,273,276,279],{"title":268,"_path":269},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":271,"_path":272},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":274,"_path":275},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":277,"_path":278},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":280,"_path":281},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":283,"_path":284,"children":285},"Hygraph","/videos/hygraph",[286,289,292,295,298,301,304,307,310,313,316,319,322,325],{"title":287,"_path":288},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":290,"_path":291},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":293,"_path":294},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":296,"_path":297},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":299,"_path":300},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":302,"_path":303},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":305,"_path":306},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":308,"_path":309},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":311,"_path":312},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":314,"_path":315},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":317,"_path":318},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":320,"_path":321},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":323,"_path":324},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":326,"_path":327},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":241,"_path":242},{"title":330,"_path":331,"children":332},"Live Hygraph","/videos/live-hygraph",[333,336,339,342,345,348,351,354,357,360,363,366,369,372,375,378],{"title":334,"_path":335},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":337,"_path":338},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":340,"_path":341},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":343,"_path":344},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":346,"_path":347},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":349,"_path":350},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":352,"_path":353},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":355,"_path":356},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":358,"_path":359},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":361,"_path":362},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":364,"_path":365},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":367,"_path":368},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":370,"_path":371},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":373,"_path":374},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":376,"_path":377},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":379,"_path":380},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":382,"_path":383,"children":384},"Live Uniform","/videos/live-uniform",[385,388,391,394,397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481],{"title":386,"_path":387},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":389,"_path":390},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":392,"_path":393},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":395,"_path":396},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":398,"_path":399},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":401,"_path":402},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":404,"_path":405},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":407,"_path":408},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":410,"_path":411},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":413,"_path":414},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":416,"_path":417},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":419,"_path":420},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":422,"_path":423},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":425,"_path":426},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":428,"_path":429},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":431,"_path":432},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":434,"_path":435},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":437,"_path":438},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":440,"_path":441},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":443,"_path":444},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":446,"_path":447},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":449,"_path":450},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":452,"_path":453},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":455,"_path":456},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":458,"_path":459},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":461,"_path":462},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":464,"_path":465},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":467,"_path":468},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":470,"_path":471},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":473,"_path":474},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":476,"_path":477},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":479,"_path":480},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":482,"_path":483},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":485,"_path":486,"children":487},"Misc Streams","/videos/misc-streams",[488,491,494,497,499,501,504],{"title":489,"_path":490},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":492,"_path":493},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":495,"_path":496},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":479,"_path":498},"/videos/misc-streams/003-jvgiaotcerq",{"title":470,"_path":500},"/videos/misc-streams/004-ekut1koa2n8",{"title":502,"_path":503},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":505,"_path":506},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":508,"_path":509,"children":510},"Mp","/videos/mp",[511,514,517,520,523,526],{"title":512,"_path":513},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":515,"_path":516},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":518,"_path":519},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":521,"_path":522},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":524,"_path":525},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":527,"_path":528},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":530,"_path":531,"children":532},"Tim","/videos/tim",[533,535,538,541,544,547,550,553,556,559,562,565,568,571,574,577,580,583,585,587,590,593,596,599,602,605,608,611,614,617,620,623,626,629,632,635,638,641,644,647,650,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854],{"title":252,"_path":534},"/videos/tim/000-mvq-_s20ndk",{"title":536,"_path":537},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":539,"_path":540},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":542,"_path":543},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":545,"_path":546},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":548,"_path":549},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":551,"_path":552},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":554,"_path":555},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":557,"_path":558},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":560,"_path":561},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":563,"_path":564},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":566,"_path":567},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":569,"_path":570},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":572,"_path":573},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":575,"_path":576},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":578,"_path":579},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":581,"_path":582},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":255,"_path":584},"/videos/tim/017-m0mrligs6i0",{"title":249,"_path":586},"/videos/tim/018-hhpitreyobi",{"title":588,"_path":589},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":591,"_path":592},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":594,"_path":595},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":597,"_path":598},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":600,"_path":601},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":603,"_path":604},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":606,"_path":607},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":609,"_path":610},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":612,"_path":613},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":615,"_path":616},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":618,"_path":619},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":621,"_path":622},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":624,"_path":625},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":627,"_path":628},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":630,"_path":631},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":633,"_path":634},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":636,"_path":637},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":639,"_path":640},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":642,"_path":643},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":645,"_path":646},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":648,"_path":649},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":651,"_path":652},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":654,"_path":655},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":657,"_path":658},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":660,"_path":661},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":663,"_path":664},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":666,"_path":667},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":669,"_path":670},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":672,"_path":673},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":675,"_path":676},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":678,"_path":679},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":681,"_path":682},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":684,"_path":685},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":687,"_path":688},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":690,"_path":691},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":693,"_path":694},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":696,"_path":697},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":699,"_path":700},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":702,"_path":703},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":705,"_path":706},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":708,"_path":709},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":711,"_path":712},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":714,"_path":715},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":717,"_path":718},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":720,"_path":721},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":723,"_path":724},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":726,"_path":727},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":729,"_path":730},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":732,"_path":733},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":735,"_path":736},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":738,"_path":739},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":741,"_path":742},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":744,"_path":745},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":747,"_path":748},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":750,"_path":751},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":753,"_path":754},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":756,"_path":757},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":759,"_path":760},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":762,"_path":763},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":765,"_path":766},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":768,"_path":769},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":771,"_path":772},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":774,"_path":775},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":777,"_path":778},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":780,"_path":781},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":783,"_path":784},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":786,"_path":787},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":789,"_path":790},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":792,"_path":793},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":795,"_path":796},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":798,"_path":799},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":801,"_path":802},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":804,"_path":805},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":807,"_path":808},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":810,"_path":811},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":813,"_path":814},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":816,"_path":817},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":819,"_path":820},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":822,"_path":823},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":825,"_path":826},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":828,"_path":829},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":831,"_path":832},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":834,"_path":835},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":837,"_path":838},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":840,"_path":841},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":843,"_path":844},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":846,"_path":847},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":849,"_path":850},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":852,"_path":853},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":855,"_path":856},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":858,"_path":859,"children":860},"Uniform","/videos/uniform",[861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029],{"title":862,"_path":863},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":865,"_path":866},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":868,"_path":869},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":871,"_path":872},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":874,"_path":875},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":877,"_path":878},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":880,"_path":881},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":883,"_path":884},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":886,"_path":887},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":889,"_path":890},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":892,"_path":893},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":895,"_path":896},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":898,"_path":899},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":901,"_path":902},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":904,"_path":905},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":907,"_path":908},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":910,"_path":911},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":913,"_path":914},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":916,"_path":917},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":919,"_path":920},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":922,"_path":923},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":925,"_path":926},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":928,"_path":929},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":931,"_path":932},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":934,"_path":935},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":937,"_path":938},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":940,"_path":941},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":943,"_path":944},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":946,"_path":947},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":949,"_path":950},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":952,"_path":953},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":955,"_path":956},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":958,"_path":959},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":961,"_path":962},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":964,"_path":965},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":967,"_path":968},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":970,"_path":971},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":973,"_path":974},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":976,"_path":977},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":979,"_path":980},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":982,"_path":983},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":985,"_path":986},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":988,"_path":989},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":991,"_path":992},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":994,"_path":995},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":997,"_path":998},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1000,"_path":1001},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1003,"_path":1004},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1006,"_path":1007},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1009,"_path":1010},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1012,"_path":1013},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1015,"_path":1016},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1018,"_path":1019},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1021,"_path":1022},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1024,"_path":1025},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1027,"_path":1028},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1030,"_path":1031},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1033,"_path":1034,"children":1035},"Writing","/writing",[1036,1039,1042,1045,1048,1051,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091,1094,1097,1098,1101,1104],{"title":1037,"_path":1038},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1040,"_path":1041},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1043,"_path":1044},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1046,"_path":1047},"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":1049,"_path":1050},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1033,"_path":1034},{"title":1053,"_path":1054},"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":1056,"_path":1057},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1059,"_path":1060},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1062,"_path":1063},"My Fitness Story","/writing/my-fitness-story",{"title":1065,"_path":1066},"New job alert!","/writing/new-job-alert",{"title":1068,"_path":1069},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1071,"_path":1072},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1074,"_path":1075},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1077,"_path":1078},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1080,"_path":1081},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1083,"_path":1084},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1086,"_path":1087},"The MACH monolith","/writing/the-mach-monolith",{"title":1089,"_path":1090},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1092,"_path":1093},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1095,"_path":1096},"This is headless 2.0","/writing/this-is-headless-20",{"title":8,"_path":4},{"title":1099,"_path":1100},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1102,"_path":1103},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1105,"_path":1106},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1108,"_path":1109,"children":1110},"Speaking","/speaking",[1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342],{"title":1112,"_path":1113},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1115,"_path":1116},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1118,"_path":1119},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1121,"_path":1122},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1124,"_path":1125},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1127,"_path":1128},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1130,"_path":1131},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1133,"_path":1134},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1136,"_path":1137},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1139,"_path":1140},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1142,"_path":1143},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1145,"_path":1146},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1148,"_path":1149},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1151,"_path":1152},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1154,"_path":1155},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1157,"_path":1158},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1160,"_path":1161},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1163,"_path":1164},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1166,"_path":1167},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1169,"_path":1170},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1172,"_path":1173},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1175,"_path":1176},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1178,"_path":1179},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1181,"_path":1182},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1184,"_path":1185},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1187,"_path":1188},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1190,"_path":1191},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1193,"_path":1194},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1196,"_path":1197},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1199,"_path":1200},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1202,"_path":1203},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1205,"_path":1206},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1208,"_path":1209},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1211,"_path":1212},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1214,"_path":1215},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1217,"_path":1218},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1220,"_path":1221},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1223,"_path":1224},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1226,"_path":1227},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1229,"_path":1230},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1232,"_path":1233},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1235,"_path":1236},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1238,"_path":1239},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1241,"_path":1242},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1244,"_path":1245},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1247,"_path":1248},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1250,"_path":1251},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1253,"_path":1254},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1256,"_path":1257},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1259,"_path":1260},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1262,"_path":1263},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1265,"_path":1266},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1268,"_path":1269},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1271,"_path":1272},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1274,"_path":1275},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1277,"_path":1278},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1280,"_path":1281},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1283,"_path":1284},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1286,"_path":1287},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1289,"_path":1290},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1292,"_path":1293},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1295,"_path":1296},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1298,"_path":1299},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1301,"_path":1302},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1304,"_path":1305},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1307,"_path":1308},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1310,"_path":1311},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1313,"_path":1314},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1316,"_path":1317},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1319,"_path":1320},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1322,"_path":1323},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1325,"_path":1326},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1328,"_path":1329},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1331,"_path":1332},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1334,"_path":1335},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1337,"_path":1338},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1340,"_path":1341},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1108,"_path":1109},{"title":1344,"_path":1345},"live streams","/livestreams",{"title":1347,"_path":1348},"press kit","/presskit",{"title":1350,"_path":1351},"alive and kicking","/alive-and-kicking",1718484379634] \ No newline at end of file diff --git a/writing/uniform-dxcp-the-what-why-and-how/index.html b/writing/uniform-dxcp-the-what-why-and-how/index.html deleted file mode 100644 index 4ffdbe3c..00000000 --- a/writing/uniform-dxcp-the-what-why-and-how/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - -Uniform DXCP: the what, why, and how - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Uniform DXCP: the what, why, and how

Mar 18, 2023 at https://uniform.dev/blogs/uniform-dxcp-the-what-why-and-how

Nowadays, you’re hard pressed to find an application with all the functionalities you need for delivering personalized digital experiences. Even though with headless solutions, you can select the best options for your goals, you can, through composability, easily connect the applications that drive personalized experiences. Still, simply adopting headless technologies isn’t enough; you also need a composable architecture that fosters innovation and a seamless authoring experience for business users. 

The answer is Uniform Digital Experience Composition Platform (DXCP), whose vendor-agnostic capabilities scale to your needs, enabling you to assemble, change, and reassemble your tools as requirements evolve. But what is Uniform DXCP and why does it exist? Read on.

##What is Uniform DXCP?

Uniform DXCP is a new, unique product category with which you can effortlessly integrate legacy and composable services with your design system and front end of choice. In particular, you can switch to and maintain composable systems without having to build and support the connections among those systems. In a composable architecture, that means adding and removing the tools without breaking your personalized, omnichannel digital experience. 

##Why is now the time to move beyond the modern tech stack?

Similar to a composer who arranges the notes of a musical score, you’re the composer of your project’s tech stack. Say, your stack comprises various tools—a headless content management system (CMS), a commerce platform, a digital asset management (DAM) system, and so on—from different vendors. By combining those technologies and hosting them on a content delivery network (CDN), you render a webpage. 

Nonetheless, connecting headless tools with APIs doesn’t necessarily produce a high-quality or composable experience. As your enterprise scales up, your business must grow as well, meaning that you must incorporate more and more applications into your tech stack, all of which are hard coded into one another through their app stores or your front-end technology. 

What you end up with is a messy, unwieldy, and inflexible tech stack—a maintenance headache  for your developers. Not to mention that replatforming or rebuilding your project from scratch can be nightmarish and expensive. 

How do you transform your tech stack from a cacophony of integrations connected by endless glue code into a composable architecture that bridges your tools into a harmonious experience? You do it with digital experience composition.  

##How do you transition from chaos to composable with DXCP

With Uniform DXCP, you need not create and maintain the custom code that connects your APIs and front-end layers. Instead, you can compose and organize headless solutions in your tech stack without the exorbitant costs, laborious upgrades, and complexities. 

Here are the major benefits of moving to composable with Uniform DXCP: 

  • Remember the messy tech stack we cited earlier? Monolithic architectures require development of new features or investment in complicated integrations. Not so with Uniform DXCP, whose API-orchestration layer handles the connections among your digital experiences and the applications that power them.
  • No more “publish and pray” moments. Uniform DXCP’s no-code orchestration layer accords business users an editor with which to drag and drop components wherever they want and preview the resultant display.
  • In DXCP, your front end is unaware of your connections so no proprietary limitations exist, and you can select any front-end technology you desire. Whether you choose Java or PHP, your digital experience remains consistent and seamless.
  • DXCP offers a new paradigm for page creation around where data lives and how you manage that data. No more worries about product information being displayed outside the context of its intended design and user experience. With Uniform sitting on the end of your design data and keeping domain data intact, you’re free to deliver digital experiences through multiple services at scale. 

##How do you fuel your stack with digital experience composition?

After you’ve built a composable architecture in DXCP:

  • Your developers can easily add features and swap out tools from the stack individually.
  • Your stack stays organized with no need for those time-consuming, costly integrations that impede your speed to market.
  • Your marketers can drag and drop the components they need to create personalized omnichannel experiences without developer assistance. 

The result is less code, greater agility and flexibility, and a more smooth approach for handling orchestration and integrating new tools into your tech stack. 

- \ No newline at end of file diff --git a/writing/uniform-is-nuxt-3-read/_payload.json b/writing/uniform-is-nuxt-3-read/_payload.json deleted file mode 100644 index 49d9572c..00000000 --- a/writing/uniform-is-nuxt-3-read/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1306},["Reactive",2],{"content-query-mQK73hB5Ay":3,"content-navigation-8C37fagqQL":190},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":20,"body":21,"_type":185,"_id":186,"_source":187,"_file":188,"_extension":189},"/writing/uniform-is-nuxt-3-read","writing",false,"","Uniform is Nuxt 3 ready","We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with Vue...",1405730,"uniform-is-nuxt-3-read","2023-03-18T13:10:06Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96gzr0p69e9frwbj3i8w.png","https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3",[16,17,18,19],"webdev","javascript","nuxt","vue",22300,{"type":22,"children":23,"toc":182},"root",[24,52,57,62,67,72,77,130,135,149,154,159],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29,32,41,43,50],{"type":30,"value":31},"text","We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with ",{"type":25,"tag":33,"props":34,"children":38},"a",{"href":35,"rel":36},"https://blog.vuejs.org/posts/vue-3-as-the-new-default.html",[37],"nofollow",[39],{"type":30,"value":40},"Vue 3",{"type":30,"value":42}," and ",{"type":25,"tag":33,"props":44,"children":47},{"href":45,"rel":46},"https://v3.nuxtjs.org/",[37],[48],{"type":30,"value":49},"Nuxt 3",{"type":30,"value":51},". ",{"type":25,"tag":26,"props":53,"children":54},{},[55],{"type":30,"value":56},"Nuxt 3 is fast approaching GA. To ensure that Vue.js enthusiasts can build next-generation web experiences with the awesome features offered by Nuxt 3, our new SDK fully supports all Uniform capabilities: from no-code presentation management by Uniform Canvas, complete with web-socket-based live previews, to edge-side personalization and A/B testing through Uniform Context. ",{"type":25,"tag":26,"props":58,"children":59},{},[60],{"type":30,"value":61},"With the Nuxt 3 Nitro engine, developers can now run an entire site on the edge or combine personalization on the edge with delivery of the remaining content in SSG mode through a CDN. Even for highly dynamic pages, the latter choice results in blazing-fast page loads. We’re talking sub 50 milliseconds!",{"type":25,"tag":26,"props":63,"children":64},{},[65],{"type":30,"value":66},"Nuxt 3 is truly game changing, and Uniform takes full advantage of that with an easy-to-install SDK that follows Nuxt’s no-config ethos.",{"type":25,"tag":26,"props":68,"children":69},{},[70],{"type":30,"value":71},"##Features of Uniform’s Nuxt 3 module",{"type":25,"tag":26,"props":73,"children":74},{},[75],{"type":30,"value":76},"This is what the module can do:",{"type":25,"tag":78,"props":79,"children":80},"ul",{},[81,87,92,97,120,125],{"type":25,"tag":82,"props":83,"children":84},"li",{},[85],{"type":30,"value":86},"Auto-registers the required Uniform components.",{"type":25,"tag":82,"props":88,"children":89},{},[90],{"type":30,"value":91},"Auto-creates a Uniform Canvas client.",{"type":25,"tag":82,"props":93,"children":94},{},[95],{"type":30,"value":96},"Creates a Uniform Context instance (for personalization) and makes it available throughout the app without the need for a wrapping component.",{"type":25,"tag":82,"props":98,"children":99},{},[100,102,109,111,118],{"type":30,"value":101},"Builds a handy ",{"type":25,"tag":103,"props":104,"children":106},"code",{"className":105},[],[107],{"type":30,"value":108},"$useCompositionClick to copy",{"type":30,"value":110}," composable on top of Nuxt's ",{"type":25,"tag":33,"props":112,"children":115},{"href":113,"rel":114},"https://v3.nuxtjs.org/api/composables/use-async-data",[37],[116],{"type":30,"value":117},"useAsyncData",{"type":30,"value":119},".",{"type":25,"tag":82,"props":121,"children":122},{},[123],{"type":30,"value":124},"Displays live previews seamlessly.",{"type":25,"tag":82,"props":126,"children":127},{},[128],{"type":30,"value":129},"Monitors query-string changes, which Nuxt doesn't do by default.",{"type":25,"tag":26,"props":131,"children":132},{},[133],{"type":30,"value":134},"##Benefits of using Uniform with Nuxt 3",{"type":25,"tag":26,"props":136,"children":137},{},[138,140,147],{"type":30,"value":139},"As a rule, no single system offers all the functionalities you need for an app. Instead, multiple systems must work together for the app to run smoothly. A ",{"type":25,"tag":33,"props":141,"children":144},{"href":142,"rel":143},"https://uniform.dev/blogs/composable-architecture/composable-platforms-what-why-how",[37],[145],{"type":30,"value":146},"composable architecture",{"type":30,"value":148}," is one in which you can pick and choose the components for your technology stack, but getting them to work together well can be challenging. ",{"type":25,"tag":26,"props":150,"children":151},{},[152],{"type":30,"value":153},"Modern headless systems can connect with other systems as part of a composable architecture. However, using some composable services doesn’t give you a full composable architecture.",{"type":25,"tag":26,"props":155,"children":156},{},[157],{"type":30,"value":158},"Real composability means that you can add or remove components easily as your needs evolve. That’s what Uniform offers. With Uniform’s composition layer, you can build and maintain a modern stack with composable services without tightly coupling them. As a result, developers, content creators, and marketers alike can create and deliver experiences quickly, independently and without vendor lock-in.",{"type":25,"tag":78,"props":160,"children":161},{},[162,167,172,177],{"type":25,"tag":82,"props":163,"children":164},{},[165],{"type":30,"value":166},"Developers can add or change services any time, assured that their tools will work well together without the need for time-consuming and expensive replatforming and reintegration.",{"type":25,"tag":82,"props":168,"children":169},{},[170],{"type":30,"value":171},"Content creators can build engaging experiences with a consistent, no-code approach through which they can readily leverage all the tools in their stack.",{"type":25,"tag":82,"props":173,"children":174},{},[175],{"type":30,"value":176},"Marketers can promote conversions through intent-based personalization and experimentation mechanisms that integrate with customer data and that are simple and intuitive for implementation by developers.",{"type":25,"tag":82,"props":178,"children":179},{},[180],{"type":30,"value":181},"As internal needs or consumer tastes change, the organization can be agile enough to meet these challenges, without extensive background work that doesn’t deliver direct value to end users.",{"title":7,"searchDepth":183,"depth":183,"links":184},2,[],"markdown","content:4.writing:uniform-is-nuxt-3-read.md","content","4.writing/uniform-is-nuxt-3-read.md","md",[191,194,986,1061,1297,1300,1303],{"title":192,"_path":193},"About","/about",{"title":195,"_path":196,"children":197},"videos","/videos",[198,217,236,282,283,335,438,461,483,811],{"title":199,"_path":200,"children":201},"Alive And Kicking","/videos/alive-and-kicking",[202,205,208,211,214],{"title":203,"_path":204},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":206,"_path":207},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":209,"_path":210},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":212,"_path":213},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":215,"_path":216},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":218,"_path":219,"children":220},"Headless Creator","/videos/headless-creator",[221,224,227,230,233],{"title":222,"_path":223},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":225,"_path":226},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":228,"_path":229},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":231,"_path":232},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":234,"_path":235},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":237,"_path":238,"children":239},"Hygraph","/videos/hygraph",[240,243,246,249,252,255,258,261,264,267,270,273,276,279],{"title":241,"_path":242},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":244,"_path":245},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":247,"_path":248},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":250,"_path":251},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":253,"_path":254},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":256,"_path":257},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":259,"_path":260},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":262,"_path":263},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":265,"_path":266},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":268,"_path":269},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":271,"_path":272},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":274,"_path":275},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":277,"_path":278},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":280,"_path":281},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":195,"_path":196},{"title":284,"_path":285,"children":286},"Live Hygraph","/videos/live-hygraph",[287,290,293,296,299,302,305,308,311,314,317,320,323,326,329,332],{"title":288,"_path":289},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":291,"_path":292},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":294,"_path":295},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":297,"_path":298},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":300,"_path":301},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":303,"_path":304},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":306,"_path":307},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":309,"_path":310},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":312,"_path":313},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":315,"_path":316},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":318,"_path":319},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":321,"_path":322},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":324,"_path":325},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":327,"_path":328},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":330,"_path":331},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":333,"_path":334},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":336,"_path":337,"children":338},"Live Uniform","/videos/live-uniform",[339,342,345,348,351,354,357,360,363,366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,411,414,417,420,423,426,429,432,435],{"title":340,"_path":341},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":343,"_path":344},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":346,"_path":347},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":349,"_path":350},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":352,"_path":353},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":355,"_path":356},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":358,"_path":359},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":361,"_path":362},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":364,"_path":365},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":367,"_path":368},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":370,"_path":371},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":373,"_path":374},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":376,"_path":377},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":379,"_path":380},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":382,"_path":383},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":385,"_path":386},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":388,"_path":389},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":391,"_path":392},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":394,"_path":395},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":397,"_path":398},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":400,"_path":401},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":403,"_path":404},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":406,"_path":407},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":409,"_path":410},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":412,"_path":413},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":415,"_path":416},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":418,"_path":419},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":421,"_path":422},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":424,"_path":425},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":427,"_path":428},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":430,"_path":431},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":433,"_path":434},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":436,"_path":437},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":439,"_path":440,"children":441},"Misc Streams","/videos/misc-streams",[442,445,448,451,453,455,458],{"title":443,"_path":444},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":446,"_path":447},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":449,"_path":450},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":433,"_path":452},"/videos/misc-streams/003-jvgiaotcerq",{"title":424,"_path":454},"/videos/misc-streams/004-ekut1koa2n8",{"title":456,"_path":457},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":459,"_path":460},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":462,"_path":463,"children":464},"Mp","/videos/mp",[465,468,471,474,477,480],{"title":466,"_path":467},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":469,"_path":470},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":472,"_path":473},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":475,"_path":476},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":478,"_path":479},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":481,"_path":482},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":484,"_path":485,"children":486},"Tim","/videos/tim",[487,489,492,495,498,501,504,507,510,513,516,519,522,525,528,531,534,537,539,541,544,547,550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769,772,775,778,781,784,787,790,793,796,799,802,805,808],{"title":206,"_path":488},"/videos/tim/000-mvq-_s20ndk",{"title":490,"_path":491},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":493,"_path":494},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":496,"_path":497},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":499,"_path":500},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":502,"_path":503},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":505,"_path":506},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":508,"_path":509},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":511,"_path":512},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":514,"_path":515},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":517,"_path":518},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":520,"_path":521},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":523,"_path":524},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":526,"_path":527},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":529,"_path":530},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":532,"_path":533},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":535,"_path":536},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":209,"_path":538},"/videos/tim/017-m0mrligs6i0",{"title":203,"_path":540},"/videos/tim/018-hhpitreyobi",{"title":542,"_path":543},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":545,"_path":546},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":548,"_path":549},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":551,"_path":552},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":554,"_path":555},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":557,"_path":558},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":560,"_path":561},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":563,"_path":564},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":566,"_path":567},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":569,"_path":570},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":572,"_path":573},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":575,"_path":576},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":578,"_path":579},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":581,"_path":582},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":584,"_path":585},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":587,"_path":588},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":590,"_path":591},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":593,"_path":594},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":596,"_path":597},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":599,"_path":600},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":602,"_path":603},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":605,"_path":606},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":608,"_path":609},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":611,"_path":612},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":614,"_path":615},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":617,"_path":618},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":620,"_path":621},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":623,"_path":624},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":626,"_path":627},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":629,"_path":630},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":632,"_path":633},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":635,"_path":636},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":638,"_path":639},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":641,"_path":642},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":644,"_path":645},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":647,"_path":648},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":650,"_path":651},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":653,"_path":654},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":656,"_path":657},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":659,"_path":660},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":662,"_path":663},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":665,"_path":666},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":668,"_path":669},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":671,"_path":672},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":674,"_path":675},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":677,"_path":678},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":680,"_path":681},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":683,"_path":684},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":686,"_path":687},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":689,"_path":690},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":692,"_path":693},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":695,"_path":696},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":698,"_path":699},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":701,"_path":702},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":704,"_path":705},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":707,"_path":708},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":710,"_path":711},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":713,"_path":714},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":716,"_path":717},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":719,"_path":720},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":722,"_path":723},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":725,"_path":726},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":728,"_path":729},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":731,"_path":732},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":734,"_path":735},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":737,"_path":738},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":740,"_path":741},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":743,"_path":744},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":746,"_path":747},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":749,"_path":750},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":752,"_path":753},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":755,"_path":756},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":758,"_path":759},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":761,"_path":762},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":764,"_path":765},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":767,"_path":768},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":770,"_path":771},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":773,"_path":774},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":776,"_path":777},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":779,"_path":780},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":782,"_path":783},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":785,"_path":786},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":788,"_path":789},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":791,"_path":792},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":794,"_path":795},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":797,"_path":798},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":800,"_path":801},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":803,"_path":804},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":806,"_path":807},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":809,"_path":810},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":812,"_path":813,"children":814},"Uniform","/videos/uniform",[815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983],{"title":816,"_path":817},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":819,"_path":820},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":822,"_path":823},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":825,"_path":826},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":828,"_path":829},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":831,"_path":832},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":834,"_path":835},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":837,"_path":838},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":840,"_path":841},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":843,"_path":844},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":846,"_path":847},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":849,"_path":850},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":852,"_path":853},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":855,"_path":856},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":858,"_path":859},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":861,"_path":862},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":864,"_path":865},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":867,"_path":868},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":870,"_path":871},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":873,"_path":874},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":876,"_path":877},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":879,"_path":880},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":882,"_path":883},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":885,"_path":886},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":888,"_path":889},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":891,"_path":892},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":894,"_path":895},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":897,"_path":898},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":900,"_path":901},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":903,"_path":904},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":906,"_path":907},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":909,"_path":910},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":912,"_path":913},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":915,"_path":916},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":918,"_path":919},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":921,"_path":922},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":924,"_path":925},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":927,"_path":928},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":930,"_path":931},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":933,"_path":934},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":936,"_path":937},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":939,"_path":940},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":942,"_path":943},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":945,"_path":946},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":948,"_path":949},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":951,"_path":952},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":954,"_path":955},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":957,"_path":958},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":960,"_path":961},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":963,"_path":964},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":966,"_path":967},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":969,"_path":970},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":972,"_path":973},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":975,"_path":976},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":978,"_path":979},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":981,"_path":982},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":984,"_path":985},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":987,"_path":988,"children":989},"Writing","/writing",[990,993,996,999,1002,1005,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1055,1058],{"title":991,"_path":992},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":994,"_path":995},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":997,"_path":998},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1000,"_path":1001},"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":1003,"_path":1004},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":987,"_path":988},{"title":1007,"_path":1008},"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":1010,"_path":1011},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1013,"_path":1014},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1016,"_path":1017},"My Fitness Story","/writing/my-fitness-story",{"title":1019,"_path":1020},"New job alert!","/writing/new-job-alert",{"title":1022,"_path":1023},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1025,"_path":1026},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1028,"_path":1029},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1031,"_path":1032},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1034,"_path":1035},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1037,"_path":1038},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1040,"_path":1041},"The MACH monolith","/writing/the-mach-monolith",{"title":1043,"_path":1044},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1046,"_path":1047},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1049,"_path":1050},"This is headless 2.0","/writing/this-is-headless-20",{"title":1052,"_path":1053},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":8,"_path":4},{"title":1056,"_path":1057},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1059,"_path":1060},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1062,"_path":1063,"children":1064},"Speaking","/speaking",[1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1227,1230,1233,1236,1239,1242,1245,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1284,1287,1290,1293,1296],{"title":1066,"_path":1067},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1069,"_path":1070},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1072,"_path":1073},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1075,"_path":1076},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1078,"_path":1079},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1081,"_path":1082},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1084,"_path":1085},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1087,"_path":1088},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1090,"_path":1091},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1093,"_path":1094},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1096,"_path":1097},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1099,"_path":1100},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1102,"_path":1103},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1105,"_path":1106},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1108,"_path":1109},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1111,"_path":1112},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1114,"_path":1115},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1117,"_path":1118},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1120,"_path":1121},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1123,"_path":1124},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1126,"_path":1127},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1129,"_path":1130},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1132,"_path":1133},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1135,"_path":1136},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1138,"_path":1139},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1141,"_path":1142},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1144,"_path":1145},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1147,"_path":1148},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1150,"_path":1151},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1153,"_path":1154},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1156,"_path":1157},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1159,"_path":1160},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1162,"_path":1163},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1165,"_path":1166},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1168,"_path":1169},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1171,"_path":1172},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1174,"_path":1175},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1177,"_path":1178},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1180,"_path":1181},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1183,"_path":1184},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1186,"_path":1187},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1189,"_path":1190},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1192,"_path":1193},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1195,"_path":1196},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1198,"_path":1199},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1201,"_path":1202},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1204,"_path":1205},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1207,"_path":1208},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1210,"_path":1211},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1213,"_path":1214},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1216,"_path":1217},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1219,"_path":1220},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1222,"_path":1223},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1225,"_path":1226},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1228,"_path":1229},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1231,"_path":1232},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1234,"_path":1235},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1237,"_path":1238},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1240,"_path":1241},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1243,"_path":1244},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1246,"_path":1247},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1249,"_path":1250},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1252,"_path":1253},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1255,"_path":1256},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1258,"_path":1259},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1261,"_path":1262},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1264,"_path":1265},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1267,"_path":1268},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1270,"_path":1271},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1273,"_path":1274},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1276,"_path":1277},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1279,"_path":1280},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1282,"_path":1283},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1285,"_path":1286},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1288,"_path":1289},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1291,"_path":1292},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1294,"_path":1295},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1062,"_path":1063},{"title":1298,"_path":1299},"live streams","/livestreams",{"title":1301,"_path":1302},"press kit","/presskit",{"title":1304,"_path":1305},"alive and kicking","/alive-and-kicking",1718484379621] \ No newline at end of file diff --git a/writing/uniform-is-nuxt-3-read/index.html b/writing/uniform-is-nuxt-3-read/index.html deleted file mode 100644 index 47202835..00000000 --- a/writing/uniform-is-nuxt-3-read/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - -Uniform is Nuxt 3 ready - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Uniform is Nuxt 3 ready

Mar 18, 2023 at https://uniform.dev/blogs/uniforms-latest-sdk-fully-supports-vue-3-and-nuxt-3

We are excited to announce that the latest iteration of the Uniform SDK is fully compatible with Vue 3 and Nuxt 3

Nuxt 3 is fast approaching GA. To ensure that Vue.js enthusiasts can build next-generation web experiences with the awesome features offered by Nuxt 3, our new SDK fully supports all Uniform capabilities: from no-code presentation management by Uniform Canvas, complete with web-socket-based live previews, to edge-side personalization and A/B testing through Uniform Context. 

With the Nuxt 3 Nitro engine, developers can now run an entire site on the edge or combine personalization on the edge with delivery of the remaining content in SSG mode through a CDN. Even for highly dynamic pages, the latter choice results in blazing-fast page loads. We’re talking sub 50 milliseconds!

Nuxt 3 is truly game changing, and Uniform takes full advantage of that with an easy-to-install SDK that follows Nuxt’s no-config ethos.

##Features of Uniform’s Nuxt 3 module

This is what the module can do:

  • Auto-registers the required Uniform components.
  • Auto-creates a Uniform Canvas client.
  • Creates a Uniform Context instance (for personalization) and makes it available throughout the app without the need for a wrapping component.
  • Builds a handy $useCompositionClick to copy composable on top of Nuxt's useAsyncData.
  • Displays live previews seamlessly.
  • Monitors query-string changes, which Nuxt doesn't do by default.

##Benefits of using Uniform with Nuxt 3

As a rule, no single system offers all the functionalities you need for an app. Instead, multiple systems must work together for the app to run smoothly. A composable architecture is one in which you can pick and choose the components for your technology stack, but getting them to work together well can be challenging. 

Modern headless systems can connect with other systems as part of a composable architecture. However, using some composable services doesn’t give you a full composable architecture.

Real composability means that you can add or remove components easily as your needs evolve. That’s what Uniform offers. With Uniform’s composition layer, you can build and maintain a modern stack with composable services without tightly coupling them. As a result, developers, content creators, and marketers alike can create and deliver experiences quickly, independently and without vendor lock-in.

  • Developers can add or change services any time, assured that their tools will work well together without the need for time-consuming and expensive replatforming and reintegration.
  • Content creators can build engaging experiences with a consistent, no-code approach through which they can readily leverage all the tools in their stack.
  • Marketers can promote conversions through intent-based personalization and experimentation mechanisms that integrate with customer data and that are simple and intuitive for implementation by developers.
  • As internal needs or consumer tastes change, the organization can be agile enough to meet these challenges, without extensive background work that doesn’t deliver direct value to end users.
- \ No newline at end of file diff --git a/writing/what-type-of-content-organization-do-you-need/_payload.json b/writing/what-type-of-content-organization-do-you-need/_payload.json index 84388bb5..c1f8dacf 100644 --- a/writing/what-type-of-content-organization-do-you-need/_payload.json +++ b/writing/what-type-of-content-organization-do-you-need/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1517},["Reactive",2],{"content-query-kz9AUpuRUz":3,"content-navigation-8C37fagqQL":401},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":16,"body":17,"_type":396,"_id":397,"_source":398,"_file":399,"_extension":400},"/writing/what-type-of-content-organization-do-you-need","writing",false,"","What type of content organization do you need?","Different ways of working require different approaches to content design. In this post, I will...",1664371,"what-type-of-content-organization-do-you-need","2023-11-12T09:03:33Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd58lvz3nrm8lre4gdtuw.png","https://hygraph.com/blog/what-type-of-content-organization-do-you-need",[],22300,{"type":18,"children":19,"toc":375},"root",[20,28,33,38,51,56,63,68,73,78,83,89,94,101,106,114,120,125,132,138,143,151,157,162,167,174,180,185,190,198,204,209,214,221,227,232,238,243,252,257,265,271,276,281,289,295,307,314,319,326,332,337,345,351,356,364,370],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25],{"type":26,"value":27},"text","Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally.",{"type":21,"tag":22,"props":29,"children":30},{},[31],{"type":26,"value":32},"Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between.",{"type":21,"tag":22,"props":34,"children":35},{},[36],{"type":26,"value":37},"One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent.",{"type":21,"tag":22,"props":39,"children":40},{},[41],{"type":21,"tag":42,"props":43,"children":50},"img",{"alt":44,"loading":45,"provider":46,"sizes":47,"src":48,"width":49},"Centralized / Decentralized","lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xioylw3zkxljytzhwtft.png",1280,[],{"type":21,"tag":22,"props":52,"children":53},{},[54],{"type":26,"value":55},"Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly.",{"type":21,"tag":57,"props":58,"children":60},"h2",{"id":59},"how-to-organize-your-content-without-going-crazy",[61],{"type":26,"value":62},"How to organize your content without going crazy",{"type":21,"tag":22,"props":64,"children":65},{},[66],{"type":26,"value":67},"If your content flows between different systems, federation is one of the most effective ways to manage it.",{"type":21,"tag":22,"props":69,"children":70},{},[71],{"type":26,"value":72},"Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications.",{"type":21,"tag":22,"props":74,"children":75},{},[76],{"type":26,"value":77},"Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation.",{"type":21,"tag":22,"props":79,"children":80},{},[81],{"type":26,"value":82},"In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements.",{"type":21,"tag":57,"props":84,"children":86},{"id":85},"forms-of-federation",[87],{"type":26,"value":88},"Forms of federation",{"type":21,"tag":22,"props":90,"children":91},{},[92],{"type":26,"value":93},"There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns.",{"type":21,"tag":95,"props":96,"children":98},"h3",{"id":97},"data-stitching-and-custom-middleware",[99],{"type":26,"value":100},"Data stitching and custom middleware",{"type":21,"tag":22,"props":102,"children":103},{},[104],{"type":26,"value":105},"Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time.",{"type":21,"tag":22,"props":107,"children":108},{},[109],{"type":21,"tag":42,"props":110,"children":113},{"alt":111,"loading":45,"provider":46,"sizes":47,"src":112,"width":49},"Data stitching","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iacwgoeaolz9znalbc56.png",[],{"type":21,"tag":95,"props":115,"children":117},{"id":116},"content-hub",[118],{"type":26,"value":119},"Content Hub",{"type":21,"tag":22,"props":121,"children":122},{},[123],{"type":26,"value":124},"A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication.",{"type":21,"tag":22,"props":126,"children":127},{},[128],{"type":21,"tag":42,"props":129,"children":131},{"alt":119,"loading":45,"provider":46,"sizes":47,"src":130,"width":49},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc8fp49qbswr93cg5r62.png",[],{"type":21,"tag":95,"props":133,"children":135},{"id":134},"data-lake",[136],{"type":26,"value":137},"Data Lake",{"type":21,"tag":22,"props":139,"children":140},{},[141],{"type":26,"value":142},"A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand.",{"type":21,"tag":22,"props":144,"children":145},{},[146],{"type":21,"tag":42,"props":147,"children":150},{"alt":148,"loading":45,"provider":46,"sizes":47,"src":149,"width":49},"Data lake","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u388o0c1oy5p0m31afl0.png",[],{"type":21,"tag":95,"props":152,"children":154},{"id":153},"content-federation",[155],{"type":26,"value":156},"Content Federation",{"type":21,"tag":22,"props":158,"children":159},{},[160],{"type":26,"value":161},"Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation.",{"type":21,"tag":22,"props":163,"children":164},{},[165],{"type":26,"value":166},"Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs.",{"type":21,"tag":22,"props":168,"children":169},{},[170],{"type":21,"tag":42,"props":171,"children":173},{"alt":156,"loading":45,"provider":46,"sizes":47,"src":172,"width":49},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wsbl6uzmoscfxq31yrv.png",[],{"type":21,"tag":95,"props":175,"children":177},{"id":176},"dxo-digital-experience-orchestration",[178],{"type":26,"value":179},"DXO (digital experience orchestration)",{"type":21,"tag":22,"props":181,"children":182},{},[183],{"type":26,"value":184},"Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources.",{"type":21,"tag":22,"props":186,"children":187},{},[188],{"type":26,"value":189},"Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone.",{"type":21,"tag":22,"props":191,"children":192},{},[193],{"type":21,"tag":42,"props":194,"children":197},{"alt":195,"loading":45,"provider":46,"sizes":47,"src":196,"width":49},"DXO","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfrsz1i6hjq68mbsmrui.png",[],{"type":21,"tag":95,"props":199,"children":201},{"id":200},"graphql-federation",[202],{"type":26,"value":203},"GraphQL Federation",{"type":21,"tag":22,"props":205,"children":206},{},[207],{"type":26,"value":208},"GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints.",{"type":21,"tag":22,"props":210,"children":211},{},[212],{"type":26,"value":213},"A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver.",{"type":21,"tag":22,"props":215,"children":216},{},[217],{"type":21,"tag":42,"props":218,"children":220},{"alt":203,"loading":45,"provider":46,"sizes":47,"src":219,"width":49},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rtx6y1lqmon1nhe6c4t0.png",[],{"type":21,"tag":57,"props":222,"children":224},{"id":223},"which-federation-is-for-you",[225],{"type":26,"value":226},"Which federation is for you?",{"type":21,"tag":22,"props":228,"children":229},{},[230],{"type":26,"value":231},"Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions.",{"type":21,"tag":95,"props":233,"children":235},{"id":234},"what-is-your-digital-organization-direction-centralized-or-decentralized",[236],{"type":26,"value":237},"What is your digital organization direction: centralized or decentralized?",{"type":21,"tag":22,"props":239,"children":240},{},[241],{"type":26,"value":242},"The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top.",{"type":21,"tag":22,"props":244,"children":245},{},[246],{"type":21,"tag":247,"props":248,"children":249},"em",{},[250],{"type":26,"value":251},"Federation type to choose: Content Federation",{"type":21,"tag":22,"props":253,"children":254},{},[255],{"type":26,"value":256},"If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice.",{"type":21,"tag":22,"props":258,"children":259},{},[260],{"type":21,"tag":247,"props":261,"children":262},{},[263],{"type":26,"value":264},"Federation type to choose: Content Hub",{"type":21,"tag":95,"props":266,"children":268},{"id":267},"how-much-cleanup-does-your-data-need",[269],{"type":26,"value":270},"How much cleanup does your data need?",{"type":21,"tag":22,"props":272,"children":273},{},[274],{"type":26,"value":275},"Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails.",{"type":21,"tag":22,"props":277,"children":278},{},[279],{"type":26,"value":280},"If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph.",{"type":21,"tag":22,"props":282,"children":283},{},[284],{"type":21,"tag":247,"props":285,"children":286},{},[287],{"type":26,"value":288},"Federation type to choose: DXO, Content Federation",{"type":21,"tag":95,"props":290,"children":292},{"id":291},"how-autonomous-do-your-data-sources-need-to-be",[293],{"type":26,"value":294},"How autonomous do your data sources need to be?",{"type":21,"tag":22,"props":296,"children":297},{},[298,300,305],{"type":26,"value":299},"At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the ",{"type":21,"tag":247,"props":301,"children":302},{},[303],{"type":26,"value":304},"autonomy",{"type":26,"value":306}," to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below.",{"type":21,"tag":22,"props":308,"children":309},{},[310],{"type":21,"tag":247,"props":311,"children":312},{},[313],{"type":26,"value":251},{"type":21,"tag":22,"props":315,"children":316},{},[317],{"type":26,"value":318},"If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data.",{"type":21,"tag":22,"props":320,"children":321},{},[322],{"type":21,"tag":247,"props":323,"children":324},{},[325],{"type":26,"value":264},{"type":21,"tag":95,"props":327,"children":329},{"id":328},"are-you-dealing-with-big-data",[330],{"type":26,"value":331},"Are you dealing with big data?",{"type":21,"tag":22,"props":333,"children":334},{},[335],{"type":26,"value":336},"Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS.",{"type":21,"tag":22,"props":338,"children":339},{},[340],{"type":21,"tag":247,"props":341,"children":342},{},[343],{"type":26,"value":344},"Federation type to choose: Content Lake",{"type":21,"tag":95,"props":346,"children":348},{"id":347},"are-you-a-saas-with-multiple-tech-silos",[349],{"type":26,"value":350},"Are you a SaaS with multiple tech silos?",{"type":21,"tag":22,"props":352,"children":353},{},[354],{"type":26,"value":355},"If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL.",{"type":21,"tag":22,"props":357,"children":358},{},[359],{"type":21,"tag":247,"props":360,"children":361},{},[362],{"type":26,"value":363},"Federation type to choose: GraphQL Federation",{"type":21,"tag":57,"props":365,"children":367},{"id":366},"conclusion",[368],{"type":26,"value":369},"Conclusion",{"type":21,"tag":22,"props":371,"children":372},{},[373],{"type":26,"value":374},"As always, the answer is: \"It depends\". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases.",{"title":7,"searchDepth":376,"depth":376,"links":377},2,[378,379,388,395],{"id":59,"depth":376,"text":62},{"id":85,"depth":376,"text":88,"children":380},[381,383,384,385,386,387],{"id":97,"depth":382,"text":100},3,{"id":116,"depth":382,"text":119},{"id":134,"depth":382,"text":137},{"id":153,"depth":382,"text":156},{"id":176,"depth":382,"text":179},{"id":200,"depth":382,"text":203},{"id":223,"depth":376,"text":226,"children":389},[390,391,392,393,394],{"id":234,"depth":382,"text":237},{"id":267,"depth":382,"text":270},{"id":291,"depth":382,"text":294},{"id":328,"depth":382,"text":331},{"id":347,"depth":382,"text":350},{"id":366,"depth":376,"text":369},"markdown","content:4.writing:what-type-of-content-organization-do-you-need.md","content","4.writing/what-type-of-content-organization-do-you-need.md","md",[402,405,1197,1272,1508,1511,1514],{"title":403,"_path":404},"About","/about",{"title":406,"_path":407,"children":408},"videos","/videos",[409,428,447,493,494,546,649,672,694,1022],{"title":410,"_path":411,"children":412},"Alive And Kicking","/videos/alive-and-kicking",[413,416,419,422,425],{"title":414,"_path":415},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":417,"_path":418},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":420,"_path":421},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":423,"_path":424},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":426,"_path":427},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":429,"_path":430,"children":431},"Headless Creator","/videos/headless-creator",[432,435,438,441,444],{"title":433,"_path":434},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":436,"_path":437},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":439,"_path":440},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":442,"_path":443},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":445,"_path":446},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":448,"_path":449,"children":450},"Hygraph","/videos/hygraph",[451,454,457,460,463,466,469,472,475,478,481,484,487,490],{"title":452,"_path":453},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":455,"_path":456},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":458,"_path":459},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":461,"_path":462},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":464,"_path":465},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":467,"_path":468},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":470,"_path":471},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":473,"_path":474},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":476,"_path":477},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":479,"_path":480},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":482,"_path":483},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":485,"_path":486},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":488,"_path":489},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":491,"_path":492},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":406,"_path":407},{"title":495,"_path":496,"children":497},"Live Hygraph","/videos/live-hygraph",[498,501,504,507,510,513,516,519,522,525,528,531,534,537,540,543],{"title":499,"_path":500},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":502,"_path":503},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":505,"_path":506},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":508,"_path":509},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":511,"_path":512},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":514,"_path":515},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":517,"_path":518},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":520,"_path":521},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":523,"_path":524},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":526,"_path":527},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":529,"_path":530},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":532,"_path":533},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":535,"_path":536},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":538,"_path":539},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":541,"_path":542},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":544,"_path":545},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":547,"_path":548,"children":549},"Live Uniform","/videos/live-uniform",[550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646],{"title":551,"_path":552},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":554,"_path":555},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":557,"_path":558},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":560,"_path":561},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":563,"_path":564},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":566,"_path":567},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":569,"_path":570},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":572,"_path":573},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":575,"_path":576},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":578,"_path":579},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":581,"_path":582},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":584,"_path":585},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":587,"_path":588},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":590,"_path":591},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":593,"_path":594},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":596,"_path":597},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":599,"_path":600},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":602,"_path":603},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":605,"_path":606},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":608,"_path":609},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":611,"_path":612},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":614,"_path":615},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":617,"_path":618},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":620,"_path":621},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":623,"_path":624},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":626,"_path":627},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":629,"_path":630},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":632,"_path":633},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":635,"_path":636},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":638,"_path":639},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":641,"_path":642},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":644,"_path":645},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":647,"_path":648},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":650,"_path":651,"children":652},"Misc Streams","/videos/misc-streams",[653,656,659,662,664,666,669],{"title":654,"_path":655},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":657,"_path":658},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":660,"_path":661},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":644,"_path":663},"/videos/misc-streams/003-jvgiaotcerq",{"title":635,"_path":665},"/videos/misc-streams/004-ekut1koa2n8",{"title":667,"_path":668},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":670,"_path":671},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":673,"_path":674,"children":675},"Mp","/videos/mp",[676,679,682,685,688,691],{"title":677,"_path":678},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":680,"_path":681},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":683,"_path":684},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":686,"_path":687},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":689,"_path":690},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":692,"_path":693},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":695,"_path":696,"children":697},"Tim","/videos/tim",[698,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,750,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019],{"title":417,"_path":699},"/videos/tim/000-mvq-_s20ndk",{"title":701,"_path":702},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":704,"_path":705},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":707,"_path":708},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":710,"_path":711},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":713,"_path":714},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":716,"_path":717},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":719,"_path":720},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":722,"_path":723},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":725,"_path":726},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":728,"_path":729},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":731,"_path":732},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":734,"_path":735},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":737,"_path":738},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":740,"_path":741},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":743,"_path":744},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":746,"_path":747},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":420,"_path":749},"/videos/tim/017-m0mrligs6i0",{"title":414,"_path":751},"/videos/tim/018-hhpitreyobi",{"title":753,"_path":754},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":756,"_path":757},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":759,"_path":760},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":762,"_path":763},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":765,"_path":766},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":768,"_path":769},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":771,"_path":772},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":774,"_path":775},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":777,"_path":778},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":780,"_path":781},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":783,"_path":784},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":786,"_path":787},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":789,"_path":790},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":792,"_path":793},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":795,"_path":796},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":798,"_path":799},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":801,"_path":802},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":804,"_path":805},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":807,"_path":808},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":810,"_path":811},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":813,"_path":814},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":816,"_path":817},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":819,"_path":820},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":822,"_path":823},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":825,"_path":826},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":828,"_path":829},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":831,"_path":832},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":834,"_path":835},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":837,"_path":838},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":840,"_path":841},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":843,"_path":844},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":846,"_path":847},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":849,"_path":850},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":852,"_path":853},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":855,"_path":856},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":858,"_path":859},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":861,"_path":862},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":864,"_path":865},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":867,"_path":868},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":870,"_path":871},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":873,"_path":874},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":876,"_path":877},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":879,"_path":880},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":882,"_path":883},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":885,"_path":886},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":888,"_path":889},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":891,"_path":892},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":894,"_path":895},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":897,"_path":898},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":900,"_path":901},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":903,"_path":904},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":906,"_path":907},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":909,"_path":910},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":912,"_path":913},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":915,"_path":916},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":918,"_path":919},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":921,"_path":922},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":924,"_path":925},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":927,"_path":928},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":930,"_path":931},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":933,"_path":934},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":936,"_path":937},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":939,"_path":940},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":942,"_path":943},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":945,"_path":946},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":948,"_path":949},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":951,"_path":952},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":954,"_path":955},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":957,"_path":958},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":960,"_path":961},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":963,"_path":964},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":966,"_path":967},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":969,"_path":970},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":972,"_path":973},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":975,"_path":976},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":978,"_path":979},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":981,"_path":982},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":984,"_path":985},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":987,"_path":988},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":990,"_path":991},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":993,"_path":994},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":996,"_path":997},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":999,"_path":1000},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":1002,"_path":1003},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":1005,"_path":1006},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":1008,"_path":1009},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":1011,"_path":1012},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":1014,"_path":1015},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":1017,"_path":1018},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":1020,"_path":1021},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":1023,"_path":1024,"children":1025},"Uniform","/videos/uniform",[1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194],{"title":1027,"_path":1028},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":1030,"_path":1031},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":1033,"_path":1034},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":1036,"_path":1037},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":1039,"_path":1040},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":1042,"_path":1043},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":1045,"_path":1046},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1048,"_path":1049},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1051,"_path":1052},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1054,"_path":1055},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1057,"_path":1058},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1060,"_path":1061},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1063,"_path":1064},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1066,"_path":1067},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1069,"_path":1070},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1072,"_path":1073},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1075,"_path":1076},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1078,"_path":1079},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1081,"_path":1082},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1084,"_path":1085},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1087,"_path":1088},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1090,"_path":1091},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1093,"_path":1094},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1096,"_path":1097},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1099,"_path":1100},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1102,"_path":1103},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1105,"_path":1106},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1108,"_path":1109},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1111,"_path":1112},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1114,"_path":1115},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1117,"_path":1118},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1120,"_path":1121},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1123,"_path":1124},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1126,"_path":1127},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1129,"_path":1130},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1132,"_path":1133},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1135,"_path":1136},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1138,"_path":1139},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1141,"_path":1142},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1144,"_path":1145},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1147,"_path":1148},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1150,"_path":1151},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1153,"_path":1154},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1156,"_path":1157},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1159,"_path":1160},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1162,"_path":1163},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1165,"_path":1166},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1168,"_path":1169},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1171,"_path":1172},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1174,"_path":1175},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1177,"_path":1178},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1180,"_path":1181},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1183,"_path":1184},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1186,"_path":1187},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1189,"_path":1190},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1192,"_path":1193},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1195,"_path":1196},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1198,"_path":1199,"children":1200},"Writing","/writing",[1201,1204,1207,1210,1213,1216,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1269],{"title":1202,"_path":1203},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1205,"_path":1206},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1208,"_path":1209},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1211,"_path":1212},"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":1214,"_path":1215},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1198,"_path":1199},{"title":1218,"_path":1219},"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":1221,"_path":1222},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1224,"_path":1225},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1227,"_path":1228},"My Fitness Story","/writing/my-fitness-story",{"title":1230,"_path":1231},"New job alert!","/writing/new-job-alert",{"title":1233,"_path":1234},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1236,"_path":1237},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1239,"_path":1240},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1242,"_path":1243},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1245,"_path":1246},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1248,"_path":1249},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1251,"_path":1252},"The MACH monolith","/writing/the-mach-monolith",{"title":1254,"_path":1255},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1257,"_path":1258},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1260,"_path":1261},"This is headless 2.0","/writing/this-is-headless-20",{"title":1263,"_path":1264},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1266,"_path":1267},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":8,"_path":4},{"title":1270,"_path":1271},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1273,"_path":1274,"children":1275},"Speaking","/speaking",[1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381,1384,1387,1390,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420,1423,1426,1429,1432,1435,1438,1441,1444,1447,1450,1453,1456,1459,1462,1465,1468,1471,1474,1477,1480,1483,1486,1489,1492,1495,1498,1501,1504,1507],{"title":1277,"_path":1278},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1280,"_path":1281},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1283,"_path":1284},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1286,"_path":1287},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1289,"_path":1290},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1292,"_path":1293},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1295,"_path":1296},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1298,"_path":1299},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1301,"_path":1302},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1304,"_path":1305},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1307,"_path":1308},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1310,"_path":1311},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1313,"_path":1314},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1316,"_path":1317},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1319,"_path":1320},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1322,"_path":1323},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1325,"_path":1326},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1328,"_path":1329},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1331,"_path":1332},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1334,"_path":1335},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1337,"_path":1338},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1340,"_path":1341},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1343,"_path":1344},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1346,"_path":1347},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1349,"_path":1350},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1352,"_path":1353},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1355,"_path":1356},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1358,"_path":1359},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1361,"_path":1362},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1364,"_path":1365},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1367,"_path":1368},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1370,"_path":1371},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1373,"_path":1374},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1376,"_path":1377},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1379,"_path":1380},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1382,"_path":1383},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1385,"_path":1386},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1388,"_path":1389},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1391,"_path":1392},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1394,"_path":1395},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1397,"_path":1398},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1400,"_path":1401},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1403,"_path":1404},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1406,"_path":1407},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1409,"_path":1410},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1412,"_path":1413},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1415,"_path":1416},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1418,"_path":1419},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1421,"_path":1422},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1424,"_path":1425},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1427,"_path":1428},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1430,"_path":1431},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1433,"_path":1434},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1436,"_path":1437},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1439,"_path":1440},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1442,"_path":1443},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1445,"_path":1446},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1448,"_path":1449},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1451,"_path":1452},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1454,"_path":1455},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1457,"_path":1458},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1460,"_path":1461},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1463,"_path":1464},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1466,"_path":1467},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1469,"_path":1470},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1472,"_path":1473},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1475,"_path":1476},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1478,"_path":1479},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1481,"_path":1482},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1484,"_path":1485},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1487,"_path":1488},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1490,"_path":1491},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1493,"_path":1494},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1496,"_path":1497},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1499,"_path":1500},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1502,"_path":1503},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1505,"_path":1506},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1273,"_path":1274},{"title":1509,"_path":1510},"live streams","/livestreams",{"title":1512,"_path":1513},"press kit","/presskit",{"title":1515,"_path":1516},"alive and kicking","/alive-and-kicking",1718484379180] \ No newline at end of file +[{"data":1,"prerenderedAt":1517},["Reactive",2],{"content-query-kz9AUpuRUz":3,"content-navigation-8C37fagqQL":401},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":16,"body":17,"_type":396,"_id":397,"_source":398,"_file":399,"_extension":400},"/writing/what-type-of-content-organization-do-you-need","writing",false,"","What type of content organization do you need?","Different ways of working require different approaches to content design. In this post, I will...",1664371,"what-type-of-content-organization-do-you-need","2023-11-12T09:03:33Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd58lvz3nrm8lre4gdtuw.png","https://hygraph.com/blog/what-type-of-content-organization-do-you-need",[],22300,{"type":18,"children":19,"toc":375},"root",[20,28,33,38,51,56,63,68,73,78,83,89,94,101,106,114,120,125,132,138,143,151,157,162,167,174,180,185,190,198,204,209,214,221,227,232,238,243,252,257,265,271,276,281,289,295,307,314,319,326,332,337,345,351,356,364,370],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25],{"type":26,"value":27},"text","Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally.",{"type":21,"tag":22,"props":29,"children":30},{},[31],{"type":26,"value":32},"Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between.",{"type":21,"tag":22,"props":34,"children":35},{},[36],{"type":26,"value":37},"One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent.",{"type":21,"tag":22,"props":39,"children":40},{},[41],{"type":21,"tag":42,"props":43,"children":50},"img",{"alt":44,"loading":45,"provider":46,"sizes":47,"src":48,"width":49},"Centralized / Decentralized","lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xioylw3zkxljytzhwtft.png",1280,[],{"type":21,"tag":22,"props":52,"children":53},{},[54],{"type":26,"value":55},"Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly.",{"type":21,"tag":57,"props":58,"children":60},"h2",{"id":59},"how-to-organize-your-content-without-going-crazy",[61],{"type":26,"value":62},"How to organize your content without going crazy",{"type":21,"tag":22,"props":64,"children":65},{},[66],{"type":26,"value":67},"If your content flows between different systems, federation is one of the most effective ways to manage it.",{"type":21,"tag":22,"props":69,"children":70},{},[71],{"type":26,"value":72},"Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications.",{"type":21,"tag":22,"props":74,"children":75},{},[76],{"type":26,"value":77},"Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation.",{"type":21,"tag":22,"props":79,"children":80},{},[81],{"type":26,"value":82},"In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements.",{"type":21,"tag":57,"props":84,"children":86},{"id":85},"forms-of-federation",[87],{"type":26,"value":88},"Forms of federation",{"type":21,"tag":22,"props":90,"children":91},{},[92],{"type":26,"value":93},"There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns.",{"type":21,"tag":95,"props":96,"children":98},"h3",{"id":97},"data-stitching-and-custom-middleware",[99],{"type":26,"value":100},"Data stitching and custom middleware",{"type":21,"tag":22,"props":102,"children":103},{},[104],{"type":26,"value":105},"Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time.",{"type":21,"tag":22,"props":107,"children":108},{},[109],{"type":21,"tag":42,"props":110,"children":113},{"alt":111,"loading":45,"provider":46,"sizes":47,"src":112,"width":49},"Data stitching","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iacwgoeaolz9znalbc56.png",[],{"type":21,"tag":95,"props":115,"children":117},{"id":116},"content-hub",[118],{"type":26,"value":119},"Content Hub",{"type":21,"tag":22,"props":121,"children":122},{},[123],{"type":26,"value":124},"A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication.",{"type":21,"tag":22,"props":126,"children":127},{},[128],{"type":21,"tag":42,"props":129,"children":131},{"alt":119,"loading":45,"provider":46,"sizes":47,"src":130,"width":49},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc8fp49qbswr93cg5r62.png",[],{"type":21,"tag":95,"props":133,"children":135},{"id":134},"data-lake",[136],{"type":26,"value":137},"Data Lake",{"type":21,"tag":22,"props":139,"children":140},{},[141],{"type":26,"value":142},"A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand.",{"type":21,"tag":22,"props":144,"children":145},{},[146],{"type":21,"tag":42,"props":147,"children":150},{"alt":148,"loading":45,"provider":46,"sizes":47,"src":149,"width":49},"Data lake","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u388o0c1oy5p0m31afl0.png",[],{"type":21,"tag":95,"props":152,"children":154},{"id":153},"content-federation",[155],{"type":26,"value":156},"Content Federation",{"type":21,"tag":22,"props":158,"children":159},{},[160],{"type":26,"value":161},"Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation.",{"type":21,"tag":22,"props":163,"children":164},{},[165],{"type":26,"value":166},"Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs.",{"type":21,"tag":22,"props":168,"children":169},{},[170],{"type":21,"tag":42,"props":171,"children":173},{"alt":156,"loading":45,"provider":46,"sizes":47,"src":172,"width":49},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wsbl6uzmoscfxq31yrv.png",[],{"type":21,"tag":95,"props":175,"children":177},{"id":176},"dxo-digital-experience-orchestration",[178],{"type":26,"value":179},"DXO (digital experience orchestration)",{"type":21,"tag":22,"props":181,"children":182},{},[183],{"type":26,"value":184},"Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources.",{"type":21,"tag":22,"props":186,"children":187},{},[188],{"type":26,"value":189},"Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone.",{"type":21,"tag":22,"props":191,"children":192},{},[193],{"type":21,"tag":42,"props":194,"children":197},{"alt":195,"loading":45,"provider":46,"sizes":47,"src":196,"width":49},"DXO","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfrsz1i6hjq68mbsmrui.png",[],{"type":21,"tag":95,"props":199,"children":201},{"id":200},"graphql-federation",[202],{"type":26,"value":203},"GraphQL Federation",{"type":21,"tag":22,"props":205,"children":206},{},[207],{"type":26,"value":208},"GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints.",{"type":21,"tag":22,"props":210,"children":211},{},[212],{"type":26,"value":213},"A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver.",{"type":21,"tag":22,"props":215,"children":216},{},[217],{"type":21,"tag":42,"props":218,"children":220},{"alt":203,"loading":45,"provider":46,"sizes":47,"src":219,"width":49},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rtx6y1lqmon1nhe6c4t0.png",[],{"type":21,"tag":57,"props":222,"children":224},{"id":223},"which-federation-is-for-you",[225],{"type":26,"value":226},"Which federation is for you?",{"type":21,"tag":22,"props":228,"children":229},{},[230],{"type":26,"value":231},"Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions.",{"type":21,"tag":95,"props":233,"children":235},{"id":234},"what-is-your-digital-organization-direction-centralized-or-decentralized",[236],{"type":26,"value":237},"What is your digital organization direction: centralized or decentralized?",{"type":21,"tag":22,"props":239,"children":240},{},[241],{"type":26,"value":242},"The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top.",{"type":21,"tag":22,"props":244,"children":245},{},[246],{"type":21,"tag":247,"props":248,"children":249},"em",{},[250],{"type":26,"value":251},"Federation type to choose: Content Federation",{"type":21,"tag":22,"props":253,"children":254},{},[255],{"type":26,"value":256},"If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice.",{"type":21,"tag":22,"props":258,"children":259},{},[260],{"type":21,"tag":247,"props":261,"children":262},{},[263],{"type":26,"value":264},"Federation type to choose: Content Hub",{"type":21,"tag":95,"props":266,"children":268},{"id":267},"how-much-cleanup-does-your-data-need",[269],{"type":26,"value":270},"How much cleanup does your data need?",{"type":21,"tag":22,"props":272,"children":273},{},[274],{"type":26,"value":275},"Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails.",{"type":21,"tag":22,"props":277,"children":278},{},[279],{"type":26,"value":280},"If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph.",{"type":21,"tag":22,"props":282,"children":283},{},[284],{"type":21,"tag":247,"props":285,"children":286},{},[287],{"type":26,"value":288},"Federation type to choose: DXO, Content Federation",{"type":21,"tag":95,"props":290,"children":292},{"id":291},"how-autonomous-do-your-data-sources-need-to-be",[293],{"type":26,"value":294},"How autonomous do your data sources need to be?",{"type":21,"tag":22,"props":296,"children":297},{},[298,300,305],{"type":26,"value":299},"At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the ",{"type":21,"tag":247,"props":301,"children":302},{},[303],{"type":26,"value":304},"autonomy",{"type":26,"value":306}," to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below.",{"type":21,"tag":22,"props":308,"children":309},{},[310],{"type":21,"tag":247,"props":311,"children":312},{},[313],{"type":26,"value":251},{"type":21,"tag":22,"props":315,"children":316},{},[317],{"type":26,"value":318},"If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data.",{"type":21,"tag":22,"props":320,"children":321},{},[322],{"type":21,"tag":247,"props":323,"children":324},{},[325],{"type":26,"value":264},{"type":21,"tag":95,"props":327,"children":329},{"id":328},"are-you-dealing-with-big-data",[330],{"type":26,"value":331},"Are you dealing with big data?",{"type":21,"tag":22,"props":333,"children":334},{},[335],{"type":26,"value":336},"Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS.",{"type":21,"tag":22,"props":338,"children":339},{},[340],{"type":21,"tag":247,"props":341,"children":342},{},[343],{"type":26,"value":344},"Federation type to choose: Content Lake",{"type":21,"tag":95,"props":346,"children":348},{"id":347},"are-you-a-saas-with-multiple-tech-silos",[349],{"type":26,"value":350},"Are you a SaaS with multiple tech silos?",{"type":21,"tag":22,"props":352,"children":353},{},[354],{"type":26,"value":355},"If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL.",{"type":21,"tag":22,"props":357,"children":358},{},[359],{"type":21,"tag":247,"props":360,"children":361},{},[362],{"type":26,"value":363},"Federation type to choose: GraphQL Federation",{"type":21,"tag":57,"props":365,"children":367},{"id":366},"conclusion",[368],{"type":26,"value":369},"Conclusion",{"type":21,"tag":22,"props":371,"children":372},{},[373],{"type":26,"value":374},"As always, the answer is: \"It depends\". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases.",{"title":7,"searchDepth":376,"depth":376,"links":377},2,[378,379,388,395],{"id":59,"depth":376,"text":62},{"id":85,"depth":376,"text":88,"children":380},[381,383,384,385,386,387],{"id":97,"depth":382,"text":100},3,{"id":116,"depth":382,"text":119},{"id":134,"depth":382,"text":137},{"id":153,"depth":382,"text":156},{"id":176,"depth":382,"text":179},{"id":200,"depth":382,"text":203},{"id":223,"depth":376,"text":226,"children":389},[390,391,392,393,394],{"id":234,"depth":382,"text":237},{"id":267,"depth":382,"text":270},{"id":291,"depth":382,"text":294},{"id":328,"depth":382,"text":331},{"id":347,"depth":382,"text":350},{"id":366,"depth":376,"text":369},"markdown","content:4.writing:what-type-of-content-organization-do-you-need.md","content","4.writing/what-type-of-content-organization-do-you-need.md","md",[402,405,1197,1272,1508,1511,1514],{"title":403,"_path":404},"About Tim","/about",{"title":406,"_path":407,"children":408},"Videos","/videos",[409,428,447,493,494,546,649,672,694,1022],{"title":410,"_path":411,"children":412},"Alive And Kicking","/videos/alive-and-kicking",[413,416,419,422,425],{"title":414,"_path":415},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":417,"_path":418},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":420,"_path":421},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":423,"_path":424},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":426,"_path":427},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":429,"_path":430,"children":431},"Headless Creator","/videos/headless-creator",[432,435,438,441,444],{"title":433,"_path":434},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":436,"_path":437},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":439,"_path":440},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":442,"_path":443},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":445,"_path":446},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":448,"_path":449,"children":450},"Hygraph","/videos/hygraph",[451,454,457,460,463,466,469,472,475,478,481,484,487,490],{"title":452,"_path":453},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":455,"_path":456},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":458,"_path":459},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":461,"_path":462},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":464,"_path":465},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":467,"_path":468},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":470,"_path":471},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":473,"_path":474},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":476,"_path":477},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":479,"_path":480},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":482,"_path":483},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":485,"_path":486},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":488,"_path":489},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":491,"_path":492},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":406,"_path":407},{"title":495,"_path":496,"children":497},"Live Hygraph","/videos/live-hygraph",[498,501,504,507,510,513,516,519,522,525,528,531,534,537,540,543],{"title":499,"_path":500},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":502,"_path":503},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":505,"_path":506},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":508,"_path":509},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":511,"_path":512},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":514,"_path":515},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":517,"_path":518},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":520,"_path":521},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":523,"_path":524},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":526,"_path":527},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":529,"_path":530},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":532,"_path":533},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":535,"_path":536},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":538,"_path":539},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":541,"_path":542},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":544,"_path":545},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":547,"_path":548,"children":549},"Live Uniform","/videos/live-uniform",[550,553,556,559,562,565,568,571,574,577,580,583,586,589,592,595,598,601,604,607,610,613,616,619,622,625,628,631,634,637,640,643,646],{"title":551,"_path":552},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":554,"_path":555},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":557,"_path":558},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":560,"_path":561},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":563,"_path":564},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":566,"_path":567},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":569,"_path":570},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":572,"_path":573},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":575,"_path":576},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":578,"_path":579},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":581,"_path":582},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":584,"_path":585},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":587,"_path":588},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":590,"_path":591},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":593,"_path":594},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":596,"_path":597},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":599,"_path":600},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":602,"_path":603},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":605,"_path":606},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":608,"_path":609},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":611,"_path":612},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":614,"_path":615},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":617,"_path":618},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":620,"_path":621},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":623,"_path":624},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":626,"_path":627},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":629,"_path":630},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":632,"_path":633},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":635,"_path":636},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":638,"_path":639},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":641,"_path":642},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":644,"_path":645},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":647,"_path":648},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":650,"_path":651,"children":652},"Misc Streams","/videos/misc-streams",[653,656,659,662,664,666,669],{"title":654,"_path":655},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":657,"_path":658},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":660,"_path":661},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":644,"_path":663},"/videos/misc-streams/003-jvgiaotcerq",{"title":635,"_path":665},"/videos/misc-streams/004-ekut1koa2n8",{"title":667,"_path":668},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":670,"_path":671},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":673,"_path":674,"children":675},"Mp","/videos/mp",[676,679,682,685,688,691],{"title":677,"_path":678},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":680,"_path":681},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":683,"_path":684},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":686,"_path":687},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":689,"_path":690},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":692,"_path":693},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":695,"_path":696,"children":697},"Tim","/videos/tim",[698,700,703,706,709,712,715,718,721,724,727,730,733,736,739,742,745,748,750,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019],{"title":417,"_path":699},"/videos/tim/000-mvq-_s20ndk",{"title":701,"_path":702},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":704,"_path":705},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":707,"_path":708},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":710,"_path":711},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":713,"_path":714},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":716,"_path":717},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":719,"_path":720},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":722,"_path":723},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":725,"_path":726},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":728,"_path":729},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":731,"_path":732},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":734,"_path":735},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":737,"_path":738},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":740,"_path":741},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":743,"_path":744},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":746,"_path":747},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":420,"_path":749},"/videos/tim/017-m0mrligs6i0",{"title":414,"_path":751},"/videos/tim/018-hhpitreyobi",{"title":753,"_path":754},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":756,"_path":757},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":759,"_path":760},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":762,"_path":763},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":765,"_path":766},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":768,"_path":769},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":771,"_path":772},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":774,"_path":775},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":777,"_path":778},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":780,"_path":781},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":783,"_path":784},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":786,"_path":787},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":789,"_path":790},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":792,"_path":793},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":795,"_path":796},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":798,"_path":799},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":801,"_path":802},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":804,"_path":805},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":807,"_path":808},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":810,"_path":811},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":813,"_path":814},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":816,"_path":817},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":819,"_path":820},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":822,"_path":823},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":825,"_path":826},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":828,"_path":829},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":831,"_path":832},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":834,"_path":835},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":837,"_path":838},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":840,"_path":841},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":843,"_path":844},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":846,"_path":847},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":849,"_path":850},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":852,"_path":853},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":855,"_path":856},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":858,"_path":859},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":861,"_path":862},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":864,"_path":865},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":867,"_path":868},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":870,"_path":871},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":873,"_path":874},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":876,"_path":877},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":879,"_path":880},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":882,"_path":883},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":885,"_path":886},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":888,"_path":889},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":891,"_path":892},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":894,"_path":895},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":897,"_path":898},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":900,"_path":901},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":903,"_path":904},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":906,"_path":907},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":909,"_path":910},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":912,"_path":913},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":915,"_path":916},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":918,"_path":919},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":921,"_path":922},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":924,"_path":925},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":927,"_path":928},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":930,"_path":931},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":933,"_path":934},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":936,"_path":937},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":939,"_path":940},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":942,"_path":943},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":945,"_path":946},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":948,"_path":949},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":951,"_path":952},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":954,"_path":955},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":957,"_path":958},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":960,"_path":961},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":963,"_path":964},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":966,"_path":967},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":969,"_path":970},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":972,"_path":973},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":975,"_path":976},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":978,"_path":979},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":981,"_path":982},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":984,"_path":985},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":987,"_path":988},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":990,"_path":991},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":993,"_path":994},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":996,"_path":997},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":999,"_path":1000},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":1002,"_path":1003},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":1005,"_path":1006},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":1008,"_path":1009},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":1011,"_path":1012},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":1014,"_path":1015},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":1017,"_path":1018},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":1020,"_path":1021},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":1023,"_path":1024,"children":1025},"Uniform","/videos/uniform",[1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194],{"title":1027,"_path":1028},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":1030,"_path":1031},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":1033,"_path":1034},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":1036,"_path":1037},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":1039,"_path":1040},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":1042,"_path":1043},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":1045,"_path":1046},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1048,"_path":1049},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1051,"_path":1052},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1054,"_path":1055},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1057,"_path":1058},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1060,"_path":1061},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1063,"_path":1064},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1066,"_path":1067},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1069,"_path":1070},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1072,"_path":1073},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1075,"_path":1076},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1078,"_path":1079},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1081,"_path":1082},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1084,"_path":1085},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1087,"_path":1088},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1090,"_path":1091},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1093,"_path":1094},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1096,"_path":1097},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1099,"_path":1100},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1102,"_path":1103},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1105,"_path":1106},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1108,"_path":1109},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1111,"_path":1112},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1114,"_path":1115},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1117,"_path":1118},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1120,"_path":1121},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1123,"_path":1124},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1126,"_path":1127},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1129,"_path":1130},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1132,"_path":1133},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1135,"_path":1136},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1138,"_path":1139},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1141,"_path":1142},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1144,"_path":1145},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1147,"_path":1148},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1150,"_path":1151},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1153,"_path":1154},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1156,"_path":1157},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1159,"_path":1160},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1162,"_path":1163},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1165,"_path":1166},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1168,"_path":1169},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1171,"_path":1172},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1174,"_path":1175},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1177,"_path":1178},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1180,"_path":1181},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1183,"_path":1184},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1186,"_path":1187},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1189,"_path":1190},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1192,"_path":1193},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1195,"_path":1196},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1198,"_path":1199,"children":1200},"Writing","/writing",[1201,1204,1207,1210,1213,1216,1217,1220,1223,1226,1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1269],{"title":1202,"_path":1203},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1205,"_path":1206},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1208,"_path":1209},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1211,"_path":1212},"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":1214,"_path":1215},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1198,"_path":1199},{"title":1218,"_path":1219},"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":1221,"_path":1222},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1224,"_path":1225},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1227,"_path":1228},"My Fitness Story","/writing/my-fitness-story",{"title":1230,"_path":1231},"New job alert!","/writing/new-job-alert",{"title":1233,"_path":1234},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1236,"_path":1237},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1239,"_path":1240},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1242,"_path":1243},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1245,"_path":1246},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1248,"_path":1249},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1251,"_path":1252},"The MACH monolith","/writing/the-mach-monolith",{"title":1254,"_path":1255},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1257,"_path":1258},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1260,"_path":1261},"This is headless 2.0","/writing/this-is-headless-20",{"title":1263,"_path":1264},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1266,"_path":1267},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":8,"_path":4},{"title":1270,"_path":1271},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1273,"_path":1274,"children":1275},"Speaking","/speaking",[1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381,1384,1387,1390,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420,1423,1426,1429,1432,1435,1438,1441,1444,1447,1450,1453,1456,1459,1462,1465,1468,1471,1474,1477,1480,1483,1486,1489,1492,1495,1498,1501,1504,1507],{"title":1277,"_path":1278},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1280,"_path":1281},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1283,"_path":1284},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1286,"_path":1287},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1289,"_path":1290},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1292,"_path":1293},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1295,"_path":1296},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1298,"_path":1299},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1301,"_path":1302},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1304,"_path":1305},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1307,"_path":1308},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1310,"_path":1311},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1313,"_path":1314},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1316,"_path":1317},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1319,"_path":1320},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1322,"_path":1323},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1325,"_path":1326},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1328,"_path":1329},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1331,"_path":1332},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1334,"_path":1335},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1337,"_path":1338},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1340,"_path":1341},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1343,"_path":1344},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1346,"_path":1347},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1349,"_path":1350},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1352,"_path":1353},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1355,"_path":1356},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1358,"_path":1359},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1361,"_path":1362},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1364,"_path":1365},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1367,"_path":1368},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1370,"_path":1371},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1373,"_path":1374},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1376,"_path":1377},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1379,"_path":1380},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1382,"_path":1383},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1385,"_path":1386},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1388,"_path":1389},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1391,"_path":1392},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1394,"_path":1395},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1397,"_path":1398},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1400,"_path":1401},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1403,"_path":1404},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1406,"_path":1407},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1409,"_path":1410},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1412,"_path":1413},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1415,"_path":1416},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1418,"_path":1419},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1421,"_path":1422},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1424,"_path":1425},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1427,"_path":1428},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1430,"_path":1431},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1433,"_path":1434},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1436,"_path":1437},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1439,"_path":1440},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1442,"_path":1443},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1445,"_path":1446},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1448,"_path":1449},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1451,"_path":1452},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1454,"_path":1455},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1457,"_path":1458},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1460,"_path":1461},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1463,"_path":1464},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1466,"_path":1467},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1469,"_path":1470},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1472,"_path":1473},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1475,"_path":1476},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1478,"_path":1479},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1481,"_path":1482},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1484,"_path":1485},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1487,"_path":1488},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1490,"_path":1491},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1493,"_path":1494},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1496,"_path":1497},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1499,"_path":1500},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1502,"_path":1503},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1505,"_path":1506},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1273,"_path":1274},{"title":1509,"_path":1510},"live streams","/livestreams",{"title":1512,"_path":1513},"Press kit","/presskit",{"title":1515,"_path":1516},"Alive and kicking","/alive-and-kicking",1718484821494] \ No newline at end of file diff --git a/writing/what-type-of-content-organization-do-you-need/index.html b/writing/what-type-of-content-organization-do-you-need/index.html index 96ca94cb..ee037990 100644 --- a/writing/what-type-of-content-organization-do-you-need/index.html +++ b/writing/what-type-of-content-organization-do-you-need/index.html @@ -7,7 +7,7 @@ - + - - - - - + + + + + - - - + + + - - + + - - - - - - - + + + + + + + - - - - -

What type of content organization do you need?

Nov 12, 2023 at https://hygraph.com/blog/what-type-of-content-organization-do-you-need

Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally.

Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between.

One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent.

Centralized / Decentralized

Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly.

How to organize your content without going crazy

If your content flows between different systems, federation is one of the most effective ways to manage it.

Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications.

Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation.

In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements.

Forms of federation

There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns.

Data stitching and custom middleware

Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time.

Data stitching

Content Hub

A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication.

Content Hub

Data Lake

A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand.

Data lake

Content Federation

Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation.

Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs.

Content Federation

DXO (digital experience orchestration)

Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources.

Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone.

DXO

GraphQL Federation

GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints.

A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver.

GraphQL Federation

Which federation is for you?

Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions.

What is your digital organization direction: centralized or decentralized?

The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top.

Federation type to choose: Content Federation

If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice.

Federation type to choose: Content Hub

How much cleanup does your data need?

Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails.

If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph.

Federation type to choose: DXO, Content Federation

How autonomous do your data sources need to be?

At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the autonomy to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below.

Federation type to choose: Content Federation

If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data.

Federation type to choose: Content Hub

Are you dealing with big data?

Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS.

Federation type to choose: Content Lake

Are you a SaaS with multiple tech silos?

If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL.

Federation type to choose: GraphQL Federation

Conclusion

As always, the answer is: "It depends". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases.

- \ No newline at end of file + + + + +

What type of content organization do you need?

Nov 12, 2023 at https://hygraph.com/blog/what-type-of-content-organization-do-you-need

Different ways of working require different approaches to content design. In this post, I will outline a few content organization approaches based on how your brand operates digitally.

Every brand manages its digital organization differently. Some are incredibly decentralized, with each department having its own tech stakeholders, agency partners, implementation studios, and consultants. Others are highly centralized, with one person or department making decisions about the digital presence of every entity. Of course, there is also a large grey area in between.

One thing is clear: most brands are transitioning to a more flexible approach, composing their digital organization using specialty tools that handle their specific domain content. This is instead of relying on an off-the-shelf monolithic tool that attempts to do everything to some extent.

Centralized / Decentralized

Brands that adopt a decentralized approach require more flexible tooling to accommodate the increased number of people involved who need autonomy. This necessitates the use of marketing-first systems for content management. On the other hand, the centralized approach requires less tooling and is more technologically focused, as it follows a fixed set of specifications for each experience. In this case, the main requirement is to obtain data and build the experience accordingly.

How to organize your content without going crazy

If your content flows between different systems, federation is one of the most effective ways to manage it.

Federation is a software process that enables multiple sets of content to operate as a unified whole. It creates a virtual view of the content by gathering data from various sources and transforming them into a standardized model. This ensures a single source of data for front-end applications.

Federation is a broad spectrum, and only some things written in this post may fit within the scope of technical purists. However, similar to agile and scrum, we observe various approaches associated with federation.

In today's landscape, as brands acquire domain content from multiple sources, it is essential to federate that content to a central location. The federation method can vary greatly, and the approach chosen will depend on the structure of your digital organization, technical capabilities, and specific requirements.

Forms of federation

There are many different types of federations for building brand websites. In this article, we will focus on a few major ones that fit the context of building commerce platforms and marketing campaigns.

Data stitching and custom middleware

Data stitching or a custom middleware are not exactly forms of federation, but you encounter them often in the wild. Tech teams query, clean up, and map data from the specific front end they are working on, which creates complexity and technical debt in the implementation. Initially, this approach may feel flexible and give developers autonomy, but as the scale increases, it becomes unsustainable. The entire process must be repeated when another channel is created (such as a website, mobile app, kiosk, etc.). To address this issue, people started creating custom middleware solutions at API level. While they still suffer from similar problems, at least they centralize the data query, clean up, and mapping in one place. However, creating proprietary code to attack problems that affordable products solve, is usually a waste of time.

Data stitching

Content Hub

A content hub is a centralized source of truth that collects and duplicates data from various sources. It organizes the data and performs cleanup and data remapping within the hub itself. This approach can be viable if the data sources do not need autonomy and you are not concerned about potential outdated content resulting from the content hub's data duplication.

Content Hub

Data Lake

A content lake is a repository where data of any type is stored without considering its structure. It remains in its raw form and can be accessed by anyone. This approach is highly beneficial for machine learning and reporting tools. Having a well-established data cleanup pipeline and being willing to accept potential technical debt make the content lake an excellent choice for your brand.

Data lake

Content Federation

Content federation aggregates data by establishing a unified, simplified, standardized approach for querying it. This approach allows the connected sources to remain autonomous and flexible. Content federation effectively separates data from systems and provides the capability for precise cache purging. Unlike the content hub, there is no data duplication. Instead, the data is cached in the CDN edge with granular cache invalidation.

Content federation works well (and is typically combined) with a CMS that can ingest the data and use its APIs.

Content Federation

DXO (digital experience orchestration)

Digital Experience Orchestration focuses on API orchestration and decision-making to create and manage digital experiences. In every project, there is a hidden area where unclean data exists. DXO can address this issue by integrating data sources at runtime, cleaning them up, and offering clean API endpoints. Additionally, DXO can personalize endpoint data in real time, taking input from a front-end and combining content from various sources.

Beware, DXO is not a CMS, and its endpoints must be plugged into a Content Federation platform like Hygraph if you want to use it. If you do not need a CMS, DXO can be used standalone.

DXO

GraphQL Federation

GraphQL Federation is the idea of connecting two or more GraphQL APIs (subgraphs) to create a single unified GraphQL API known as a supergraph. Each backend team or domain can develop and manage their subgraphs independently. Federation is simpler in GraphQL than REST because the ability to link types is inherently built into GraphQL. GraphQL federation is highly technical, rigorous, and structured, making it ideal for large-scale data applications and technical teams that require seamless communication. GraphQL federation works great standalone and not combined with a CMS. It’s highly technical and focuses on API endpoints.

A few other techniques and companies are not precisely GraphQL federation but reach the same goal: a single API endpoint for tech teams: Apollo Federation, Open Federation, Grafbase, GraphQL Fusion, and Graph weaver.

GraphQL Federation

Which federation is for you?

Choosing the preferred federation type depends on how your brand's digital organization was set up. Let's determine which federation type suits your company best by asking a few questions.

What is your digital organization direction: centralized or decentralized?

The more decentralized an organization is, the greater the need for additional CMS or visual editing tools. A perfect example is the L'Oréal group, which has numerous brands. Each brand independently decides which content is displayed for its various markets, resulting in a completely decentralized structure. With many content editors actively building pages, autonomy, and flexibility are essential. In this case, the best approach is to implement Content Federation with a CMS on top.

Federation type to choose: Content Federation

If we consider the opposite approach, let's take a brand like Louis Vuitton as an example. They have highly stylized pages and campaigns that are consistent worldwide. They maintain a unified brand, website, tone of voice, content design, and art direction. Due to the limited number of people creating the experience, the need for tooling is less significant. Editing content simply involves adding text in a form, and the front-end implementation determines how it is displayed. Since content changes infrequently, a content hub with CDN cache might suffice.

Federation type to choose: Content Hub

How much cleanup does your data need?

Many brands have a dark corner where various data exists, usually resulting from pragmatic technical decisions made over time. This data is structured, cleaned, and mapped through complex build processes by unhappy developers. Integrating this data into a front-end implementation is often challenging, requiring creating proprietary logic. If any part of this process fails, the entire system fails.

If your brand faces this issue and lacks the time or budget to address it, a DXO (Digital Experience Orchestration) may be a suitable solution. DXOs can serve as a new source for static or async data on legacy servers and provide cleaned content at runtime. These streamlined API endpoints can seamlessly fit into a Content Federation workflow and be utilized in a headless CMS like Hygraph.

Federation type to choose: DXO, Content Federation

How autonomous do your data sources need to be?

At scale, brands have dedicated individuals who specialize in enriching content in specific areas such as PIM, CRM, search, or DAM. These individuals should have the autonomy to work without being restricted by proprietary middleware or opinionated front-end implementations. The greater the need for autonomy, the less suitable a content hub, Content Lake, or DXO would be. Code stitching or proprietary middleware, in particular, should be avoided. Instead, consider using content federation. If you are dealing with big data or reporting, please continue reading below.

Federation type to choose: Content Federation

If you do not require autonomous sources or lack the resources to have specialized individuals enrich content, consider implementing a content hub. However, remember that your data may become outdated, so it is essential to establish a method for regularly refreshing the data.

Federation type to choose: Content Hub

Are you dealing with big data?

Cleaning up and mapping big data into specific models for channel presentation can be challenging. In such cases, a content lake is often the most suitable option. A content lake stores raw, unstructured, and structured data, which can be used to train machine learning models or generate reports. Additionally, a content lake can be beneficial if you have a highly skilled developer team that does not require a CMS.

Federation type to choose: Content Lake

Are you a SaaS with multiple tech silos?

If you are working with multiple tech teams and dealing with a lot of data from various sources but don't need a CMS for a marketing website, you can use GraphQL to organize all the data into a graph. This allows different teams to query the data without needing individual data contracts. GraphQL Federation is the perfect choice in this scenario. It provides a highly structured and precise approach, offering flexible APIs through GraphQL.

Federation type to choose: GraphQL Federation

Conclusion

As always, the answer is: "It depends". Ensure you have the right technical stakeholders on your team to analyze your brand's digital needs. Once you identify the issues, contact specialists at agencies or the enthusiastic team at Hygraph for assistance. At Hygraph, we envision the future of content as one big graph. Brand domain content and origin sources, where data is enriched, will contribute to this graph. Implementations on various channels such as websites, apps, or sales systems can query this graph and retrieve exactly what they need. Content Federation with an attached CMS is suitable for many use cases.

+ \ No newline at end of file diff --git a/writing/why-i-didnt-run-the-2016-marathon/_payload.json b/writing/why-i-didnt-run-the-2016-marathon/_payload.json deleted file mode 100644 index 92e6d328..00000000 --- a/writing/why-i-didnt-run-the-2016-marathon/_payload.json +++ /dev/null @@ -1 +0,0 @@ -[{"data":1,"prerenderedAt":1470},["Reactive",2],{"content-query-kQjAWqUhzx":3,"content-navigation-8C37fagqQL":354},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"id":10,"slug":11,"date":12,"image":13,"canonical_url":14,"tags":15,"collection_id":19,"body":20,"_type":349,"_id":350,"_source":351,"_file":352,"_extension":353},"/writing/why-i-didnt-run-the-2016-marathon","writing",false,"","Why I didn't run the 2016 marathon","After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on...",1406190,"why-i-didnt-run-the-2016-marathon","2023-03-18T22:52:37Z","https://media.dev.to/cdn-cgi/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafpsw3jbsie5bf7w8wp9.jpg","https://dev.to/timbenniks/why-i-didnt-run-the-2016-marathon-57e3",[16,17,18],"personal","fitness","running",22299,{"type":21,"children":22,"toc":340},"root",[23,31,38,43,49,74,83,88,93,98,111,116,130,135,141,146,151,156,178,183,188,193,207,230,235,240,252,258,263,277,282,289,295],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28],{"type":29,"value":30},"text","After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on October 16th 2016. I’ve learnt a life lesson about the balance between the load and capacity of the body while training for a marathon.",{"type":24,"tag":32,"props":33,"children":35},"h3",{"id":34},"tldr",[36],{"type":29,"value":37},"tl;dr",{"type":24,"tag":25,"props":39,"children":40},{},[41],{"type":29,"value":42},"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won't be able to cope with the added stress.",{"type":24,"tag":32,"props":44,"children":46},{"id":45},"the-load-capacity-model",[47],{"type":29,"value":48},"The Load-Capacity Model",{"type":24,"tag":25,"props":50,"children":51},{},[52,54,63,65,72],{"type":29,"value":53},"The Load-Capacity model was created in 1990 by A.T.M Bernards and L.H.A Hagenaars, two Dutch physiotherapists. The MDBB (Dutch abbreviation) model is meant to be a conceptual model for physiotherapy. ",{"type":24,"tag":55,"props":56,"children":60},"a",{"href":57,"rel":58},"https://www.researchgate.net/publication/224983108_Het_meerdimensionale_belasting-belastbaarheidsmodel_een_conceptueel_model_voor_de_fysiotherapie",[59],"nofollow",[61],{"type":29,"value":62},"This is one of their publications from 1999",{"type":29,"value":64},". They created this model to add the ",{"type":24,"tag":55,"props":66,"children":69},{"href":67,"rel":68},"https://en.wikipedia.org/wiki/Biopsychosocial_model",[59],[70],{"type":29,"value":71},"biopsychosocial",{"type":29,"value":73}," element to physiotherapy treatments.",{"type":24,"tag":25,"props":75,"children":76},{},[77],{"type":24,"tag":78,"props":79,"children":80},"em",{},[81],{"type":29,"value":82},"I just want to caveat that even though there is some merit to the claims made in this post, the Load-Capacity model is generally taught at physiotherapy school, most of the conclusions I ended up with are anecdotal. I’ll be using the Load-Capacity model specifically for my personal experience so my writing will be somewhat one-sided.",{"type":24,"tag":25,"props":84,"children":85},{},[86],{"type":29,"value":87},"On the physical side, the Load-Capacity model is a key concept in preventing and managing running injuries. It is all about understanding the balance between training load and the body’s capacity to handle that load. In a nutshell it’s a case of working within your limits and not pushing the training beyond what the body can cope with.",{"type":24,"tag":25,"props":89,"children":90},{},[91],{"type":29,"value":92},"Then there is the mental side. External stressors will also impact the balance between capacity and load. If you keep the load the same but your capacity goes down due to grief or work stress, the body will be pushed over the edge of what the it would normally tolerate.",{"type":24,"tag":25,"props":94,"children":95},{},[96],{"type":29,"value":97},"The load-capacity balance is different for everybody and could also change over time. As it did for me. I upped the load in a steady way by training for the marathon but my body’s capacity went down due to external stressors which I wasn’t able to identify. For one, I have a thick skull but I also wasn’t used to the fact that my body would tell me to stop. I could do whatever I wanted to it without stretching or any kind of warm up. If I twisted my ankle the pain would go away in a day.",{"type":24,"tag":25,"props":99,"children":100},{},[101],{"type":24,"tag":102,"props":103,"children":110},"img",{"alt":104,"loading":105,"provider":106,"sizes":107,"src":108,"width":109},"Running","lazy","cloudinary","sm:100vw","https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtcthucv7qthp2sra697.jpg",1280,[],{"type":24,"tag":25,"props":112,"children":113},{},[114],{"type":29,"value":115},"This year I was always stiff and I had to concentrate way harder to stick to proper form. Suddenly I got little pains like plantar fasciitis and an inflamed Achilles tendon. Even after stretching out my hips and calves it felt like I was running on stilts. The pains and stiffness started two months into training. Four months in, I started to get extremely tired, I developed a rash and I my IBS started to play up way more often. I also got sick after doing longer runs at marathon pace.",{"type":24,"tag":25,"props":117,"children":118},{},[119,121,128],{"type":29,"value":120},"The things I just described start to happen when the load is surpassing the capacity of the body for a length of time. I slowly got ",{"type":24,"tag":55,"props":122,"children":125},{"href":123,"rel":124},"https://en.wikipedia.org/wiki/Overtraining",[59],[126],{"type":29,"value":127},"overtrained",{"type":29,"value":129},". As my body could normally handle anything I threw at it, I was a bit oblivious towards the symptoms of over training.",{"type":24,"tag":25,"props":131,"children":132},{},[133],{"type":29,"value":134},"My sweet wife is a physiotherapist and saw me coming from a mile away. Classic. I needed my wife and many of my peers to tell me that I was over trained. The cause was a combination of training and external circumstances.",{"type":24,"tag":32,"props":136,"children":138},{"id":137},"this-is-what-happened",[139],{"type":29,"value":140},"This is what happened",{"type":24,"tag":25,"props":142,"children":143},{},[144],{"type":29,"value":145},"I started off well and I was determined to make less mistakes in the preparation this time around. I had plans to have my diet in check from day one. I would go to the gym as well. Next to this I kept a record of everything. Training sessions with Strava, sleep analysis and heart rate with Sleepcycle and food and weight with MyFitnessPal.",{"type":24,"tag":25,"props":147,"children":148},{},[149],{"type":29,"value":150},"This year I decided to go for a training plan which let me train five times per week. Of these five sessions only three where running. The other two were either biking or a gym session. Running only three times per week meant that I could be flexible with the days as I sometimes work nights or have social events to attend. The plan had me running more miles each run but at a slow pace.",{"type":24,"tag":25,"props":152,"children":153},{},[154],{"type":29,"value":155},"The first couple of months everything went well. I actually beat my personal bests on the 5km and 10km quite easily.",{"type":24,"tag":25,"props":157,"children":158},{},[159,161,168,170,176],{"type":29,"value":160},"Check out ",{"type":24,"tag":55,"props":162,"children":165},{"href":163,"rel":164},"https://www.strava.com/activities/628465080",[59],[166],{"type":29,"value":167},"this",{"type":29,"value":169}," Strava run and ",{"type":24,"tag":55,"props":171,"children":174},{"href":172,"rel":173},"https://www.strava.com/activities/655258214",[59],[175],{"type":29,"value":167},{"type":29,"value":177}," one.",{"type":24,"tag":25,"props":179,"children":180},{},[181],{"type":29,"value":182},"And I also found back my love for cycling. I bought the cheapest bike with the best reviews. It has a Microshift group set which isn’t as precise but works very well if maintained properly.",{"type":24,"tag":25,"props":184,"children":185},{},[186],{"type":29,"value":187},"Two and a half months in, things started to feel a bit painful, especially after running. I realise now that the stress I experienced outside of training impacted my capacity to handle the increased training load.",{"type":24,"tag":25,"props":189,"children":190},{},[191],{"type":29,"value":192},"A couple of things happened at the same time. We had a cancer scare in the family for which I went to Amsterdam for a while. Things are better now but I’ve had a lot to worry about. Right after I came back to Paris my wife miscarried. We’ve been trying to have a baby for a long time and each time it fails it’s like getting hit in the face.",{"type":24,"tag":25,"props":194,"children":195},{},[196,198,205],{"type":29,"value":197},"On top of these two things I found out that I have ",{"type":24,"tag":55,"props":199,"children":202},{"href":200,"rel":201},"https://en.wikipedia.org/wiki/Irritable_bowel_syndrome",[59],[203],{"type":29,"value":204},"IBS",{"type":29,"value":206},". I’ve probably had it for a long time but it started to flare up around March this year. I’ve been trying to find the right diet and it’s not easy.",{"type":24,"tag":25,"props":208,"children":209},{},[210,212,219,221,228],{"type":29,"value":211},"It seems that the absorption of nutrients isn’t working well due to the inflammation in my gut. I had to try to eat less foods that contains ",{"type":24,"tag":55,"props":213,"children":216},{"href":214,"rel":215},"https://en.wikipedia.org/wiki/FODMAP",[59],[217],{"type":29,"value":218},"FODMAPs",{"type":29,"value":220}," so that my insides would relax a bit. Having a constant belly ache and bad sleep as a result does not help the capacity of the body to deal with an increased training load. I made a little ",{"type":24,"tag":55,"props":222,"children":225},{"href":223,"rel":224},"https://timbenniks.nl/fodmap",[59],[226],{"type":29,"value":227},"tool",{"type":29,"value":229}," to see which foods are allowed on the low FODMAP diet.",{"type":24,"tag":25,"props":231,"children":232},{},[233],{"type":29,"value":234},"Funnily enough I felt quite good during runs. Well, except when it was hot. I hate warm humid weather and have I trouble training in it. It was usually after the runs that I would suddenly feel the pain my body was in. Willpower is an amazing thing. I think I could actually run the marathon on sheer brain juice tomorrow. It would do horrible things to my body though.",{"type":24,"tag":25,"props":236,"children":237},{},[238],{"type":29,"value":239},"The run below seems to have gone very well but I got sick after and couldn’t train for a week. My whole body ached and I slept all weekend.",{"type":24,"tag":25,"props":241,"children":242},{},[243,244,250],{"type":29,"value":160},{"type":24,"tag":55,"props":245,"children":248},{"href":246,"rel":247},"https://www.strava.com/activities/683549355/",[59],[249],{"type":29,"value":167},{"type":29,"value":251}," Strava run.",{"type":24,"tag":32,"props":253,"children":255},{"id":254},"what-i-have-learnt",[256],{"type":29,"value":257},"What I have learnt",{"type":24,"tag":25,"props":259,"children":260},{},[261],{"type":29,"value":262},"No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won’t be able to cope with the added stress.",{"type":24,"tag":25,"props":264,"children":265},{},[266,268,275],{"type":29,"value":267},"It took 20 years to start enjoying sports. I lost a ",{"type":24,"tag":55,"props":269,"children":272},{"href":270,"rel":271},"https://timbenniks.dev/articles/my-fitness-story",[59],[273],{"type":29,"value":274},"lot of weight",{"type":29,"value":276}," and got hooked. I could throw anything at my body and it would bounce back. Now it doesn’t and I have to accept that. This summer of training thought me to be humble and to listen both my peers (my wife mainly, as she is always right) and my body.",{"type":24,"tag":25,"props":278,"children":279},{},[280],{"type":29,"value":281},"Not running this race was a hard decision for me as I always stick to the challenges I set for myself. I’ve decided that feeling good is more important than running a marathon. I’ve done it once before and have proven that I can do it. My body can deal with running but it’s not comfortable doing it. I have my build against me. I’m going to focus on being flexible and strong. I’ll be running shorter distances and I’ll be cycling way more. Also, I’m going back to the gym to do what my body was build to do. Lift iron. I might even try yoga…",{"type":24,"tag":25,"props":283,"children":284},{},[285],{"type":24,"tag":102,"props":286,"children":288},{"alt":104,"loading":105,"provider":106,"sizes":107,"src":287,"width":109},"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt09jc5r7w862n5smsas.jpg",[],{"type":24,"tag":32,"props":290,"children":292},{"id":291},"some-numbers",[293],{"type":29,"value":294},"Some Numbers",{"type":24,"tag":296,"props":297,"children":298},"ul",{},[299,305,310,315,320,325,330,335],{"type":24,"tag":300,"props":301,"children":302},"li",{},[303],{"type":29,"value":304},"I ran 483.4km over 51 runs with an average pace of 05:40",{"type":24,"tag":300,"props":306,"children":307},{},[308],{"type":29,"value":309},"My average distance was 9.5km per run",{"type":24,"tag":300,"props":311,"children":312},{},[313],{"type":29,"value":314},"I went from 96.1 to 92.9 kilos",{"type":24,"tag":300,"props":316,"children":317},{},[318],{"type":29,"value":319},"I slept 8h 20m a night on average",{"type":24,"tag":300,"props":321,"children":322},{},[323],{"type":29,"value":324},"I ate 2258kcal a day on average",{"type":24,"tag":300,"props":326,"children":327},{},[328],{"type":29,"value":329},"I took 9565 steps a day on average",{"type":24,"tag":300,"props":331,"children":332},{},[333],{"type":29,"value":334},"I had an average resting HR of 63.5bpm",{"type":24,"tag":300,"props":336,"children":337},{},[338],{"type":29,"value":339},"My average food macro balance was 62.2% carbs, 16,2% fat, 21,5% protein.",{"title":7,"searchDepth":341,"depth":341,"links":342},2,[343,345,346,347,348],{"id":34,"depth":344,"text":37},3,{"id":45,"depth":344,"text":48},{"id":137,"depth":344,"text":140},{"id":254,"depth":344,"text":257},{"id":291,"depth":344,"text":294},"markdown","content:4.writing:why-i-didnt-run-the-2016-marathon.md","content","4.writing/why-i-didnt-run-the-2016-marathon.md","md",[355,358,1150,1225,1461,1464,1467],{"title":356,"_path":357},"About","/about",{"title":359,"_path":360,"children":361},"videos","/videos",[362,381,400,446,447,499,602,625,647,975],{"title":363,"_path":364,"children":365},"Alive And Kicking","/videos/alive-and-kicking",[366,369,372,375,378],{"title":367,"_path":368},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":370,"_path":371},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":373,"_path":374},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":376,"_path":377},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":379,"_path":380},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":382,"_path":383,"children":384},"Headless Creator","/videos/headless-creator",[385,388,391,394,397],{"title":386,"_path":387},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":389,"_path":390},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":392,"_path":393},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":395,"_path":396},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":398,"_path":399},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":401,"_path":402,"children":403},"Hygraph","/videos/hygraph",[404,407,410,413,416,419,422,425,428,431,434,437,440,443],{"title":405,"_path":406},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/000-m8qftvizsmw",{"title":408,"_path":409},"The simplest way to connect Hygraph to Astro","/videos/hygraph/001-aahu9x5wajy",{"title":411,"_path":412},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/002-fksw0bfbtdo",{"title":414,"_path":415},"How to connect Commercetools and Hygraph","/videos/hygraph/003-x8tb3li6dg0",{"title":417,"_path":418},"How to add a remote REST source to Hygraph","/videos/hygraph/004-zredqavtow4",{"title":420,"_path":421},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/005-aydykxckkfe",{"title":423,"_path":424},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/006-axq-jo8hmzq",{"title":426,"_path":427},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/007-e9jxm4h4a48",{"title":429,"_path":430},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/008-hs1imxycyqg",{"title":432,"_path":433},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/009-snhzgplvm8o",{"title":435,"_path":436},"Set up headless CMS localization in 6 mins","/videos/hygraph/010-8_ttkblpdpm",{"title":438,"_path":439},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/011-keqn1rt8fwq",{"title":441,"_path":442},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/012-nphsqsol3xc",{"title":444,"_path":445},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/013-exzp3okqtxk",{"title":359,"_path":360},{"title":448,"_path":449,"children":450},"Live Hygraph","/videos/live-hygraph",[451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496],{"title":452,"_path":453},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/000-eydstedp-v4",{"title":455,"_path":456},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/001-_iah2t5g02o",{"title":458,"_path":459},"Combining WordPress with Headless CMS","/videos/live-hygraph/002-fy_w2yousbo",{"title":461,"_path":462},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/003-jgx1dytflvq",{"title":464,"_path":465},"Customizing Hygraph data with external services","/videos/live-hygraph/004-ombpixxx-3e",{"title":467,"_path":468},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/005-ht-scjkem9q",{"title":470,"_path":471},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/006-qegf6rerifw",{"title":473,"_path":474},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/007-etie3zygone",{"title":476,"_path":477},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/008-phcxh2m7ozm",{"title":479,"_path":480},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/009-pzc527rz7es",{"title":482,"_path":483},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/010-t00uxbjsdum",{"title":485,"_path":486},"Pagination with Astro and Hygraph","/videos/live-hygraph/011-o_dvlrwpebk",{"title":488,"_path":489},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/012-vrrzgly1n5c",{"title":491,"_path":492},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/013-m5xamvlqh1g",{"title":494,"_path":495},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/014-jc09s5zmw_k",{"title":497,"_path":498},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/015-aietljmxmxm",{"title":500,"_path":501,"children":502},"Live Uniform","/videos/live-uniform",[503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,578,581,584,587,590,593,596,599],{"title":504,"_path":505},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":507,"_path":508},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":510,"_path":511},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":513,"_path":514},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":516,"_path":517},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":519,"_path":520},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":522,"_path":523},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":525,"_path":526},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":528,"_path":529},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":531,"_path":532},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":534,"_path":535},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":537,"_path":538},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":540,"_path":541},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":543,"_path":544},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":546,"_path":547},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":549,"_path":550},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":552,"_path":553},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":555,"_path":556},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":558,"_path":559},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":561,"_path":562},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":564,"_path":565},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":567,"_path":568},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":570,"_path":571},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":573,"_path":574},"Unpack the Stack: End to end testing with playright w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":576,"_path":577},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":579,"_path":580},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":582,"_path":583},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":585,"_path":586},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":588,"_path":589},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":591,"_path":592},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":594,"_path":595},"Composable CMS evaluation: Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":597,"_path":598},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":600,"_path":601},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":603,"_path":604,"children":605},"Misc Streams","/videos/misc-streams",[606,609,612,615,617,619,622],{"title":607,"_path":608},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/000-1tjmq5b0fmc",{"title":610,"_path":611},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/001-tvpdzpl2pvm",{"title":613,"_path":614},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/002-rjjyhwso1gg",{"title":597,"_path":616},"/videos/misc-streams/003-jvgiaotcerq",{"title":588,"_path":618},"/videos/misc-streams/004-ekut1koa2n8",{"title":620,"_path":621},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/005-d8ahncxgryg",{"title":623,"_path":624},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/006-umfrj32jle0",{"title":626,"_path":627,"children":628},"Mp","/videos/mp",[629,632,635,638,641,644],{"title":630,"_path":631},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":633,"_path":634},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":636,"_path":637},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":639,"_path":640},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":642,"_path":643},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":645,"_path":646},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":648,"_path":649,"children":650},"Tim","/videos/tim",[651,653,656,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,703,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,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972],{"title":370,"_path":652},"/videos/tim/000-mvq-_s20ndk",{"title":654,"_path":655},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/001-vex0ktitib4",{"title":657,"_path":658},"How to do Developer Relations in 2024","/videos/tim/002-196iqp-lhlw",{"title":660,"_path":661},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/003-yutf3yvsdco",{"title":663,"_path":664},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/004-iip2anhietg",{"title":666,"_path":667},"How To Make The Best AI Avatar With Heygen","/videos/tim/005-_wrtdvv37y0",{"title":669,"_path":670},"How to tell if you're becoming a senior dev","/videos/tim/006-j7jsa49zqja",{"title":672,"_path":673},"Hygraph Content Federation FTW","/videos/tim/007-ed1tipzxzr8",{"title":675,"_path":676},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/008-3tbdmf1pwe",{"title":678,"_path":679},"The best Nuxt 3 GraphQL setup","/videos/tim/009-q282biqyj6a",{"title":681,"_path":682},"Browser Client Hints are awesome!","/videos/tim/010-h3rlwn27ga8",{"title":684,"_path":685},"This is Headless 2.0","/videos/tim/011-ergktbs0woe",{"title":687,"_path":688},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/012-zscc8-0-dis",{"title":690,"_path":691},"I cloned myself with AI to create more content","/videos/tim/013-zn2zxyvw4hy",{"title":693,"_path":694},"Vue.js Live London 2023 Vlog","/videos/tim/014-dyq17r5c9-s",{"title":696,"_path":697},"AI audio for content creators","/videos/tim/015-oq050_ytylk",{"title":699,"_path":700},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/016-rwrzovc5oc4",{"title":373,"_path":702},"/videos/tim/017-m0mrligs6i0",{"title":367,"_path":704},"/videos/tim/018-hhpitreyobi",{"title":706,"_path":707},"I fell back in love with Sitecore","/videos/tim/019-e64eyulaomk",{"title":709,"_path":710},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/020-xetyke98mp0",{"title":712,"_path":713},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/021-0xo0bnzquf4",{"title":715,"_path":716},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/022-cwkjy7raony",{"title":718,"_path":719},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/023-lsf2rhzsykg",{"title":721,"_path":722},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/024-mg0fevwnue0",{"title":724,"_path":725},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/025-npse6yqqzki",{"title":727,"_path":728},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/026-rh6hjo9xk-o",{"title":730,"_path":731},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/027-rth3oikjp2k",{"title":733,"_path":734},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/028-zad7s01lfic",{"title":736,"_path":737},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/029-5i1zqfu6xtw",{"title":739,"_path":740},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/030-d33ynlhvhxm",{"title":742,"_path":743},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/031-c1jduhsh1ae",{"title":745,"_path":746},"How I film videos in my new studio. A content creator's dream.","/videos/tim/032-8z1npig-ya",{"title":748,"_path":749},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/033-8wxdfixxktw",{"title":751,"_path":752},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/034-yzh1l740tno",{"title":754,"_path":755},"How to buy gear for content creation in 2022","/videos/tim/035-mdzkgc1pgbc",{"title":757,"_path":758},"I built my own YouTube studio 2022","/videos/tim/036-dli7uzzddx8",{"title":760,"_path":761},"Cable management for Nuxt 3","/videos/tim/037-ry60wvg0fzq",{"title":763,"_path":764},"My top 5 favourite Nuxt 3 features","/videos/tim/038-ek-hhozlfvg",{"title":766,"_path":767},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/039-kn5u4ahcs_0",{"title":769,"_path":770},"Make your website even faster with Astro!","/videos/tim/040-o8m4cs3o4ii",{"title":772,"_path":773},"Vlog: I'm building my own studio!","/videos/tim/041-xba15vr-kfy",{"title":775,"_path":776},"Nuxt vs Next: the battle of the Images","/videos/tim/042-lpk392g10ou",{"title":778,"_path":779},"The Ultimate Guide to Responsive Images","/videos/tim/043-uxjgt2_mf90",{"title":781,"_path":782},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/044-d0ra_m3jlsy",{"title":784,"_path":785},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/045-7jk6nyalhuc",{"title":787,"_path":788},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/046-su22r2w3wea",{"title":790,"_path":791},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/047-6ub_k4uvz20",{"title":793,"_path":794},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/048-ec7pvgy8xsq",{"title":796,"_path":797},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/049-lsxu_q-8rrc",{"title":799,"_path":800},"The Modern DXP: How JAMstack will change the world","/videos/tim/050-yezaod1sddg",{"title":802,"_path":803},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/051-dv5mlxbrti8",{"title":805,"_path":806},"I have a new job at a Silicon Valley Startup!","/videos/tim/052-hcthe5pwhvm",{"title":808,"_path":809},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/053-zd7qkgd8ix8",{"title":811,"_path":812},"2020 The best year of my career","/videos/tim/054-bhffzm6n3tw",{"title":814,"_path":815},"How to build your online persona","/videos/tim/055-s1od1u-itka",{"title":817,"_path":818},"How to record yourself guide","/videos/tim/056-rm_bameopiy",{"title":820,"_path":821},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/057-db5jjbwg-zm",{"title":823,"_path":824},"How to reduce bundle sizes in Nuxt","/videos/tim/058-iykkwy8k2d4",{"title":826,"_path":827},"Interview with Evan You","/videos/tim/059-nr_aohhgl3s",{"title":829,"_path":830},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/060-oxjhew-10aq",{"title":832,"_path":833},"Webpack 5 module federation and more","/videos/tim/061-zxz9mojtwh8",{"title":835,"_path":836},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/062-xiz2p0zlbd8",{"title":838,"_path":839},"Magical combination to build a modern website","/videos/tim/063-v5aobiirud4",{"title":841,"_path":842},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/064-jtghl7ggoas",{"title":844,"_path":845},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/065-96xypbh-hyo",{"title":847,"_path":848},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/066-0vdfegtjdcg",{"title":850,"_path":851},"Tim's Vlog: How to be a successful leader","/videos/tim/067-mcyeoin1s48",{"title":853,"_path":854},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/068-gojckw5ih7e",{"title":856,"_path":857},"A developers guide to low carbon websites","/videos/tim/069-ewlegish6dw",{"title":859,"_path":860},"Tim's vlog: Career advice for developers","/videos/tim/070-auzzgmyn0z4",{"title":862,"_path":863},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/071-zuht0g3zpyw",{"title":865,"_path":866},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/072-madbxcbsvqo",{"title":868,"_path":869},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/073-uufbfcipaly",{"title":871,"_path":872},"Webpack tutorial: Create a config from scratch","/videos/tim/074-fyuvqruzevy",{"title":874,"_path":875},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/075-tlbstgzcyyy",{"title":877,"_path":878},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/076-brmxytpulm4",{"title":880,"_path":881},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/077-ibkgryfpuds",{"title":883,"_path":884},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/078-2mfsb5ulhks",{"title":886,"_path":887},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/079-d0jk7hyu1ai",{"title":889,"_path":890},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/080-v50mhzzffaa",{"title":892,"_path":893},"My audio setup 2020","/videos/tim/081-pu8f59x14-y",{"title":895,"_path":896},"Tim Tries: Azure Static Web Apps","/videos/tim/082-a54ifas8rts",{"title":898,"_path":899},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/083-ggaoxqtc7ke",{"title":901,"_path":902},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/084-bpjjxxqycdi",{"title":904,"_path":905},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/085-zpq_gqmit5y",{"title":907,"_path":908},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/086-5jaypm6gx1o",{"title":910,"_path":911},"An Interview with Jen Looper from Microsoft","/videos/tim/087-cf5_pit-ai",{"title":913,"_path":914},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/088-tqr2eo7tivc",{"title":916,"_path":917},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/089-aw4nl6hgjb0",{"title":919,"_path":920},"Quarantine licks #2 - Folksy Tunes","/videos/tim/090-gxwrzna4udq",{"title":922,"_path":923},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/091-xit7qtmcmik",{"title":925,"_path":926},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/092-bebr8ev2no8",{"title":928,"_path":929},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/093-wlqlclwjorc",{"title":931,"_path":932},"An interview with Tim Benniks from Valtech","/videos/tim/094-zzrqozpc068",{"title":934,"_path":935},"HTTP/2 performance: you still need a bundler!","/videos/tim/095-f5f7n2kc7hq",{"title":937,"_path":938},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/096-nw0y6dkx1ku",{"title":940,"_path":941},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/097-vqjp5qfiolg",{"title":943,"_path":944},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/098-ltm7wz0q564",{"title":946,"_path":947},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/099-u5s4dqqlt1o",{"title":949,"_path":950},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/100-boby5h-r1hc",{"title":952,"_path":953},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/101-pwqvqnnopiy",{"title":955,"_path":956},"An interview with Eduardo from the Vue.js core team","/videos/tim/102-lkiomruiaae",{"title":958,"_path":959},"Webpack basics and core concepts","/videos/tim/103-azqrjdqa_d8",{"title":961,"_path":962},"5 tips to become a better web developer.","/videos/tim/104-wexof1tfi04",{"title":964,"_path":965},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/105-h7qmarrblw8",{"title":967,"_path":968},"Code faster and make less mistakes","/videos/tim/106-liek4kwnsbq",{"title":970,"_path":971},"An Introduction to my YouTube Channel","/videos/tim/107-shtbmwkzwpi",{"title":973,"_path":974},"How to make your webcam look great!","/videos/tim/108-vcf1xfoegwm",{"title":976,"_path":977,"children":978},"Uniform","/videos/uniform",[979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030,1033,1036,1039,1042,1045,1048,1051,1054,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1141,1144,1147],{"title":980,"_path":981},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":983,"_path":984},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":986,"_path":987},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":989,"_path":990},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":992,"_path":993},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":995,"_path":996},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":998,"_path":999},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":1001,"_path":1002},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":1004,"_path":1005},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":1007,"_path":1008},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":1010,"_path":1011},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":1013,"_path":1014},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":1016,"_path":1017},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":1019,"_path":1020},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":1022,"_path":1023},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":1025,"_path":1026},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":1028,"_path":1029},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":1031,"_path":1032},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":1034,"_path":1035},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":1037,"_path":1038},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":1040,"_path":1041},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":1043,"_path":1044},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":1046,"_path":1047},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":1049,"_path":1050},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":1052,"_path":1053},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":1055,"_path":1056},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":1058,"_path":1059},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":1061,"_path":1062},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":1064,"_path":1065},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":1067,"_path":1068},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":1070,"_path":1071},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":1073,"_path":1074},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":1076,"_path":1077},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":1079,"_path":1080},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":1082,"_path":1083},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":1085,"_path":1086},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":1088,"_path":1089},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":1091,"_path":1092},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":1094,"_path":1095},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":1097,"_path":1098},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":1100,"_path":1101},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":1103,"_path":1104},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":1106,"_path":1107},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":1109,"_path":1110},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":1112,"_path":1113},"Kentico Kontent mystery package unboxing","/videos/uniform/044-fngyhaaogqc",{"title":1115,"_path":1116},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/045-itk9sgw0n7u",{"title":1118,"_path":1119},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/046-hdupegqtjrm",{"title":1121,"_path":1122},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/047-6jkekhxmmaq",{"title":1124,"_path":1125},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/048-h3y_jnbtrom",{"title":1127,"_path":1128},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/049-xr8eo9g6bps",{"title":1130,"_path":1131},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/050-4eepxpo9iqc",{"title":1133,"_path":1134},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/051-fdounapttfy",{"title":1136,"_path":1137},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/052-gsey28saqac",{"title":1139,"_path":1140},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/053-r2ygbt1to4s",{"title":1142,"_path":1143},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/054-9m73vicako4",{"title":1145,"_path":1146},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/055-d41ch2lnxtq",{"title":1148,"_path":1149},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/056-eohudn8apm4",{"title":1151,"_path":1152,"children":1153},"Writing","/writing",[1154,1157,1160,1163,1166,1169,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224],{"title":1155,"_path":1156},"Digital experience platforms: the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1158,"_path":1159},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1161,"_path":1162},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1164,"_path":1165},"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":1167,"_path":1168},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1151,"_path":1152},{"title":1171,"_path":1172},"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":1174,"_path":1175},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1177,"_path":1178},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1180,"_path":1181},"My Fitness Story","/writing/my-fitness-story",{"title":1183,"_path":1184},"New job alert!","/writing/new-job-alert",{"title":1186,"_path":1187},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1189,"_path":1190},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1192,"_path":1193},"The future of headless CMS: Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1195,"_path":1196},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1198,"_path":1199},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1201,"_path":1202},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1204,"_path":1205},"The MACH monolith","/writing/the-mach-monolith",{"title":1207,"_path":1208},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1210,"_path":1211},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1213,"_path":1214},"This is headless 2.0","/writing/this-is-headless-20",{"title":1216,"_path":1217},"Uniform DXCP: the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1219,"_path":1220},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1222,"_path":1223},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":8,"_path":4},{"title":1226,"_path":1227,"children":1228},"Speaking","/speaking",[1229,1232,1235,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283,1286,1289,1292,1295,1298,1301,1304,1307,1310,1313,1316,1319,1322,1325,1328,1331,1334,1337,1340,1343,1346,1349,1352,1355,1358,1361,1364,1367,1370,1373,1376,1379,1382,1385,1388,1391,1394,1397,1400,1403,1406,1409,1412,1415,1418,1421,1424,1427,1430,1433,1436,1439,1442,1445,1448,1451,1454,1457,1460],{"title":1230,"_path":1231},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1233,"_path":1234},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1236,"_path":1237},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1239,"_path":1240},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1242,"_path":1243},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1245,"_path":1246},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1248,"_path":1249},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1251,"_path":1252},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1254,"_path":1255},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1257,"_path":1258},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1260,"_path":1261},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1263,"_path":1264},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1266,"_path":1267},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1269,"_path":1270},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1272,"_path":1273},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1275,"_path":1276},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1278,"_path":1279},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1281,"_path":1282},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1284,"_path":1285},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1287,"_path":1288},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1290,"_path":1291},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1293,"_path":1294},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1296,"_path":1297},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1299,"_path":1300},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1302,"_path":1303},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1305,"_path":1306},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1308,"_path":1309},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1311,"_path":1312},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1314,"_path":1315},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1317,"_path":1318},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1320,"_path":1321},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1323,"_path":1324},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1326,"_path":1327},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1329,"_path":1330},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1332,"_path":1333},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1335,"_path":1336},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1338,"_path":1339},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1341,"_path":1342},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1344,"_path":1345},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1347,"_path":1348},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1350,"_path":1351},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1353,"_path":1354},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1356,"_path":1357},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1359,"_path":1360},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1362,"_path":1363},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1365,"_path":1366},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1368,"_path":1369},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1371,"_path":1372},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1374,"_path":1375},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1377,"_path":1378},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1380,"_path":1381},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1383,"_path":1384},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1386,"_path":1387},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1389,"_path":1390},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1392,"_path":1393},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1395,"_path":1396},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1398,"_path":1399},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1401,"_path":1402},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1404,"_path":1405},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1407,"_path":1408},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1410,"_path":1411},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1413,"_path":1414},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1416,"_path":1417},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1419,"_path":1420},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1422,"_path":1423},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1425,"_path":1426},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1428,"_path":1429},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1431,"_path":1432},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1434,"_path":1435},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1437,"_path":1438},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1440,"_path":1441},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1443,"_path":1444},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1446,"_path":1447},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1449,"_path":1450},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1452,"_path":1453},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1455,"_path":1456},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1458,"_path":1459},"2024 09 27 Clqdq87gltsup0bvztwqw2f1v","/speaking/2024-09-27-clqdq87gltsup0bvztwqw2f1v",{"title":1226,"_path":1227},{"title":1462,"_path":1463},"live streams","/livestreams",{"title":1465,"_path":1466},"press kit","/presskit",{"title":1468,"_path":1469},"alive and kicking","/alive-and-kicking",1718484379595] \ No newline at end of file diff --git a/writing/why-i-didnt-run-the-2016-marathon/index.html b/writing/why-i-didnt-run-the-2016-marathon/index.html deleted file mode 100644 index 72a69bf6..00000000 --- a/writing/why-i-didnt-run-the-2016-marathon/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - -Why I didn't run the 2016 marathon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Why I didn't run the 2016 marathon

Mar 18, 2023 at https://dev.to/timbenniks/why-i-didnt-run-the-2016-marathon-57e3

After four and a half months of full on training I’ve decided not to run the Amsterdam marathon on October 16th 2016. I’ve learnt a life lesson about the balance between the load and capacity of the body while training for a marathon.

tl;dr

No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won't be able to cope with the added stress.

The Load-Capacity Model

The Load-Capacity model was created in 1990 by A.T.M Bernards and L.H.A Hagenaars, two Dutch physiotherapists. The MDBB (Dutch abbreviation) model is meant to be a conceptual model for physiotherapy. This is one of their publications from 1999. They created this model to add the biopsychosocial element to physiotherapy treatments.

I just want to caveat that even though there is some merit to the claims made in this post, the Load-Capacity model is generally taught at physiotherapy school, most of the conclusions I ended up with are anecdotal. I’ll be using the Load-Capacity model specifically for my personal experience so my writing will be somewhat one-sided.

On the physical side, the Load-Capacity model is a key concept in preventing and managing running injuries. It is all about understanding the balance between training load and the body’s capacity to handle that load. In a nutshell it’s a case of working within your limits and not pushing the training beyond what the body can cope with.

Then there is the mental side. External stressors will also impact the balance between capacity and load. If you keep the load the same but your capacity goes down due to grief or work stress, the body will be pushed over the edge of what the it would normally tolerate.

The load-capacity balance is different for everybody and could also change over time. As it did for me. I upped the load in a steady way by training for the marathon but my body’s capacity went down due to external stressors which I wasn’t able to identify. For one, I have a thick skull but I also wasn’t used to the fact that my body would tell me to stop. I could do whatever I wanted to it without stretching or any kind of warm up. If I twisted my ankle the pain would go away in a day.

Running

This year I was always stiff and I had to concentrate way harder to stick to proper form. Suddenly I got little pains like plantar fasciitis and an inflamed Achilles tendon. Even after stretching out my hips and calves it felt like I was running on stilts. The pains and stiffness started two months into training. Four months in, I started to get extremely tired, I developed a rash and I my IBS started to play up way more often. I also got sick after doing longer runs at marathon pace.

The things I just described start to happen when the load is surpassing the capacity of the body for a length of time. I slowly got overtrained. As my body could normally handle anything I threw at it, I was a bit oblivious towards the symptoms of over training.

My sweet wife is a physiotherapist and saw me coming from a mile away. Classic. I needed my wife and many of my peers to tell me that I was over trained. The cause was a combination of training and external circumstances.

This is what happened

I started off well and I was determined to make less mistakes in the preparation this time around. I had plans to have my diet in check from day one. I would go to the gym as well. Next to this I kept a record of everything. Training sessions with Strava, sleep analysis and heart rate with Sleepcycle and food and weight with MyFitnessPal.

This year I decided to go for a training plan which let me train five times per week. Of these five sessions only three where running. The other two were either biking or a gym session. Running only three times per week meant that I could be flexible with the days as I sometimes work nights or have social events to attend. The plan had me running more miles each run but at a slow pace.

The first couple of months everything went well. I actually beat my personal bests on the 5km and 10km quite easily.

Check out this Strava run and this one.

And I also found back my love for cycling. I bought the cheapest bike with the best reviews. It has a Microshift group set which isn’t as precise but works very well if maintained properly.

Two and a half months in, things started to feel a bit painful, especially after running. I realise now that the stress I experienced outside of training impacted my capacity to handle the increased training load.

A couple of things happened at the same time. We had a cancer scare in the family for which I went to Amsterdam for a while. Things are better now but I’ve had a lot to worry about. Right after I came back to Paris my wife miscarried. We’ve been trying to have a baby for a long time and each time it fails it’s like getting hit in the face.

On top of these two things I found out that I have IBS. I’ve probably had it for a long time but it started to flare up around March this year. I’ve been trying to find the right diet and it’s not easy.

It seems that the absorption of nutrients isn’t working well due to the inflammation in my gut. I had to try to eat less foods that contains FODMAPs so that my insides would relax a bit. Having a constant belly ache and bad sleep as a result does not help the capacity of the body to deal with an increased training load. I made a little tool to see which foods are allowed on the low FODMAP diet.

Funnily enough I felt quite good during runs. Well, except when it was hot. I hate warm humid weather and have I trouble training in it. It was usually after the runs that I would suddenly feel the pain my body was in. Willpower is an amazing thing. I think I could actually run the marathon on sheer brain juice tomorrow. It would do horrible things to my body though.

The run below seems to have gone very well but I got sick after and couldn’t train for a week. My whole body ached and I slept all weekend.

Check out this Strava run.

What I have learnt

No matter the dedication to training, a great food plan or sheer willpower, circumstances and external stressors will make your body say stop at a certain point. If the load is higher than the capacity for too long the body will get pushed too far and won’t be able to cope with the added stress.

It took 20 years to start enjoying sports. I lost a lot of weight and got hooked. I could throw anything at my body and it would bounce back. Now it doesn’t and I have to accept that. This summer of training thought me to be humble and to listen both my peers (my wife mainly, as she is always right) and my body.

Not running this race was a hard decision for me as I always stick to the challenges I set for myself. I’ve decided that feeling good is more important than running a marathon. I’ve done it once before and have proven that I can do it. My body can deal with running but it’s not comfortable doing it. I have my build against me. I’m going to focus on being flexible and strong. I’ll be running shorter distances and I’ll be cycling way more. Also, I’m going back to the gym to do what my body was build to do. Lift iron. I might even try yoga…

Running

Some Numbers

  • I ran 483.4km over 51 runs with an average pace of 05:40
  • My average distance was 9.5km per run
  • I went from 96.1 to 92.9 kilos
  • I slept 8h 20m a night on average
  • I ate 2258kcal a day on average
  • I took 9565 steps a day on average
  • I had an average resting HR of 63.5bpm
  • My average food macro balance was 62.2% carbs, 16,2% fat, 21,5% protein.
- \ No newline at end of file